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:
8282 end_try_table
8383 drop
8484 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
85129
130+ # Catch - less try
131+ try
132+ call foo
133+ end_try
86134 end_function
87135
136+
88137# CHECK - LABEL: eh_test:
89138# CHECK: block exnref
90139# CHECK - NEXT: block
@@ -153,3 +202,44 @@ eh_test:
153202# CHECK - NEXT: end_try_table
154203# CHECK - NEXT: drop
155204# 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