From f37f3d35eb4f3bf4a69cfc4eedaea1caa43d096c Mon Sep 17 00:00:00 2001 From: Justin Holewinski Date: Mon, 2 Feb 2015 21:05:49 +0000 Subject: When generating llvm.used, we may need an addrspacecast instead of a bitcast. Summary: This is especially important for targets that use multiple address spaces, and commonly place global variables in address spaces other than zero. Fixes PR22383 Test Plan: New test case added: llvm-used.cu Reviewers: jingyue Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7345 llvm-svn: 227861 --- clang/test/CodeGenCUDA/llvm-used.cu | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 clang/test/CodeGenCUDA/llvm-used.cu (limited to 'clang/test/CodeGenCUDA') diff --git a/clang/test/CodeGenCUDA/llvm-used.cu b/clang/test/CodeGenCUDA/llvm-used.cu new file mode 100644 index 00000000000..44666a91c3b --- /dev/null +++ b/clang/test/CodeGenCUDA/llvm-used.cu @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -emit-llvm %s -o - -fcuda-is-device -triple nvptx64-unknown-unknown | FileCheck %s + + +// Make sure we emit the proper addrspacecast for llvm.used. PR22383 exposed an +// issue where we were generating a bitcast instead of an addrspacecast. + +// CHECK: @llvm.used = appending global [1 x i8*] [i8* addrspacecast (i8 addrspace(1)* bitcast ([0 x i32] addrspace(1)* @a to i8 addrspace(1)*) to i8*)], section "llvm.metadata" +__attribute__((device)) __attribute__((__used__)) int a[] = {}; -- cgit v1.2.3