summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-02-14 03:38:31 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-02-14 03:38:31 +0000
commit3cfad7ee25a51a96bb9927f3471a97dfe2c07d99 (patch)
tree5dd689f5d458ead1d91045b9c867f1e8288eb04d /clang/test
parent692acf14382860e32802f7822aaa244cfc7aba13 (diff)
downloadbcm5719-llvm-3cfad7ee25a51a96bb9927f3471a97dfe2c07d99.tar.gz
bcm5719-llvm-3cfad7ee25a51a96bb9927f3471a97dfe2c07d99.zip
Update cxx_dr_status to cover dr1748 and add test.
llvm-svn: 229229
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CXX/drs/dr1748.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/clang/test/CXX/drs/dr1748.cpp b/clang/test/CXX/drs/dr1748.cpp
new file mode 100644
index 00000000000..7e04f402d26
--- /dev/null
+++ b/clang/test/CXX/drs/dr1748.cpp
@@ -0,0 +1,35 @@
+// RUN: %clang_cc1 -std=c++98 %s -triple x86_64-linux-gnu -emit-llvm -o - -fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s
+// RUN: %clang_cc1 -std=c++11 %s -triple x86_64-linux-gnu -emit-llvm -o - -fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s
+// RUN: %clang_cc1 -std=c++14 %s -triple x86_64-linux-gnu -emit-llvm -o - -fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s
+// RUN: %clang_cc1 -std=c++1z %s -triple x86_64-linux-gnu -emit-llvm -o - -fexceptions -fcxx-exceptions -pedantic-errors | FileCheck %s
+
+// dr1748: 3.7
+
+// FIXME: __SIZE_TYPE__ expands to 'long long' on some targets.
+__extension__ typedef __SIZE_TYPE__ size_t;
+
+void *operator new(size_t, void *);
+void *operator new[](size_t, void *);
+
+struct X { X(); };
+
+// The reserved placement allocation functions get inlined
+// even if we can't see their definitions. They do not
+// perform a null check.
+
+// CHECK-LABEL: define {{.*}} @_Z1fPv(
+// CHECK-NOT: call
+// CHECK-NOT: icmp{{.*}} null
+// CHECK-NOT: br i1
+// CHECK: call void @_ZN1XC1Ev(
+// CHECK: }
+X *f(void *p) { return new (p) X; }
+
+// CHECK-LABEL: define {{.*}} @_Z1gPv(
+// CHECK-NOT: call
+// CHECK-NOT: icmp{{.*}} null
+// CHECK-NOT: br i1
+// CHECK: call void @_ZN1XC1Ev(
+// CHECK: br i1
+// CHECK: }
+X *g(void *p) { return new (p) X[5]; }
OpenPOWER on IntegriCloud