File tree Expand file tree Collapse file tree 2 files changed +90
-99
lines changed Expand file tree Collapse file tree 2 files changed +90
-99
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -82,9 +82,58 @@ eh_test:
82
82
end_try_table
83
83
drop
84
84
drop
85
+ end_function
86
+
87
+ eh_legacy_test:
88
+ .functype eh_legacy_test () - > ()
89
+
90
+ # try - catch with catch , catch_all , throw , and rethrow
91
+ try
92
+ i32.const 3
93
+ throw __cpp_exception
94
+ catch __cpp_exception
95
+ drop
96
+ rethrow 0
97
+ catch __c_longjmp
98
+ drop
99
+ catch_all
100
+ rethrow 0
101
+ end_try
102
+
103
+ # Nested try - catch with a rethrow
104
+ try
105
+ call foo
106
+ catch_all
107
+ try
108
+ catch_all
109
+ rethrow 1
110
+ end_try
111
+ end_try
112
+
113
+ # try - catch with a single return value
114
+ try i32
115
+ i32.const 0
116
+ catch __cpp_exception
117
+ end_try
118
+ drop
119
+
120
+ # try - catch with a mulvivalue return
121
+ try () - > (i32 , f32)
122
+ i32.const 0
123
+ f32.const 0 . 0
124
+ catch __cpp_exception
125
+ f32.const 1 . 0
126
+ end_try
127
+ drop
128
+ drop
85
129
130
+ # Catch - less try
131
+ try
132
+ call foo
133
+ end_try
86
134
end_function
87
135
136
+
88
137
# CHECK - LABEL: eh_test:
89
138
# CHECK: block exnref
90
139
# CHECK - NEXT: block
@@ -153,3 +202,44 @@ eh_test:
153
202
# CHECK - NEXT: end_try_table
154
203
# CHECK - NEXT: drop
155
204
# CHECK - NEXT: drop
205
+
206
+ # CHECK: eh_legacy_test:
207
+ # CHECK: try
208
+ # CHECK - NEXT: i32.const 3
209
+ # CHECK - NEXT: throw __cpp_exception
210
+ # CHECK - NEXT: catch __cpp_exception
211
+ # CHECK - NEXT: drop
212
+ # CHECK - NEXT: rethrow 0
213
+ # CHECK - NEXT: catch __c_longjmp
214
+ # CHECK - NEXT: drop
215
+ # CHECK - NEXT: catch_all
216
+ # CHECK - NEXT: rethrow 0
217
+ # CHECK - NEXT: end_try
218
+
219
+ # CHECK: try
220
+ # CHECK - NEXT: call foo
221
+ # CHECK - NEXT: catch_all
222
+ # CHECK - NEXT: try
223
+ # CHECK - NEXT: catch_all
224
+ # CHECK - NEXT: rethrow 1
225
+ # CHECK - NEXT: end_try
226
+ # CHECK - NEXT: end_try
227
+
228
+ # CHECK: try i32
229
+ # CHECK - NEXT: i32.const 0
230
+ # CHECK - NEXT: catch __cpp_exception
231
+ # CHECK - NEXT: end_try
232
+ # CHECK - NEXT: drop
233
+
234
+ # CHECK: try () - > (i32 , f32)
235
+ # CHECK - NEXT: i32.const 0
236
+ # CHECK - NEXT: f32.const 0x0p0
237
+ # CHECK - NEXT: catch __cpp_exception
238
+ # CHECK - NEXT: f32.const 0x1p0
239
+ # CHECK - NEXT: end_try
240
+ # CHECK - NEXT: drop
241
+ # CHECK - NEXT: drop
242
+
243
+ # CHECK: try
244
+ # CHECK - NEXT: call foo
245
+ # CHECK - NEXT: end_try
You can’t perform that action at this time.
0 commit comments