summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp46
-rw-r--r--clang/test/CodeGenCXX/implicit-allocation-functions.cpp26
-rw-r--r--clang/test/CodeGenCXX/pr21754.cpp16
3 files changed, 33 insertions, 55 deletions
diff --git a/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp b/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
index 647a64097a7..1d021a759fe 100644
--- a/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
+++ b/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
@@ -1,6 +1,8 @@
-// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKUND
+// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
+// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -o - -DINLIB | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKUND
// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -fdefine-sized-deallocation -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKDEF
-// RUN: %clang_cc1 -std=c++11 -fsized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKUND
+// RUN: %clang_cc1 -std=c++11 -fsized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
+// RUN: %clang_cc1 -std=c++11 -fsized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - -DINLIB | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKUND
// RUN: %clang_cc1 -std=c++11 -fsized-deallocation -fdefine-sized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKDEF
// RUN: %clang_cc1 -std=c++11 %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -fno-sized-deallocation -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
@@ -10,6 +12,11 @@
typedef decltype(sizeof(0)) size_t;
+#ifdef INLIB
+void operator delete(void *, size_t) noexcept;
+void operator delete[](void *, size_t) noexcept;
+#endif
+
typedef int A;
struct B { int n; };
struct C { ~C() {} };
@@ -47,92 +54,63 @@ template void del<F>();
D::D() {}
// CHECK-LABEL: define weak_odr void @_Z3delIiEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 4)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
//
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 4)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
// CHECKDEF-LABEL: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECKDEF: call void @_ZdlPv(i8* %0)
-// CHECKUND-LABEL: declare extern_weak void @_ZdlPvm(i8*
+// CHECKUND-LABEL: declare void @_ZdlPvm(i8*
// CHECK-LABEL: define weak_odr void @_Z3delI1BEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 4)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
//
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 4)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
// CHECK-LABEL: define weak_odr void @_Z3delI1CEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 1)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK: mul i64 1, %{{[^ ]*}}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKUND: call void @_ZdaPv(i8* %{{[^ ]*}})
//
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 1)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK: mul i64 1, %{{[^ ]*}}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKUND: call void @_ZdaPv(i8* %{{[^ ]*}})
// CHECKDEF-LABEL: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECKDEF: call void @_ZdaPv(i8* %0)
-// CHECKUND-LABEL: declare extern_weak void @_ZdaPvm(i8*
+// CHECKUND-LABEL: declare void @_ZdaPvm(i8*
// CHECK-LABEL: define weak_odr void @_Z3delI1DEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 8)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK: mul i64 8, %{{[^ ]*}}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKUND: call void @_ZdaPv(i8* %{{[^ ]*}})
//
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
-// CHECKDEF-NOT: Zdl
+// CHECK-NOT: Zdl
// CHECK: call void %{{.*}}
// CHECK-NOT: Zdl
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK: mul i64 8, %{{[^ ]*}}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKUND: call void @_ZdaPv(i8* %{{[^ ]*}})
// CHECK-LABEL: define weak_odr void @_Z3delI1EEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 1)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
//
// CHECK: call void @_ZN1EdlEPv(i8* %{{[^ ]*}})
// CHECK: call void @_ZN1EdaEPv(i8* %{{[^ ]*}})
// CHECK-LABEL: define weak_odr void @_Z3delI1FEvv()
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 1)
-// CHECKUND: call void @_ZdlPv(i8* %{{[^ ]*}})
-// CHECKUND: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK: mul i64 1, %{{[^ ]*}}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKUND: call void @_ZdaPv(i8* %{{[^ ]*}})
//
// CHECK: call void @_ZN1FdlEPvm(i8* %{{[^ ]*}}, i64 1)
// CHECK: mul i64 1, %{{[^ ]*}}
diff --git a/clang/test/CodeGenCXX/implicit-allocation-functions.cpp b/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
index 3b66a0772b8..d4e9841c1c6 100644
--- a/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
+++ b/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
@@ -1,15 +1,21 @@
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++11 %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK11
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++11 -fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID -check-prefix=CHECK11
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -fno-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK11
-// RU N: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14UND
-// RU N: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14UND
-// RU N: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -fdefine-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
-// RU N: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -fdefine-sized-deallocation -fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
-// RU N: %clang_cc1 -emit-llvm -triple x86_64-apple-macosx -o - -std=c++14 -fdefine-sized-deallocation %s | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14DEFNOCOMDAT
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -DINLIB -fno-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK11
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -DINLIB %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14UND
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -DINLIB -fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14UND
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -DINLIB -fdefine-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14 -DINLIB -fdefine-sized-deallocation -fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-macosx -o - -std=c++14 -DINLIB -fdefine-sized-deallocation %s | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14 -check-prefix=CHECK14DEFNOCOMDAT
// PR22419: Implicit sized deallocation functions always have default visibility.
// Generalized to all implicit allocation functions.
+#ifdef INLIB
+typedef decltype(sizeof(0)) size_t;
+void operator delete(void *, size_t) noexcept;
+void operator delete[](void *, size_t) noexcept;
+#endif
+
// CHECK14-DAG: %struct.A = type { i8 }
struct A { };
@@ -22,9 +28,7 @@ void foo(A* is) {
is = new A();
// CHECK11-DAG: call void @_ZdlPv(i8* %{{.+}})
- // CHECK14UND-DAG: br i1 icmp ne (void (i8*, i64)* @_ZdlPvm, void (i8*, i64)* null),
// CHECK14-DAG: call void @_ZdlPvm(i8* %{{.+}}, i64 1)
- // CHECK14UND-DAG: call void @_ZdlPv(i8* %{{.+}})
delete is;
}
@@ -32,7 +36,7 @@ void foo(A* is) {
// CHECK11-DAG: declare void @_ZdlPv(i8*)
// CHECK14-DAG: declare noalias i8* @_Znwm(i64)
-// CHECK14UND-DAG: declare extern_weak void @_ZdlPvm(i8*, i64)
+// CHECK14UND-DAG: declare void @_ZdlPvm(i8*, i64)
// CHECK14DEFCOMDAT-DAG: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}} comdat {
// CHECK14DEFCOMDAT-DAG: declare void @_ZdlPv(i8*)
// CHECK14DEFNOCOMDAT-DAG: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}} {
@@ -50,9 +54,7 @@ void f(B *p) {
p = new B[5];
// CHECK11-DAG: call void @_ZdaPv(i8* %{{.+}})
- // CHECK14UND-DAG: br i1 icmp ne (void (i8*, i64)* @_ZdaPvm, void (i8*, i64)* null),
// CHECK14-DAG: call void @_ZdaPvm(i8* %{{.+}}, i64 %{{.+}})
- // CHECK14UND-DAG: call void @_ZdaPv(i8* %{{.+}})
delete[] p;
}
@@ -60,7 +62,7 @@ void f(B *p) {
// CHECK11-DAG: declare void @_ZdaPv(i8*)
// CHECK14-DAG: declare noalias i8* @_Znam(i64)
-// CHECK14UND-DAG: declare extern_weak void @_ZdaPvm(i8*, i64)
+// CHECK14UND-DAG: declare void @_ZdaPvm(i8*, i64)
// CHECK14DEF-DAG: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} comdat {
// CHECK14DEF-DAG: declare void @_ZdaPv(i8*)
// CHECK14DEFNOCOMDAT-DAG: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} {
diff --git a/clang/test/CodeGenCXX/pr21754.cpp b/clang/test/CodeGenCXX/pr21754.cpp
index 61c1969860c..65ee76559ae 100644
--- a/clang/test/CodeGenCXX/pr21754.cpp
+++ b/clang/test/CodeGenCXX/pr21754.cpp
@@ -1,13 +1,11 @@
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKUND
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKDEF
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fno-sized-deallocation -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKNO
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKUND
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKDEF
-// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -o - %s 2>&1 | FileCheck %s --check-prefix=CHECKNO
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fno-sized-deallocation -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -o - %s 2>&1 | FileCheck %s
void operator delete(void*, unsigned long) throw() __attribute__((alias("foo")));
extern "C" void foo(void*, unsigned long) {}
-// CHECKUND-DAG: @_ZdlPvm = weak alias void (i8*, i64)* @foo
-// CHECKDEF-DAG: @_ZdlPvm = alias void (i8*, i64)* @foo
-// CHECKNO-DAG: @_ZdlPvm = alias void (i8*, i64)* @foo
+// CHECK-DAG: @_ZdlPvm = alias void (i8*, i64)* @foo
OpenPOWER on IntegriCloud