================
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -triple wasm32-unknown-unknown -fexceptions 
-fcxx-exceptions -target-feature +reference-types -target-feature 
+exception-handling -target-feature +multivalue -exception-model=wasm 
-emit-llvm -o - %s | FileCheck %s
+
+// Check if __builtin_wasm_throw and __builtin_wasm_rethrow are correctly
+// invoked when placed in try-catch.
+
+void throw_in_try(void *obj) {
+  try {
+    __builtin_wasm_throw(0, obj);
+  } catch (...) {
+  }
+  // CHECK: invoke void @llvm.wasm.throw(i32 0, ptr %{{.*}})
+}
+
+void rethrow_in_try() {
+  try {
+  __builtin_wasm_rethrow();
----------------
aheejin wrote:

This code actually does not make sense because this call is not within a 
`catch`, but this test only has the purpose of checking whether `invoke` is 
generated and does not go through the backend, so it should be fine
(As I said in the PR description, we don't use this builtin for our C++ 
implementation, but I didn't remove this because other people might want to use 
it)

https://github.com/llvm/llvm-project/pull/128105
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to