summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorYaxun Liu <Yaxun.Liu@amd.com>2018-06-05 15:11:02 +0000
committerYaxun Liu <Yaxun.Liu@amd.com>2018-06-05 15:11:02 +0000
commit6328f9a988946978501cdb044294fcd5d675b2f7 (patch)
tree8ad662bedcea15ad31c93c467ae712e023caf66d /clang/test
parent191bc71541a69cc872a8f313d00b96268b12b0ae (diff)
downloadbcm5719-llvm-6328f9a988946978501cdb044294fcd5d675b2f7.tar.gz
bcm5719-llvm-6328f9a988946978501cdb044294fcd5d675b2f7.zip
[CUDA][HIP] Do not emit type info when compiling for device
CUDA/HIP does not support RTTI on device side, therefore there is no point of emitting type info when compiling for device. Emitting type info for device not only clutters the IR with useless global variables, but also causes undefined symbol at linking since vtable for cxxabiv1::class_type_info has external linkage. Differential Revision: https://reviews.llvm.org/D47694 llvm-svn: 334021
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGenCUDA/device-vtable.cu11
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/test/CodeGenCUDA/device-vtable.cu b/clang/test/CodeGenCUDA/device-vtable.cu
index 9730e404caa..a7307dcdaf9 100644
--- a/clang/test/CodeGenCUDA/device-vtable.cu
+++ b/clang/test/CodeGenCUDA/device-vtable.cu
@@ -19,7 +19,9 @@ struct H {
//CHECK-HOST: @_ZTV1H =
//CHECK-HOST-SAME: @_ZN1H6methodEv
//CHECK-DEVICE-NOT: @_ZTV1H =
-
+//CHECK-DEVICE-NOT: @_ZTVN10__cxxabiv117__class_type_infoE
+//CHECK-DEVICE-NOT: @_ZTS1H
+//CHECK-DEVICE-NOT: @_ZTI1H
struct D {
__device__ virtual void method();
};
@@ -27,7 +29,9 @@ struct D {
//CHECK-DEVICE: @_ZTV1D
//CHECK-DEVICE-SAME: @_ZN1D6methodEv
//CHECK-HOST-NOT: @_ZTV1D
-
+//CHECK-DEVICE-NOT: @_ZTVN10__cxxabiv117__class_type_infoE
+//CHECK-DEVICE-NOT: @_ZTS1D
+//CHECK-DEVICE-NOT: @_ZTI1D
// This is the case with mixed host and device virtual methods. It's
// impossible to emit a valid vtable in that case because only host or
// only device methods would be available during host or device
@@ -45,6 +49,9 @@ struct HD {
// CHECK-HOST-NOT: @_ZN2HD8d_methodEv
// CHECK-HOST-SAME: null
// CHECK-BOTH-SAME: ]
+// CHECK-DEVICE-NOT: @_ZTVN10__cxxabiv117__class_type_infoE
+// CHECK-DEVICE-NOT: @_ZTS2HD
+// CHECK-DEVICE-NOT: @_ZTI2HD
void H::method() {}
//CHECK-HOST: define void @_ZN1H6methodEv
OpenPOWER on IntegriCloud