Skip to content

Commit c894e27

Browse files
committed
[Parser] Match legacy parser block naming
To reduce the size of the test output diff when switching to the new text parser, update it to generate the same block names as the legacy parser.
1 parent 359d5aa commit c894e27

File tree

4 files changed

+55
-45
lines changed

4 files changed

+55
-45
lines changed

src/ir/names.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ inline void ensureNames(Function* func) {
4949
// name will begin there. This can be used to avoid trying the same 0,1,2,..
5050
// etc. names each time (which could lead to quadratic behavior in certain
5151
// cases).
52-
inline Name
53-
getValidName(Name root, std::function<bool(Name)> check, Index hint = 0) {
52+
inline Name getValidName(Name root,
53+
std::function<bool(Name)> check,
54+
Index hint = 0,
55+
std::string separator = "_") {
5456
if (check(root)) {
5557
return root;
5658
}
57-
auto prefixed = std::string(root.str) + '_';
59+
auto prefixed = std::string(root.str) + separator;
5860
Index num = hint;
5961
while (1) {
6062
auto name = prefixed + std::to_string(num);

src/wasm-ir-builder.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,9 +461,13 @@ class IRBuilder : public UnifiedExpressionVisitor<IRBuilder, Result<>> {
461461
std::unordered_map<Name, std::vector<Index>> labelDepths;
462462

463463
Name makeFresh(Name label) {
464-
return Names::getValidName(label, [&](Name candidate) {
465-
return labelDepths.insert({candidate, {}}).second;
466-
});
464+
return Names::getValidName(
465+
label,
466+
[&](Name candidate) {
467+
return labelDepths.insert({candidate, {}}).second;
468+
},
469+
0,
470+
"");
467471
}
468472

469473
void pushScope(ScopeCtx scope) {

src/wasm/wasm-ir-builder.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,11 @@ Result<Name> IRBuilder::getLabelName(Index label) {
10351035
auto& scopeLabel = (*scope)->label;
10361036
if (!scopeLabel) {
10371037
// The scope does not already have a name, so we need to create one.
1038-
scopeLabel = makeFresh("label");
1038+
if ((*scope)->getBlock()) {
1039+
scopeLabel = makeFresh("block");
1040+
} else {
1041+
scopeLabel = makeFresh("label");
1042+
}
10391043
}
10401044
(*scope)->labelUsed = true;
10411045
return scopeLabel;

test/lit/wat-kitchen-sink.wast

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2122,8 +2122,8 @@
21222122
;; CHECK-NEXT: (block $l
21232123
;; CHECK-NEXT: (try $__delegate__l
21242124
;; CHECK-NEXT: (do
2125-
;; CHECK-NEXT: (block $l_0
2126-
;; CHECK-NEXT: (block $l_1
2125+
;; CHECK-NEXT: (block $l0
2126+
;; CHECK-NEXT: (block $l1
21272127
;; CHECK-NEXT: (try
21282128
;; CHECK-NEXT: (do
21292129
;; CHECK-NEXT: (nop)
@@ -2149,13 +2149,13 @@
21492149
;; CHECK-NEXT: (block $l
21502150
;; CHECK-NEXT: (try $__delegate__l
21512151
;; CHECK-NEXT: (do
2152-
;; CHECK-NEXT: (block $l_0
2152+
;; CHECK-NEXT: (block $l0
21532153
;; CHECK-NEXT: (try
21542154
;; CHECK-NEXT: (do
21552155
;; CHECK-NEXT: (nop)
21562156
;; CHECK-NEXT: )
21572157
;; CHECK-NEXT: (catch $empty
2158-
;; CHECK-NEXT: (block $l_1
2158+
;; CHECK-NEXT: (block $l1
21592159
;; CHECK-NEXT: (try
21602160
;; CHECK-NEXT: (do
21612161
;; CHECK-NEXT: (nop)
@@ -2185,13 +2185,13 @@
21852185
;; CHECK-NEXT: (block $l
21862186
;; CHECK-NEXT: (try $__delegate__l
21872187
;; CHECK-NEXT: (do
2188-
;; CHECK-NEXT: (block $l_0
2188+
;; CHECK-NEXT: (block $l0
21892189
;; CHECK-NEXT: (try
21902190
;; CHECK-NEXT: (do
21912191
;; CHECK-NEXT: (nop)
21922192
;; CHECK-NEXT: )
21932193
;; CHECK-NEXT: (catch_all
2194-
;; CHECK-NEXT: (block $l_1
2194+
;; CHECK-NEXT: (block $l1
21952195
;; CHECK-NEXT: (try
21962196
;; CHECK-NEXT: (do
21972197
;; CHECK-NEXT: (nop)
@@ -2617,14 +2617,14 @@
26172617
;; CHECK-NEXT: (block $l
26182618
;; CHECK-NEXT: (br $l)
26192619
;; CHECK-NEXT: )
2620-
;; CHECK-NEXT: (loop $l_0
2621-
;; CHECK-NEXT: (br $l_0)
2620+
;; CHECK-NEXT: (loop $l0
2621+
;; CHECK-NEXT: (br $l0)
26222622
;; CHECK-NEXT: )
2623-
;; CHECK-NEXT: (block $l_1
2623+
;; CHECK-NEXT: (block $l1
26242624
;; CHECK-NEXT: (if
26252625
;; CHECK-NEXT: (i32.const 0)
26262626
;; CHECK-NEXT: (then
2627-
;; CHECK-NEXT: (br $l_1)
2627+
;; CHECK-NEXT: (br $l1)
26282628
;; CHECK-NEXT: )
26292629
;; CHECK-NEXT: )
26302630
;; CHECK-NEXT: )
@@ -2645,17 +2645,17 @@
26452645
;; CHECK: (func $label-shadowed (type $void)
26462646
;; CHECK-NEXT: (block $l
26472647
;; CHECK-NEXT: (br $l)
2648-
;; CHECK-NEXT: (loop $l_0
2649-
;; CHECK-NEXT: (br $l_0)
2650-
;; CHECK-NEXT: (block $l_1
2648+
;; CHECK-NEXT: (loop $l0
2649+
;; CHECK-NEXT: (br $l0)
2650+
;; CHECK-NEXT: (block $l1
26512651
;; CHECK-NEXT: (if
26522652
;; CHECK-NEXT: (i32.const 0)
26532653
;; CHECK-NEXT: (then
2654-
;; CHECK-NEXT: (br $l_1)
2654+
;; CHECK-NEXT: (br $l1)
26552655
;; CHECK-NEXT: )
26562656
;; CHECK-NEXT: )
26572657
;; CHECK-NEXT: )
2658-
;; CHECK-NEXT: (br $l_0)
2658+
;; CHECK-NEXT: (br $l0)
26592659
;; CHECK-NEXT: )
26602660
;; CHECK-NEXT: (br $l)
26612661
;; CHECK-NEXT: )
@@ -2676,14 +2676,14 @@
26762676
)
26772677

26782678
;; CHECK: (func $label-index (type $void)
2679-
;; CHECK-NEXT: (block $label_1
2680-
;; CHECK-NEXT: (block $label
2681-
;; CHECK-NEXT: (block $label_0
2679+
;; CHECK-NEXT: (block $block1
2680+
;; CHECK-NEXT: (block $block
2681+
;; CHECK-NEXT: (block $block0
26822682
;; CHECK-NEXT: (block $l
2683-
;; CHECK-NEXT: (br $label)
2684-
;; CHECK-NEXT: (br $label_0)
2683+
;; CHECK-NEXT: (br $block)
2684+
;; CHECK-NEXT: (br $block0)
26852685
;; CHECK-NEXT: (br $l)
2686-
;; CHECK-NEXT: (br $label_1)
2686+
;; CHECK-NEXT: (br $block1)
26872687
;; CHECK-NEXT: )
26882688
;; CHECK-NEXT: )
26892689
;; CHECK-NEXT: )
@@ -2810,8 +2810,8 @@
28102810
)
28112811

28122812
;; CHECK: (func $br_if-index (type $void)
2813-
;; CHECK-NEXT: (block $label
2814-
;; CHECK-NEXT: (br_if $label
2813+
;; CHECK-NEXT: (block $block
2814+
;; CHECK-NEXT: (br_if $block
28152815
;; CHECK-NEXT: (i32.const 0)
28162816
;; CHECK-NEXT: )
28172817
;; CHECK-NEXT: )
@@ -2918,11 +2918,11 @@
29182918
)
29192919

29202920
;; CHECK: (func $br-table-index (type $void)
2921-
;; CHECK-NEXT: (block $label
2921+
;; CHECK-NEXT: (block $block
29222922
;; CHECK-NEXT: (block $l
2923-
;; CHECK-NEXT: (block $label_1
2924-
;; CHECK-NEXT: (block $label_0
2925-
;; CHECK-NEXT: (br_table $label $l $label_0 $label_1
2923+
;; CHECK-NEXT: (block $block1
2924+
;; CHECK-NEXT: (block $block0
2925+
;; CHECK-NEXT: (br_table $block $l $block0 $block1
29262926
;; CHECK-NEXT: (i32.const 0)
29272927
;; CHECK-NEXT: )
29282928
;; CHECK-NEXT: )
@@ -4098,8 +4098,8 @@
40984098

40994099
;; CHECK: (func $br-on-non-null (type $8) (param $0 anyref)
41004100
;; CHECK-NEXT: (drop
4101-
;; CHECK-NEXT: (block $label (result (ref any))
4102-
;; CHECK-NEXT: (br_on_non_null $label
4101+
;; CHECK-NEXT: (block $block (result (ref any))
4102+
;; CHECK-NEXT: (br_on_non_null $block
41034103
;; CHECK-NEXT: (local.get $0)
41044104
;; CHECK-NEXT: )
41054105
;; CHECK-NEXT: (unreachable)
@@ -4117,10 +4117,10 @@
41174117

41184118
;; CHECK: (func $br-on-cast (type $8) (param $0 anyref)
41194119
;; CHECK-NEXT: (drop
4120-
;; CHECK-NEXT: (block $label (result i31ref)
4120+
;; CHECK-NEXT: (block $block (result i31ref)
41214121
;; CHECK-NEXT: (drop
41224122
;; CHECK-NEXT: (block (result (ref any))
4123-
;; CHECK-NEXT: (br_on_cast $label anyref i31ref
4123+
;; CHECK-NEXT: (br_on_cast $block anyref i31ref
41244124
;; CHECK-NEXT: (local.get $0)
41254125
;; CHECK-NEXT: )
41264126
;; CHECK-NEXT: )
@@ -4142,10 +4142,10 @@
41424142

41434143
;; CHECK: (func $br-on-cast-fail (type $8) (param $0 anyref)
41444144
;; CHECK-NEXT: (drop
4145-
;; CHECK-NEXT: (block $label (result (ref any))
4145+
;; CHECK-NEXT: (block $block (result (ref any))
41464146
;; CHECK-NEXT: (drop
41474147
;; CHECK-NEXT: (block (result i31ref)
4148-
;; CHECK-NEXT: (br_on_cast_fail $label anyref i31ref
4148+
;; CHECK-NEXT: (br_on_cast_fail $block anyref i31ref
41494149
;; CHECK-NEXT: (local.get $0)
41504150
;; CHECK-NEXT: )
41514151
;; CHECK-NEXT: )
@@ -5121,14 +5121,14 @@
51215121

51225122
;; CHECK: (func $resume (type $91) (param $ct (ref $simple-cont))
51235123
;; CHECK-NEXT: (local $f f32)
5124-
;; CHECK-NEXT: (block $label_1
5124+
;; CHECK-NEXT: (block $label
51255125
;; CHECK-NEXT: (block
51265126
;; CHECK-NEXT: (drop
5127-
;; CHECK-NEXT: (block $label (result (ref $to-f32-cont))
5127+
;; CHECK-NEXT: (block $block (result (ref $to-f32-cont))
51285128
;; CHECK-NEXT: (tuple.drop 3
5129-
;; CHECK-NEXT: (block $label_0 (type $36) (result i32 i64 (ref null $simple-cont))
5129+
;; CHECK-NEXT: (block $block0 (type $36) (result i32 i64 (ref null $simple-cont))
51305130
;; CHECK-NEXT: (local.set $f
5131-
;; CHECK-NEXT: (resume $simple-cont (tag $empty $label) (tag $tag-pair-to-pair $label_0)
5131+
;; CHECK-NEXT: (resume $simple-cont (tag $empty $block) (tag $tag-pair-to-pair $block0)
51325132
;; CHECK-NEXT: (i32.const 0)
51335133
;; CHECK-NEXT: (i64.const 1)
51345134
;; CHECK-NEXT: (local.get $ct)
@@ -5140,7 +5140,7 @@
51405140
;; CHECK-NEXT: (unreachable)
51415141
;; CHECK-NEXT: )
51425142
;; CHECK-NEXT: )
5143-
;; CHECK-NEXT: (br $label_1)
5143+
;; CHECK-NEXT: (br $label)
51445144
;; CHECK-NEXT: )
51455145
;; CHECK-NEXT: )
51465146
;; CHECK-NEXT: )

0 commit comments

Comments
 (0)