diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-14 03:38:31 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-14 03:38:31 +0000 |
commit | 3cfad7ee25a51a96bb9927f3471a97dfe2c07d99 (patch) | |
tree | 5dd689f5d458ead1d91045b9c867f1e8288eb04d | |
parent | 692acf14382860e32802f7822aaa244cfc7aba13 (diff) | |
download | bcm5719-llvm-3cfad7ee25a51a96bb9927f3471a97dfe2c07d99.tar.gz bcm5719-llvm-3cfad7ee25a51a96bb9927f3471a97dfe2c07d99.zip |
Update cxx_dr_status to cover dr1748 and add test.
llvm-svn: 229229
-rw-r--r-- | clang/test/CXX/drs/dr1748.cpp | 35 | ||||
-rw-r--r-- | clang/www/cxx_dr_status.html | 2 |
2 files changed, 36 insertions, 1 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]; } diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index 03afa35c92a..58450c04fd5 100644 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -10303,7 +10303,7 @@ and <I>POD class</I></td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1748">1748</a></td> <td>DR</td> <td>Placement new with a null pointer</td> - <td class="none" align="center">Unknown</td> + <td class="svn" align="center">SVN</td> </tr> <tr id="1749"> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1749">1749</a></td> |