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