1577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown -fexceptions -fcxx-exceptions %s -emit-llvm -o - | FileCheck %s 2577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier// REQUIRES: asserts 3577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier 4577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosierstruct Throws { 5577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier Throws(int); 6577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier Throws(); 7577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier ~Throws(); 8577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier}; 9577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier 1093ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z7cleanupi 11577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosiervoid cleanup(int n) { 12577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 13577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD:[^ ]+]] 14577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 15577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 16577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 17577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 18577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ev 19577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]] 20577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier new Throws[n] { 1, 2, 3 }; 21577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: [[LPAD]]: 22577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: landingpad 23577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: call void @_ZN6ThrowsD1Ev 24577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: call void @_ZdaPv 25577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier} 26577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier 27577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier 2893ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define void @_Z7cleanupv 29577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosiervoid cleanup() { 30577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 31577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2:[^ ]+]] 32577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 33577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]] 34577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: invoke void @_ZN6ThrowsC1Ei 35577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]] 36577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier new Throws[3] { 1, 2, 3 }; 37577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: [[LPAD2]]: 38577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK-NEXT: landingpad 39577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: call void @_ZN6ThrowsD1Ev 40577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier // CHECK: call void @_ZdaPv 41577fb5b2c15f7c187983a53e53f4f53b5d7aabb1Chad Rosier} 42