From 0049eacc571e37a425ebb973a87e56d3ddf6ee66 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sat, 14 Feb 2015 03:38:31 +0000 Subject: [PATCH] Update cxx_dr_status to cover dr1748 and add test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229229 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CXX/drs/dr1748.cpp | 35 +++++++++++++++++++++++++++++++++++ www/cxx_dr_status.html | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/CXX/drs/dr1748.cpp diff --git a/test/CXX/drs/dr1748.cpp b/test/CXX/drs/dr1748.cpp new file mode 100644 index 0000000000..7e04f402d2 --- /dev/null +++ b/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/www/cxx_dr_status.html b/www/cxx_dr_status.html index 03afa35c92..58450c04fd 100644 --- a/www/cxx_dr_status.html +++ b/www/cxx_dr_status.html @@ -10303,7 +10303,7 @@ and POD class 1748 DR Placement new with a null pointer - Unknown + SVN 1749 -- 2.40.0