diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp index 4a9437b37aa39..d610fbf9bb06b 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp @@ -1213,7 +1213,8 @@ bool AMDGPUSwLowerLDS::run() { removeFnAttrFromReachable( CG, Func, {"amdgpu-no-workitem-id-x", "amdgpu-no-workitem-id-y", - "amdgpu-no-workitem-id-z", "amdgpu-no-heap-ptr"}); + "amdgpu-no-workitem-id-z", "amdgpu-no-heap-ptr", + "amdgpu-no-flat-scratch-init"}); if (!LDSParams.IndirectAccess.StaticLDSGlobals.empty() || !LDSParams.IndirectAccess.DynamicLDSGlobals.empty()) removeFnAttrFromReachable(CG, Func, {"amdgpu-no-lds-kernel-id"}); diff --git a/llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-no-scratch-init.ll b/llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-no-scratch-init.ll new file mode 100644 index 0000000000000..660b0f32590ba --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-no-scratch-init.ll @@ -0,0 +1,18 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 4 +; RUN: opt < %s -passes=amdgpu-sw-lower-lds -S -amdgpu-asan-instrument-lds=false -mtriple=amdgcn-amd-amdhsa | FileCheck %s +; RUN: llc < %s -enable-new-pm -stop-after=amdgpu-sw-lower-lds -amdgpu-asan-instrument-lds=false -mtriple=amdgcn-amd-amdhsa | FileCheck %s + +; Test to check if amdgpu-no-flat-scratch-init is removed from the kernel. +@lds_1 = internal addrspace(3) global [1 x i8] poison, align 4 + +define amdgpu_kernel void @k0() #0 { + store i8 7, ptr addrspace(3) @lds_1, align 4 + ret void +} + +attributes #0 = { sanitize_address "amdgpu-no-flat-scratch-init"} + +!llvm.module.flags = !{!0} +!0 = !{i32 4, !"nosanitize_address", i32 1} + +; CHECK: attributes #[[ATTR0:.*]] = { sanitize_address "amdgpu-lds-size"="8" }