The association between kernel and struct is done by symbol name. This doesn't work robustly for anonymous kernels as shown by the modified test case. An alternative association between function and struct can be constructed if necessary, probably though metadata, but on the basis that we currently miscompile anonymous kernels and that they are difficult to construct from application code and difficult to call from the runtime, this patch makes it a fatal error for now. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D134741
13 lines
468 B
LLVM
13 lines
468 B
LLVM
; RUN: not --crash opt -S -mtriple=amdgcn-- -amdgpu-lower-module-lds < %s 2>&1 | FileCheck %s
|
|
; RUN: not --crash opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s 2>&1 | FileCheck %s
|
|
|
|
@var1 = addrspace(3) global i32 undef, align 8
|
|
|
|
; CHECK: LLVM ERROR: Anonymous kernels cannot use LDS variables
|
|
define amdgpu_kernel void @0() {
|
|
%val0 = load i32, i32 addrspace(3)* @var1
|
|
%val1 = add i32 %val0, 4
|
|
store i32 %val1, i32 addrspace(3)* @var1
|
|
ret void
|
|
}
|