brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · e8326b5 Raw
48 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -triple thumbv7-windows-itanium -fexceptions -fcxx-exceptions %s -o - | FileCheck %s2// RUN: %clang_cc1 -emit-llvm -triple i686-windows-itanium -fexceptions -fcxx-exceptions %s -o - | FileCheck %s3// REQUIRES: asserts4 5void except() {6  throw 32;7}8 9void attempt() {10  try { except(); } catch (...) { }11}12 13// CHECK: @_ZTIi = external dso_local constant ptr14 15// CHECK: define {{.*}}void @_Z6exceptv() {{.*}} {16// CHECK:   %exception = call {{.*}}ptr @__cxa_allocate_exception(i32 4)17// CHECK:   store i32 32, ptr %exception18// CHECK:   call {{.*}}void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null)19// CHECK:   unreachable20// CHECK: }21 22// CHECK: define {{.*}}void @_Z7attemptv()23// CHECK-SAME: personality ptr @__gxx_personality_v024// CHECK:   %exn.slot = alloca ptr25// CHECK:   %ehselector.slot = alloca i3226// CHECK:   invoke {{.*}}void @_Z6exceptv()27// CHECK:     to label %invoke.cont unwind label %lpad28// CHECK: invoke.cont:29// CHECK:    br label %try.cont30// CHECK: lpad:31// CHECK:    %0 = landingpad { ptr, i32 }32// CHECK:      catch ptr null33// CHECK:    %1 = extractvalue { ptr, i32 } %0, 034// CHECK:    store ptr %1, ptr %exn.slot35// CHECK:    %2 = extractvalue { ptr, i32 } %0, 136// CHECK:    store i32 %2, ptr %ehselector.slot37// CHECK:    br label %catch38// CHECK: catch:39// CHECK:    %exn = load ptr, ptr %exn.slot40// CHECK:    %3 = call {{.*}}ptr @__cxa_begin_catch(ptr %{{2|exn}})41// CHECK:    call {{.*}}void @__cxa_end_catch()42// CHECK:    br label %try.cont43// CHECK: try.cont:44// CHECK:    ret void45// CHECK: }46 47 48