summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-06-03 23:27:44 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-06-03 23:27:44 +0000
commit760520bcb78d9b91b3bbf74704d9cb3ba6b5c5b6 (patch)
tree1ff10bb9dab6817ca90dcf831870df27b85a0389 /clang/test
parent08d84943afdce3e73c256e273d2697002303f9f7 (diff)
downloadbcm5719-llvm-760520bcb78d9b91b3bbf74704d9cb3ba6b5c5b6.tar.gz
bcm5719-llvm-760520bcb78d9b91b3bbf74704d9cb3ba6b5c5b6.zip
Add __builtin_operator_new and __builtin_operator_delete, which act like calls
to the normal non-placement ::operator new and ::operator delete, but allow optimizations like new-expressions and delete-expressions do. llvm-svn: 210137
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenCXX/new.cpp9
-rw-r--r--clang/test/Sema/builtins.c5
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/new.cpp b/clang/test/CodeGenCXX/new.cpp
index 26db84225f1..d8aa258cbbf 100644
--- a/clang/test/CodeGenCXX/new.cpp
+++ b/clang/test/CodeGenCXX/new.cpp
@@ -326,6 +326,15 @@ namespace N3664 {
}
}
+namespace builtins {
+ // CHECK-LABEL: define void @_ZN8builtins1fEv
+ void f() {
+ // CHECK: call noalias i8* @_Znwm(i64 4) [[ATTR_BUILTIN_NEW]]
+ // CHECK: call void @_ZdlPv({{.*}}) [[ATTR_BUILTIN_DELETE]]
+ __builtin_operator_delete(__builtin_operator_new(4));
+ }
+}
+
// CHECK-DAG: attributes [[ATTR_NOBUILTIN]] = {{[{].*}} nobuiltin {{.*[}]}}
// CHECK-DAG: attributes [[ATTR_NOBUILTIN_NOUNWIND]] = {{[{].*}} nobuiltin nounwind {{.*[}]}}
diff --git a/clang/test/Sema/builtins.c b/clang/test/Sema/builtins.c
index 8ca33c8e752..7647100bc27 100644
--- a/clang/test/Sema/builtins.c
+++ b/clang/test/Sema/builtins.c
@@ -197,3 +197,8 @@ void no_ms_builtins() {
__noop(1); // expected-warning {{implicit declaration}}
__debugbreak(); // expected-warning {{implicit declaration}}
}
+
+void unavailable() {
+ __builtin_operator_new(0); // expected-error {{'__builtin_operator_new' is only available in C++}}
+ __builtin_operator_delete(0); // expected-error {{'__builtin_operator_delete' is only available in C++}}
+}
OpenPOWER on IntegriCloud