diff options
author | Alon Zakai <azakai@google.com> | 2023-04-12 13:30:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-12 20:30:27 +0000 |
commit | 958daad07e69ad37ab0575a08559f143e96b169b (patch) | |
tree | 098553dfba74562bebcfc1edfe3e22e729267cb8 /test/passes | |
parent | 1d1d60c6d9803edb2e3684c69c0298d7e5b2d8cb (diff) | |
download | binaryen-958daad07e69ad37ab0575a08559f143e96b169b.tar.gz binaryen-958daad07e69ad37ab0575a08559f143e96b169b.tar.bz2 binaryen-958daad07e69ad37ab0575a08559f143e96b169b.zip |
Fuzzer: When nested under makeTrivial(), avoid normal make() (#5657)
Without this, in certain complex operations we could end up calling a nested
make() operation that included nontrivial things, which could cause problems.
The specific problem I encountered was in fixAfterChanges() we tried to fix up
a duplicate label, but calling makeTrivial() emitted something very large that
happened to include a new block with a new label nested under a struct.get,
and that block's label conflicted with a label we'd already processed.
Diffstat (limited to 'test/passes')
-rw-r--r-- | test/passes/translate-to-fuzz_all-features_metrics_noprint.txt | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt index 6d2aba469..92b1fc834 100644 --- a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt +++ b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt @@ -1,43 +1,45 @@ total - [exports] : 4 - [funcs] : 11 + [exports] : 2 + [funcs] : 10 [globals] : 16 [imports] : 5 [memories] : 1 [memory-data] : 20 - [table-data] : 2 + [table-data] : 5 [tables] : 1 [tags] : 2 - [total] : 521 - [vars] : 21 - ArrayLen : 1 - ArrayNew : 6 - ArrayNewFixed : 1 - ArraySet : 1 + [total] : 500 + [vars] : 9 + ArrayNew : 5 + AtomicCmpxchg : 1 + AtomicFence : 2 + AtomicNotify : 2 Binary : 66 - Block : 58 - Break : 3 - Call : 7 - Const : 117 - Drop : 4 - GlobalGet : 32 - GlobalSet : 32 + Block : 49 + Break : 5 + Call : 4 + Const : 121 + Drop : 1 + GlobalGet : 25 + GlobalSet : 24 I31New : 2 - If : 19 + If : 16 Load : 17 - LocalGet : 41 - LocalSet : 23 - Loop : 6 - Nop : 3 - RefAs : 4 - RefEq : 1 + LocalGet : 40 + LocalSet : 28 + Loop : 3 + Nop : 9 + RefAs : 2 + RefEq : 2 RefFunc : 10 RefNull : 8 - Return : 1 - Select : 1 - StructNew : 5 + RefTest : 1 + Return : 2 + SIMDExtract : 2 + Select : 4 + StructNew : 8 StructSet : 1 TupleExtract : 1 - TupleMake : 9 - Unary : 22 - Unreachable : 19 + TupleMake : 8 + Unary : 16 + Unreachable : 15 |