summaryrefslogtreecommitdiff
path: root/scripts/test/wasm_opt.py
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2020-11-25 15:36:04 -0800
committerGitHub <noreply@github.com>2020-11-25 15:36:04 -0800
commit3c66ad3c7c602416d4cf674b3d7528d9acd6d51f (patch)
treeecf2308d4cbc2c995c66fcc9375b7bab341d6ca0 /scripts/test/wasm_opt.py
parent72c035e905b3695f2763fdeb21163003d8595887 (diff)
downloadbinaryen-3c66ad3c7c602416d4cf674b3d7528d9acd6d51f.tar.gz
binaryen-3c66ad3c7c602416d4cf674b3d7528d9acd6d51f.tar.bz2
binaryen-3c66ad3c7c602416d4cf674b3d7528d9acd6d51f.zip
[TypedFunctionReferences] Enable call_ref in fuzzer, and fix minor misc fuzz bugs (#3401)
* Count signatures in tuple locals. * Count nested signature types (confirming @aheejin was right, that was missing). * Inlining was using the wrong type. * OptimizeInstructions should return -1 for unhandled types, not error. * The fuzzer should check for ref types as well, not just typed function references, similar to what GC does. * The fuzzer now creates a function if it has no other option for creating a constant expression of a function type, then does a ref.func of that. * Handle unreachability in call_ref binary reading. * S-expression parsing fixes in more places, and add a tiny fuzzer for it. * Switch fuzzer test to just have the metrics, and not print all the fuzz output which changes a lot. Also fix noprint handling which only worked on binaries before. * Fix Properties::getLiteral() to use the specific function type properly, and make Literal's function constructor require that, to prevent future bugs. * Turn all input types into nullable types, for now.
Diffstat (limited to 'scripts/test/wasm_opt.py')
-rw-r--r--scripts/test/wasm_opt.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/scripts/test/wasm_opt.py b/scripts/test/wasm_opt.py
index d6441bd8d..ab708c636 100644
--- a/scripts/test/wasm_opt.py
+++ b/scripts/test/wasm_opt.py
@@ -57,7 +57,8 @@ def test_wasm_opt():
passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes')
if os.path.exists(passes_file):
passname = open(passes_file).read().strip()
- opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passname.split('_')]
+ passes = [p for p in passname.split('_') if p != 'noprint']
+ opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passes]
actual = ''
for module, asserts in support.split_wast(t):
assert len(asserts) == 0
@@ -171,7 +172,8 @@ def update_wasm_opt_tests():
passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes')
if os.path.exists(passes_file):
passname = open(passes_file).read().strip()
- opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passname.split('_')]
+ passes = [p for p in passname.split('_') if p != 'noprint']
+ opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passes]
actual = ''
for module, asserts in support.split_wast(t):
assert len(asserts) == 0