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