summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX
diff options
context:
space:
mode:
authorNuno Lopes <nunoplopes@sapo.pt>2009-12-16 16:59:22 +0000
committerNuno Lopes <nunoplopes@sapo.pt>2009-12-16 16:59:22 +0000
commit13c88c7269f7c2dac47d57534b51480e58e054e5 (patch)
tree549e13cd71b70b44e1ddb418d9ee60e41eb5b59d /clang/test/CodeGenCXX
parent59ae3c854240108b28a0b3cb0aa1e9fb4c90e5ff (diff)
downloadbcm5719-llvm-13c88c7269f7c2dac47d57534b51480e58e054e5.tar.gz
bcm5719-llvm-13c88c7269f7c2dac47d57534b51480e58e054e5.zip
implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.
feel free to chage the name to this lengthy argument llvm-svn: 91543
Diffstat (limited to 'clang/test/CodeGenCXX')
-rw-r--r--clang/test/CodeGenCXX/new.cpp2
-rw-r--r--clang/test/CodeGenCXX/operator-new.cpp21
-rw-r--r--clang/test/CodeGenCXX/static-init.cpp2
3 files changed, 23 insertions, 2 deletions
diff --git a/clang/test/CodeGenCXX/new.cpp b/clang/test/CodeGenCXX/new.cpp
index f3c14a78d36..6ea12eb5f6b 100644
--- a/clang/test/CodeGenCXX/new.cpp
+++ b/clang/test/CodeGenCXX/new.cpp
@@ -92,7 +92,7 @@ A* t10() {
struct B { };
void t11() {
- // CHECK: call i8* @_Znwm
+ // CHECK: call noalias i8* @_Znwm
// CHECK: call void @llvm.memset.i64(
B* b = new B();
}
diff --git a/clang/test/CodeGenCXX/operator-new.cpp b/clang/test/CodeGenCXX/operator-new.cpp
new file mode 100644
index 00000000000..6becaae72cb
--- /dev/null
+++ b/clang/test/CodeGenCXX/operator-new.cpp
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o %t-1.ll %s
+// RUN: FileCheck -check-prefix SANE --input-file=%t-1.ll %s
+// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -fno-assume-sane-operator-new -o %t-2.ll %s
+// RUN: FileCheck -check-prefix SANENOT --input-file=%t-2.ll %s
+
+
+class teste {
+ int A;
+ teste() : A(2) {}
+ void* operator new(unsigned) {return ::new teste();}
+};
+
+void f1() {
+ new teste();
+}
+
+// CHECK-SANE: define linkonce_odr noalias i8* @_ZN5testenwEj(
+// CHECK-SANE: declare noalias i8* @_Znwj(
+
+// CHECK-SANENOT: define linkonce_odr i8* @_ZN5testenwEj(
+// CHECK-SANENOT: declare i8* @_Znwj(
diff --git a/clang/test/CodeGenCXX/static-init.cpp b/clang/test/CodeGenCXX/static-init.cpp
index 2ad6e9411f4..cbd90e78940 100644
--- a/clang/test/CodeGenCXX/static-init.cpp
+++ b/clang/test/CodeGenCXX/static-init.cpp
@@ -11,7 +11,7 @@ void f() {
}
void g() {
- // CHECK: call i8* @_Znwm(i64 1)
+ // CHECK: call noalias i8* @_Znwm(i64 1)
// CHECK: call void @_ZN1AC1Ev(
static A& a = *new A;
}
OpenPOWER on IntegriCloud