summaryrefslogtreecommitdiff
path: root/test/passes
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2023-04-12 13:30:27 -0700
committerGitHub <noreply@github.com>2023-04-12 20:30:27 +0000
commit958daad07e69ad37ab0575a08559f143e96b169b (patch)
tree098553dfba74562bebcfc1edfe3e22e729267cb8 /test/passes
parent1d1d60c6d9803edb2e3684c69c0298d7e5b2d8cb (diff)
downloadbinaryen-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.txt60
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