1 // RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown -fexceptions -fcxx-exceptions %s -emit-llvm -o - | FileCheck %s 2 3 struct Throws { 4 Throws(int); 5 Throws(); 6 ~Throws(); 7 }; 8 9 // CHECK: define void @_Z7cleanupi 10 void cleanup(int n) { 11 // CHECK: invoke void @_ZN6ThrowsC1Ei 12 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD:[^ ]+]] 13 // CHECK: invoke void @_ZN6ThrowsC1Ei 14 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 15 // CHECK: invoke void @_ZN6ThrowsC1Ei 16 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 17 // CHECK: invoke void @_ZN6ThrowsC1Ev 18 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 19 new Throws[n] { 1, 2, 3 }; 20 // CHECK: [[LPAD]]: 21 // CHECK-NEXT: landingpad 22 // CHECK: call void @_ZN6ThrowsD1Ev 23 // CHECK: call void @_ZdaPv 24 } 25 26 27 // CHECK: define void @_Z7cleanupv 28 void cleanup() { 29 // CHECK: invoke void @_ZN6ThrowsC1Ei 30 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2:[^ ]+]] 31 // CHECK: invoke void @_ZN6ThrowsC1Ei 32 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]] 33 // CHECK: invoke void @_ZN6ThrowsC1Ei 34 // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]] 35 new Throws[3] { 1, 2, 3 }; 36 // CHECK: [[LPAD2]]: 37 // CHECK-NEXT: landingpad 38 // CHECK: call void @_ZN6ThrowsD1Ev 39 // CHECK: call void @_ZdaPv 40 } 41