Skip to content

Commit 986a497

Browse files
author
git apple-llvm automerger
committed
Merge commit 'a98466ad8967' from llvm.org/main into next
2 parents fc05188 + a98466a commit 986a497

File tree

2 files changed

+90
-99
lines changed

2 files changed

+90
-99
lines changed

llvm/test/MC/WebAssembly/eh-assembly-legacy.s

Lines changed: 0 additions & 99 deletions
This file was deleted.

llvm/test/MC/WebAssembly/eh-assembly.s

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)