forked from OSchip/llvm-project
[HIP] Fix visibility for 'extern' device variables.
Summary: - Fix a bug which misses the change for a variable to be set with target-specific attributes. Reviewers: yaxunl Subscribers: jvesely, nhaehnle, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D63020
This commit is contained in:
parent
6cd47f9dd7
commit
0a220de9e9
|
@ -3575,6 +3575,9 @@ CodeGenModule::GetOrCreateLLVMGlobal(StringRef MangledName,
|
|||
}
|
||||
}
|
||||
|
||||
if (GV->isDeclaration())
|
||||
getTargetCodeGenInfo().setTargetAttributes(D, GV, *this);
|
||||
|
||||
LangAS ExpectedAS =
|
||||
D ? D->getType().getAddressSpace()
|
||||
: (LangOpts.OpenCL ? LangAS::opencl_global : LangAS::Default);
|
||||
|
@ -3584,9 +3587,6 @@ CodeGenModule::GetOrCreateLLVMGlobal(StringRef MangledName,
|
|||
return getTargetCodeGenInfo().performAddrSpaceCast(*this, GV, AddrSpace,
|
||||
ExpectedAS, Ty);
|
||||
|
||||
if (GV->isDeclaration())
|
||||
getTargetCodeGenInfo().setTargetAttributes(D, GV, *this);
|
||||
|
||||
return GV;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,16 @@
|
|||
__constant__ int c;
|
||||
__device__ int g;
|
||||
|
||||
// CHECK-DEFAULT: @e = external addrspace(1) global
|
||||
// CHECK-PROTECTED: @e = external protected addrspace(1) global
|
||||
// CHECK-HIDDEN: @e = external protected addrspace(1) global
|
||||
extern __device__ int e;
|
||||
|
||||
// dummy one to hold reference to `e`.
|
||||
__device__ int f() {
|
||||
return e;
|
||||
}
|
||||
|
||||
// CHECK-DEFAULT: define amdgpu_kernel void @_Z3foov()
|
||||
// CHECK-PROTECTED: define protected amdgpu_kernel void @_Z3foov()
|
||||
// CHECK-HIDDEN: define protected amdgpu_kernel void @_Z3foov()
|
||||
|
|
Loading…
Reference in New Issue