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