brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 96597a4 Raw
66 lines · plain
1; RUN: opt < %s -wasm-lower-em-ehsjlj -enable-emscripten-cxx-exceptions -emscripten-cxx-exceptions-allowed=do_catch -S | FileCheck %s2 3target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"4target triple = "wasm32-unknown-unknown"5 6define void @dont_catch() personality ptr @__gxx_personality_v0 {7; CHECK-LABEL: @dont_catch(8entry:9  invoke void @foo()10          to label %invoke.cont unwind label %lpad11; CHECK: entry:12; CHECK-NEXT: call void @foo()13; CHECK-NEXT: br label %invoke.cont14 15invoke.cont:                                      ; preds = %entry16  br label %try.cont17 18lpad:                                             ; preds = %entry19  %0 = landingpad { ptr, i32 }20          catch ptr null21  %1 = extractvalue { ptr, i32 } %0, 022  %2 = extractvalue { ptr, i32 } %0, 123  br label %catch24 25catch:                                            ; preds = %lpad26  %3 = call ptr @__cxa_begin_catch(ptr %1)27  call void @__cxa_end_catch()28  br label %try.cont29 30try.cont:                                         ; preds = %catch, %invoke.cont31  ret void32}33 34define void @do_catch() personality ptr @__gxx_personality_v0 {35; CHECK-LABEL: @do_catch(36entry:37  invoke void @foo()38          to label %invoke.cont unwind label %lpad39; CHECK: entry:40; CHECK-NEXT: store i32 0, ptr41; CHECK-NEXT: call cc{{.*}} void @__invoke_void(ptr @foo)42 43invoke.cont:                                      ; preds = %entry44  br label %try.cont45 46lpad:                                             ; preds = %entry47  %0 = landingpad { ptr, i32 }48          catch ptr null49  %1 = extractvalue { ptr, i32 } %0, 050  %2 = extractvalue { ptr, i32 } %0, 151  br label %catch52 53catch:                                            ; preds = %lpad54  %3 = call ptr @__cxa_begin_catch(ptr %1)55  call void @__cxa_end_catch()56  br label %try.cont57 58try.cont:                                         ; preds = %catch, %invoke.cont59  ret void60}61 62declare void @foo()63declare i32 @__gxx_personality_v0(...)64declare ptr @__cxa_begin_catch(ptr)65declare void @__cxa_end_catch()66