aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
diff options
context:
space:
mode:
authorJon Chesterfield <jonathanchesterfield@gmail.com>2023-07-13 11:32:02 +0100
committerJon Chesterfield <jonathanchesterfield@gmail.com>2023-07-13 11:32:03 +0100
commit9418c40af7ec6913112b82d6f1d6e8a8c43af6c0 (patch)
tree8f40188d559b156250b0ed489f52fe4b40aab6e5 /llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
parent8cc440b3e7bfc248a31ffad0a7b32dceb6c24470 (diff)
downloadllvm-9418c40af7ec6913112b82d6f1d6e8a8c43af6c0.zip
llvm-9418c40af7ec6913112b82d6f1d6e8a8c43af6c0.tar.gz
llvm-9418c40af7ec6913112b82d6f1d6e8a8c43af6c0.tar.bz2
[amdgpu][lds] Raise an explicit unimplemented error on absolute address LDS variables
These aren't implemented. They could be at moderate implementation complexity. Raising an error is better than silently miscompiling. Patching now because the patch at D155125 is a step towards using this metadata more extensively as part of the lowering path and that will interact badly with input variables with this annotation. Lowering user defined variables at specific addresses would drop this error, put them at the requested position in the frame during this pass, and then use the same codegen that will be used for the kernel specific struct shortly. Reviewed By: jmmartinez Differential Revision: https://reviews.llvm.org/D155132
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
index 4cd138e..0c9a44b 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
@@ -354,6 +354,11 @@ public:
continue;
}
+ if (GV.isAbsoluteSymbolRef()) {
+ report_fatal_error(
+ "LDS variables with absolute addresses are unimplemented.");
+ }
+
for (User *V : GV.users()) {
if (auto *I = dyn_cast<Instruction>(V)) {
Function *F = I->getFunction();