Skip to content

Commit 9fc2762

Browse files
authored
Remove (attr 0) from tag text format (#3946)
This attribute is always 0 and reserved for future use. In Binayren's unofficial text format we were writing this field as `(attr 0)`, but we have recently come to the conclusion that this is not necessary. Relevant discussion: WebAssembly/exception-handling#160 (comment)
1 parent aae3575 commit 9fc2762

File tree

56 files changed

+142
-166
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+142
-166
lines changed

src/passes/Print.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2685,7 +2685,7 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> {
26852685
emitImportHeader(curr);
26862686
o << "(tag ";
26872687
printName(curr->name, o);
2688-
o << maybeSpace << "(attr " << curr->attribute << ')' << maybeSpace;
2688+
o << maybeSpace;
26892689
printParamType(o, curr->sig.params, currModule);
26902690
o << "))";
26912691
o << maybeNewLine;
@@ -2695,7 +2695,7 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> {
26952695
o << '(';
26962696
printMedium(o, "tag ");
26972697
printName(curr->name, o);
2698-
o << maybeSpace << "(attr " << curr->attribute << ')' << maybeSpace;
2698+
o << maybeSpace;
26992699
printParamType(o, curr->sig.params, currModule);
27002700
o << ")" << maybeNewLine;
27012701
}

src/shared-constants.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ extern Name PRINT;
6666
extern Name EXIT;
6767
extern Name SHARED;
6868
extern Name TAG;
69-
extern Name ATTR;
7069

7170
} // namespace wasm
7271

src/wasm/wasm-s-parser.cpp

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3109,14 +3109,6 @@ void SExpressionWasmBuilder::parseImport(Element& s) {
31093109
}
31103110
} else if (kind == ExternalKind::Tag) {
31113111
auto tag = make_unique<Tag>();
3112-
if (j >= inner.size()) {
3113-
throw ParseException("tag does not have an attribute", s.line, s.col);
3114-
}
3115-
auto& attrElem = *inner[j++];
3116-
if (!elementStartsWith(attrElem, ATTR) || attrElem.size() != 2) {
3117-
throw ParseException("invalid attribute", attrElem.line, attrElem.col);
3118-
}
3119-
tag->attribute = atoi(attrElem[1]->c_str());
31203112
j = parseTypeUse(inner, j, tag->sig);
31213113
tag->setName(name, hasExplicitName);
31223114
tag->module = module;
@@ -3498,20 +3490,6 @@ void SExpressionWasmBuilder::parseTag(Element& s, bool preParseImport) {
34983490
ex->kind = ExternalKind::Tag;
34993491
}
35003492

3501-
// Parse attribute
3502-
if (i >= s.size()) {
3503-
throw ParseException("tag does not have an attribute", s.line, s.col);
3504-
}
3505-
auto& attrElem = *s[i++];
3506-
if (!elementStartsWith(attrElem, ATTR) || attrElem.size() != 2) {
3507-
throw ParseException("invalid attribute", attrElem.line, attrElem.col);
3508-
}
3509-
if (!attrElem[1]->isStr()) {
3510-
throw ParseException(
3511-
"invalid attribute", attrElem[1]->line, attrElem[1]->col);
3512-
}
3513-
tag->attribute = atoi(attrElem[1]->c_str());
3514-
35153493
// Parse typeuse
35163494
i = parseTypeUse(s, i, tag->sig);
35173495

src/wasm/wasm.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ Name PRINT("print");
9797
Name EXIT("exit");
9898
Name SHARED("shared");
9999
Name TAG("tag");
100-
Name ATTR("attr");
101100

102101
// Expressions
103102

test/binaryen.js/exception-handling.js.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(module
22
(type $i32_=>_none (func (param i32)))
33
(type $none_=>_none (func))
4-
(tag $e (attr 0) (param i32))
4+
(tag $e (param i32))
55
(func $test
66
(try $l0
77
(do

test/binaryen.js/kitchen-sink.js.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
128128
(import "module" "base" (global $a-global-imp i32))
129129
(import "module" "base" (global $a-mut-global-imp (mut i32)))
130130
(import "module" "base" (func $an-imported (param i32 f64) (result f32)))
131-
(import "module" "base" (tag $a-tag-imp (attr 0) (param i32)))
131+
(import "module" "base" (tag $a-tag-imp (param i32)))
132132
(global $a-global i32 (i32.const 1))
133133
(memory $0 (shared 1 256))
134134
(data (i32.const 10) "hello, world")
135135
(data "I am passive")
136136
(table $t0 1 funcref)
137137
(elem $e0 (i32.const 0) "$kitchen()sinker")
138-
(tag $a-tag (attr 0) (param i32))
138+
(tag $a-tag (param i32))
139139
(export "kitchen_sinker" (func "$kitchen()sinker"))
140140
(export "a-global-exp" (global $a-global))
141141
(export "a-tag-exp" (tag $a-tag))
@@ -2220,14 +2220,14 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
22202220
(import "module" "base" (global $a-global-imp i32))
22212221
(import "module" "base" (global $a-mut-global-imp (mut i32)))
22222222
(import "module" "base" (func $an-imported (param i32 f64) (result f32)))
2223-
(import "module" "base" (tag $a-tag-imp (attr 0) (param i32)))
2223+
(import "module" "base" (tag $a-tag-imp (param i32)))
22242224
(global $a-global i32 (i32.const 1))
22252225
(memory $0 (shared 1 256))
22262226
(data (i32.const 10) "hello, world")
22272227
(data "I am passive")
22282228
(table $t0 1 funcref)
22292229
(elem $e0 (i32.const 0) "$kitchen()sinker")
2230-
(tag $a-tag (attr 0) (param i32))
2230+
(tag $a-tag (param i32))
22312231
(export "kitchen_sinker" (func "$kitchen()sinker"))
22322232
(export "a-global-exp" (global $a-global))
22332233
(export "a-tag-exp" (tag $a-tag))
@@ -4779,7 +4779,7 @@ module loaded from binary form:
47794779
(type $i32_i32_=>_none (func (param i32 i32)))
47804780
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
47814781
(global $a-global i32 (i32.const 3))
4782-
(tag $tag$0 (attr 0) (param i32 i32))
4782+
(tag $tag$0 (param i32 i32))
47834783
(func $adder (param $0 i32) (param $1 i32) (result i32)
47844784
(i32.add
47854785
(local.get $0)
@@ -4821,7 +4821,7 @@ test_parsing text:
48214821
(type $i32_=>_none (func (param i32)))
48224822
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
48234823
(global $a-global i32 (i32.const 3))
4824-
(tag $a-tag (attr 0) (param i32))
4824+
(tag $a-tag (param i32))
48254825
(func $adder (param $0 i32) (param $1 i32) (result i32)
48264826
(i32.add
48274827
(local.get $0)
@@ -4835,7 +4835,7 @@ module loaded from text form:
48354835
(type $i32_=>_none (func (param i32)))
48364836
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
48374837
(global $a-global i32 (i32.const 3))
4838-
(tag $a-tag (attr 0) (param i32))
4838+
(tag $a-tag (param i32))
48394839
(func $ADD_ER (param $0 i32) (param $1 i32) (result i32)
48404840
(i32.add
48414841
(local.get $0)

test/binaryen.js/tag.js.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ getTagInfo={"name":"a-tag","module":"","base":"","attribute":0,"params":2,"resul
33
(module
44
(type $i32_=>_none (func (param i32)))
55
(type $i32_f32_=>_none (func (param i32 f32)))
6-
(import "module" "base" (tag $a-tag-imp (attr 0) (param i32 f32)))
7-
(tag $a-tag (attr 0) (param i32))
6+
(import "module" "base" (tag $a-tag-imp (param i32 f32)))
7+
(tag $a-tag (param i32))
88
(export "a-tag-exp" (tag $a-tag))
99
)
1010

1111
(module
1212
(type $i32_f32_=>_none (func (param i32 f32)))
13-
(import "module" "base" (tag $a-tag-imp (attr 0) (param i32 f32)))
13+
(import "module" "base" (tag $a-tag-imp (param i32 f32)))
1414
)
1515

test/br_to_try.wasm.fromBinary

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(module
22
(type $i32_=>_none (func (param i32)))
33
(type $none_=>_none (func))
4-
(tag $tag$0 (attr 0) (param i32))
4+
(tag $tag$0 (param i32))
55
(func $0
66
(try $label$3
77
(do

test/break-within-catch.wasm.fromBinary

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(module
22
(type $i32_=>_none (func (param i32)))
33
(type $none_=>_none (func))
4-
(tag $tag$0 (attr 0) (param i32))
4+
(tag $tag$0 (param i32))
55
(func $0
66
(block $label$2
77
(try $label$3

test/example/c-api-kitchen-sink.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ BinaryenFeatureAll: 16383
4545
(table $0 1 1 funcref)
4646
(elem $0 (table $0) (i32.const 0) func "$kitchen()sinker")
4747
(elem $passive func "$kitchen()sinker")
48-
(tag $a-tag (attr 0) (param i32))
48+
(tag $a-tag (param i32))
4949
(export "kitchen_sinker" (func "$kitchen()sinker"))
5050
(export "mem" (memory $0))
5151
(start $starter)

test/example/module-splitting.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ int main() {
7676
(memory $mem (shared 3 42))
7777
(table $tab 3 42 funcref)
7878
(global $glob (mut i32) (i32.const 7))
79-
(tag $e (attr 0) (param i32))
79+
(tag $e (param i32))
8080
))");
8181

8282
// Imported global stuff
@@ -85,7 +85,7 @@ int main() {
8585
(import "env" "mem" (memory $mem (shared 3 42)))
8686
(import "env" "tab" (table $tab 3 42 funcref))
8787
(import "env" "glob" (global $glob (mut i32)))
88-
(import "env" "e" (tag $e (attr 0) (param i32)))
88+
(import "env" "e" (tag $e (param i32)))
8989
))");
9090

9191
// Exported global stuff
@@ -94,7 +94,7 @@ int main() {
9494
(memory $mem (shared 3 42))
9595
(table $tab 3 42 funcref)
9696
(global $glob (mut i32) (i32.const 7))
97-
(tag $e (attr 0) (param i32))
97+
(tag $e (param i32))
9898
(export "mem" (memory $mem))
9999
(export "tab" (table $tab))
100100
(export "glob" (global $glob))

test/example/module-splitting.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Before:
1616
(global $glob (mut i32) (i32.const 7))
1717
(memory $mem (shared 3 42))
1818
(table $tab 3 42 funcref)
19-
(tag $e (attr 0) (param i32))
19+
(tag $e (param i32))
2020
)
2121
Keeping: <none>
2222
After:
@@ -25,7 +25,7 @@ After:
2525
(global $glob (mut i32) (i32.const 7))
2626
(memory $mem (shared 3 42))
2727
(table $tab 3 42 funcref)
28-
(tag $e (attr 0) (param i32))
28+
(tag $e (param i32))
2929
(export "%memory" (memory $mem))
3030
(export "%table" (table $tab))
3131
(export "%global" (global $glob))
@@ -37,7 +37,7 @@ Secondary:
3737
(import "primary" "%memory" (memory $mem (shared 3 42)))
3838
(import "primary" "%table" (table $tab 3 42 funcref))
3939
(import "primary" "%global" (global $glob (mut i32)))
40-
(import "primary" "%tag" (tag $e (attr 0) (param i32)))
40+
(import "primary" "%tag" (tag $e (param i32)))
4141
)
4242

4343

@@ -47,7 +47,7 @@ Before:
4747
(import "env" "mem" (memory $mem (shared 3 42)))
4848
(import "env" "tab" (table $tab 3 42 funcref))
4949
(import "env" "glob" (global $glob (mut i32)))
50-
(import "env" "e" (tag $e (attr 0) (param i32)))
50+
(import "env" "e" (tag $e (param i32)))
5151
)
5252
Keeping: <none>
5353
After:
@@ -56,7 +56,7 @@ After:
5656
(import "env" "mem" (memory $mem (shared 3 42)))
5757
(import "env" "tab" (table $tab 3 42 funcref))
5858
(import "env" "glob" (global $glob (mut i32)))
59-
(import "env" "e" (tag $e (attr 0) (param i32)))
59+
(import "env" "e" (tag $e (param i32)))
6060
(export "%memory" (memory $mem))
6161
(export "%table" (table $tab))
6262
(export "%global" (global $glob))
@@ -68,7 +68,7 @@ Secondary:
6868
(import "primary" "%memory" (memory $mem (shared 3 42)))
6969
(import "primary" "%table" (table $tab 3 42 funcref))
7070
(import "primary" "%global" (global $glob (mut i32)))
71-
(import "primary" "%tag" (tag $e (attr 0) (param i32)))
71+
(import "primary" "%tag" (tag $e (param i32)))
7272
)
7373

7474

@@ -78,7 +78,7 @@ Before:
7878
(global $glob (mut i32) (i32.const 7))
7979
(memory $mem (shared 3 42))
8080
(table $tab 3 42 funcref)
81-
(tag $e (attr 0) (param i32))
81+
(tag $e (param i32))
8282
(export "mem" (memory $mem))
8383
(export "tab" (table $tab))
8484
(export "glob" (global $glob))
@@ -91,7 +91,7 @@ After:
9191
(global $glob (mut i32) (i32.const 7))
9292
(memory $mem (shared 3 42))
9393
(table $tab 3 42 funcref)
94-
(tag $e (attr 0) (param i32))
94+
(tag $e (param i32))
9595
(export "mem" (memory $mem))
9696
(export "tab" (table $tab))
9797
(export "glob" (global $glob))
@@ -103,7 +103,7 @@ Secondary:
103103
(import "primary" "mem" (memory $mem (shared 3 42)))
104104
(import "primary" "tab" (table $tab 3 42 funcref))
105105
(import "primary" "glob" (global $glob (mut i32)))
106-
(import "primary" "e" (tag $e (attr 0) (param i32)))
106+
(import "primary" "e" (tag $e (param i32)))
107107
)
108108

109109

test/exception-handling.wast

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
(module
2-
(tag $e-i32 (attr 0) (param i32))
3-
(tag $e-i64 (attr 0) (param i64))
4-
(tag $e-i32-i64 (attr 0) (param i32 i64))
5-
(tag $e-empty (attr 0))
2+
(tag $e-i32 (param i32))
3+
(tag $e-i64 (param i64))
4+
(tag $e-i32-i64 (param i32 i64))
5+
(tag $e-empty)
66

77
(func $foo)
88
(func $bar)

test/exception-handling.wast.from-wast

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
(type $i32_=>_none (func (param i32)))
44
(type $i64_=>_none (func (param i64)))
55
(type $i32_i64_=>_none (func (param i32 i64)))
6-
(tag $e-i32 (attr 0) (param i32))
7-
(tag $e-i64 (attr 0) (param i64))
8-
(tag $e-i32-i64 (attr 0) (param i32 i64))
9-
(tag $e-empty (attr 0) (param))
6+
(tag $e-i32 (param i32))
7+
(tag $e-i64 (param i64))
8+
(tag $e-i32-i64 (param i32 i64))
9+
(tag $e-empty (param))
1010
(func $foo
1111
(nop)
1212
)

test/exception-handling.wast.fromBinary

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
(type $i32_=>_none (func (param i32)))
44
(type $i64_=>_none (func (param i64)))
55
(type $i32_i64_=>_none (func (param i32 i64)))
6-
(tag $tag$0 (attr 0) (param i32))
7-
(tag $tag$1 (attr 0) (param i64))
8-
(tag $tag$2 (attr 0) (param i32 i64))
9-
(tag $tag$3 (attr 0) (param))
6+
(tag $tag$0 (param i32))
7+
(tag $tag$1 (param i64))
8+
(tag $tag$2 (param i32 i64))
9+
(tag $tag$3 (param))
1010
(func $foo
1111
(nop)
1212
)

test/exception-handling.wast.fromBinary.noDebugInfo

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
(type $i32_=>_none (func (param i32)))
44
(type $i64_=>_none (func (param i64)))
55
(type $i32_i64_=>_none (func (param i32 i64)))
6-
(tag $tag$0 (attr 0) (param i32))
7-
(tag $tag$1 (attr 0) (param i64))
8-
(tag $tag$2 (attr 0) (param i32 i64))
9-
(tag $tag$3 (attr 0) (param))
6+
(tag $tag$0 (param i32))
7+
(tag $tag$1 (param i64))
8+
(tag $tag$2 (param i32 i64))
9+
(tag $tag$3 (param))
1010
(func $0
1111
(nop)
1212
)

test/lit/passes/coalesce-locals-eh.wast

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
(i32.const 1984)
1010
)
1111

12-
(tag $e (attr 0))
12+
(tag $e)
1313
;; CHECK: (func $bug-cfg-traversal (param $0 i32) (result i32)
1414
;; CHECK-NEXT: (try $try
1515
;; CHECK-NEXT: (do

test/lit/passes/code-folding-eh.wast

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
;; RUN: | filecheck %s
44

55
(module
6-
(tag $e-i32 (attr 0) (param i32))
6+
(tag $e-i32 (param i32))
77

88
;; CHECK: (func $pop-test
99
;; CHECK-NEXT: (block $folding-inner0

test/lit/passes/code-pushing-eh.wast

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
;; RUN: wasm-opt %s --code-pushing -all -S -o - | filecheck %s
33

44
(module
5-
(tag $e (attr 0) (param i32))
5+
(tag $e (param i32))
66

77
;; CHECK: (func $cant-push-past-call
88
;; CHECK-NEXT: (local $x i32)

test/lit/passes/dce-eh.wast

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
;; reachable
66
(module
77
(func $foo)
8-
(tag $e (attr 0))
8+
(tag $e)
99

1010
;; CHECK: (func $try_unreachable
1111
;; CHECK-NEXT: (try $try

test/lit/passes/inlining-eh.wast

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
(module
55
;; ---------------------------------------------------------------------------
66
(import "a" "b" (func $foo (result i32)))
7-
(tag $tag$0 (attr 0) (param i32))
7+
(tag $tag$0 (param i32))
88
(func $callee-with-label
99
(try $label
1010
(do)

0 commit comments

Comments
 (0)