]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenCXX/new.cpp
Update clang to r89205.
[FreeBSD/FreeBSD.git] / test / CodeGenCXX / new.cpp
1 // RUN: clang-cc %s -emit-llvm -o - | FileCheck %s
2 #include <stddef.h>
3
4 void t1() {
5   int* a = new int;
6 }
7
8 // Placement.
9 void* operator new(size_t, void*) throw();
10
11 void t2(int* a) {
12   int* b = new (a) int;
13 }
14
15 struct S {
16   int a;
17 };
18
19 // POD types.
20 void t3() {
21   int *a = new int(10);
22   _Complex int* b = new _Complex int(10i);
23   
24   S s;
25   s.a = 10;
26   S *sp = new S(s);
27 }
28
29 // Non-POD
30 struct T {
31   T();
32   int a;
33 };
34
35 void t4() {
36   // CHECK: call void @_ZN1TC1Ev
37   T *t = new T;
38 }
39
40 struct T2 {
41   int a;
42   T2(int, int);
43 };
44
45 void t5() { 
46   // CHECK: call void @_ZN2T2C1Eii
47   T2 *t2 = new T2(10, 10);
48 }
49
50 int *t6() {
51   // Null check.
52   return new (0) int(10);
53 }
54
55 void t7() {
56   new int();
57 }
58
59 struct U {
60   ~U();
61 };
62   
63 void t8(int n) {
64   new int[10];
65   new int[n];
66   
67   // Non-POD
68   new T[10];
69   new T[n];
70   
71   // Cookie required
72   new U[10];
73   new U[n];
74 }