1// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown -fexceptions -fcxx-exceptions %s -emit-llvm -o - | FileCheck %s 2// REQUIRES: asserts 3 4struct Throws { 5 Throws(int); 6 Throws(); 7 ~Throws(); 8}; 9 10// CHECK: define void @_Z7cleanupi 11void 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 29void 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