diff --git a/testsuite/tests/simplStg/should_compile/all.T b/testsuite/tests/simplStg/should_compile/all.T
index bea16a7915c786326838f6f01545e7d1e2808a56..4c89f382786384ee73f508468ca801d7056bd442 100644
--- a/testsuite/tests/simplStg/should_compile/all.T
+++ b/testsuite/tests/simplStg/should_compile/all.T
@@ -17,7 +17,10 @@ test('T22212', normal, compile, ['-O'])
 test('T22840', [extra_files(
         [ 'T22840A.hs'
         , 'T22840B.hs'
-        ]), when(not(have_dynamic()),skip)], multimod_compile, ['T22840', '-dynamic-too -dtag-inference-checks'])
+        ]),
+        # barf signature mismatch on wasm32 due to -dtag-inference-checks
+        when(arch('wasm32'), skip),
+        when(not(have_dynamic()),skip)], multimod_compile, ['T22840', '-dynamic-too -dtag-inference-checks'])
 test('T15226b', normal, compile, ['-O -ddump-stg-final -dsuppress-uniques -dno-typeable-binds'])
 test('inferTags003', [ only_ways(['optasm']),
                        grep_errmsg(r'(call stg\_ap\_0)', [1])