diff options
| author | Nuno Lopes <nunoplopes@sapo.pt> | 2009-12-16 16:59:22 +0000 |
|---|---|---|
| committer | Nuno Lopes <nunoplopes@sapo.pt> | 2009-12-16 16:59:22 +0000 |
| commit | 13c88c7269f7c2dac47d57534b51480e58e054e5 (patch) | |
| tree | 549e13cd71b70b44e1ddb418d9ee60e41eb5b59d /clang/test/CodeGenCXX | |
| parent | 59ae3c854240108b28a0b3cb0aa1e9fb4c90e5ff (diff) | |
| download | bcm5719-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.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/operator-new.cpp | 21 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/static-init.cpp | 2 |
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; } |

