AMDGPU: Error on LDS global address in functions

These won't work as expected now, so error on them to avoid
wasting time debugging this in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334269 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matt Arsenault
2018-06-08 08:05:54 +00:00
parent 3006b374d6
commit 0aedafefd1
2 changed files with 18 additions and 1 deletions
+9 -1
View File
@@ -1272,7 +1272,15 @@ SDValue AMDGPUTargetLowering::LowerGlobalAddress(AMDGPUMachineFunction* MFI,
GlobalAddressSDNode *G = cast<GlobalAddressSDNode>(Op);
const GlobalValue *GV = G->getGlobal();
if (G->getAddressSpace() == AMDGPUASI.LOCAL_ADDRESS) {
if (G->getAddressSpace() == AMDGPUASI.LOCAL_ADDRESS ||
G->getAddressSpace() == AMDGPUASI.REGION_ADDRESS) {
if (!MFI->isEntryFunction()) {
const Function &Fn = DAG.getMachineFunction().getFunction();
DiagnosticInfoUnsupported BadLDSDecl(
Fn, "local memory global used by non-kernel function", SDLoc(Op).getDebugLoc());
DAG.getContext()->diagnose(BadLDSDecl);
}
// XXX: What does the value of G->getOffset() mean?
assert(G->getOffset() == 0 &&
"Do not know what to do with an non-zero offset");
@@ -0,0 +1,9 @@
; RUN: not llc -mtriple=amdgcn-amd-amdhsa -o /dev/null %s 2>&1 | FileCheck %s
@lds = internal addrspace(3) global float undef, align 4
; CHECK: error: <unknown>:0:0: in function func_use_lds_global void (): local memory global used by non-kernel function
define void @func_use_lds_global() {
store float 0.0, float addrspace(3)* @lds, align 4
ret void
}