Update cxx_dr_status to cover dr1748 and add test.

llvm-svn: 229229
This commit is contained in:
Richard Smith 2015-02-14 03:38:31 +00:00
parent 692acf1438
commit 3cfad7ee25
2 changed files with 36 additions and 1 deletions

View File

@ -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]; }

View File

@ -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>