1; REQUIRES: webassembly-registered-target 2; RUN: %clang %s -target wasm32-unknown-unknown -fwasm-exceptions -c -S -o - | FileCheck %s 3 4; This tests whether clang driver can take -fwasm-exceptions and compile bitcode 5; files using Wasm EH. 6 7; CHECK-LABEL: test 8; CHECK: try 9; CHECK: call foo 10; CHECK: catch __cpp_exception 11; CHECK: end 12define void @test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) { 13entry: 14 invoke void @foo() 15 to label %try.cont unwind label %catch.dispatch 16 17catch.dispatch: ; preds = %entry 18 %0 = catchswitch within none [label %catch.start] unwind to caller 19 20catch.start: ; preds = %catch.dispatch 21 %1 = catchpad within %0 [i8* null] 22 %2 = call i8* @llvm.wasm.get.exception(token %1) 23 %3 = call i32 @llvm.wasm.get.ehselector(token %1) 24 %4 = call i8* @__cxa_begin_catch(i8* %2) #2 [ "funclet"(token %1) ] 25 call void @__cxa_end_catch() [ "funclet"(token %1) ] 26 catchret from %1 to label %try.cont 27 28try.cont: ; preds = %entry, %catch.start 29 ret void 30} 31 32declare void @foo() 33declare i32 @__gxx_wasm_personality_v0(...) 34declare i8* @llvm.wasm.get.exception(token) 35declare i32 @llvm.wasm.get.ehselector(token) 36declare i8* @__cxa_begin_catch(i8*) 37declare void @__cxa_end_catch() 38 39