42 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown -fexceptions -fcxx-exceptions %s -emit-llvm -o - | FileCheck %s2// REQUIRES: asserts3 4struct Throws {5 Throws(int);6 Throws();7 ~Throws();8};9 10// CHECK-LABEL: define{{.*}} void @_Z7cleanupi11void cleanup(int n) {12 // CHECK: invoke void @_ZN6ThrowsC1Ei13 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD:[^ ]+]]14 // CHECK: invoke void @_ZN6ThrowsC1Ei15 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]16 // CHECK: invoke void @_ZN6ThrowsC1Ei17 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]18 // CHECK: invoke void @_ZN6ThrowsC1Ev19 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]20 new Throws[n] { 1, 2, 3 };21 // CHECK: [[LPAD]]:22 // CHECK-NEXT: landingpad23 // CHECK: call void @_ZN6ThrowsD1Ev24 // CHECK: call void @_ZdaPv25}26 27 28// CHECK-LABEL: define{{.*}} void @_Z7cleanupv29void cleanup() {30 // CHECK: invoke void @_ZN6ThrowsC1Ei31 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2:[^ ]+]]32 // CHECK: invoke void @_ZN6ThrowsC1Ei33 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]]34 // CHECK: invoke void @_ZN6ThrowsC1Ei35 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]]36 new Throws[3] { 1, 2, 3 };37 // CHECK: [[LPAD2]]:38 // CHECK-NEXT: landingpad39 // CHECK: call void @_ZN6ThrowsD1Ev40 // CHECK: call void @_ZdaPv41}42