1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -o - | FileCheck %s
9 void* operator new(size_t, void*) throw();
22 _Complex
int* b
= new _Complex
int(10i
);
36 // CHECK: call void @_ZN1TC1Ev
46 // CHECK: call void @_ZN2T2C1Eii
47 T2
*t2
= new T2(10, 10);
52 return new (0) int(10);
77 // CHECK: declare noalias i8* @_Znam
78 void *operator new[](size_t);
88 void* operator new(__typeof(sizeof(int)), int, float, ...);
93 // CHECK: @_ZN1AnwEmifz
94 return new(1, 2, 3.45, 100) A
;
97 // CHECK: define void @_Z3t11i
99 struct Bmemptr
{ int Bmemptr::* memptr
; int a
; };
102 // CHECK: call noalias i8* @_Znwm
103 // CHECK: call void @llvm.memset.p0i8.i64(
106 // CHECK: call noalias i8* @_Znam
107 // CHECK: {{call void.*llvm.memset.p0i8.i64.*i8 0, i64 %}}
110 // CHECK: call noalias i8* @_Znam
111 // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
113 Bmemptr
*b_memptr
= new Bmemptr
[n
]();
120 // We don't need to initialize an empty class.
121 // CHECK: define void @_Z3t12v
123 // CHECK: call noalias i8* @_Znam
127 // CHECK: call noalias i8* @_Znam
129 (void)new Empty
[10]();
134 // Zero-initialization
135 // CHECK: define void @_Z3t13i
137 // CHECK: call noalias i8* @_Znwm
138 // CHECK: store i32 0, i32*
141 // CHECK: call noalias i8* @_Znam
142 // CHECK: {{call void.*llvm.memset.p0i8.i64.*i8 0, i64 %}}
145 // CHECK-NEXT: ret void
150 void* operator new[](size_t size
);
151 void operator delete[](void* p
);
156 // CHECK: call i8* @_ZN5AllocnaEm(i64 808)
157 // CHECK: store i64 200
158 // CHECK: call void @_ZN5AllocD1Ev(
159 // CHECK: call void @_ZN5AllocdaEPv(i8*
160 delete[] new Alloc
[10][20];
161 // CHECK: call noalias i8* @_Znwm
162 // CHECK: call void @_ZdlPv(i8*