[PATCH] D94585: [IndirectFunctions] Skip propagating attributes to address taken functions
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 13 06:17:51 PST 2021
arsenm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUPropagateAttributes.cpp:240-245
+ // Skip propagating attributes to address taken functions
+ // and just set features.
+ auto Features = TM->getSubtargetImpl(F)->getFeatureBits();
+ FeatureBitset FB(Features & ~TargetFeatures);
+ setFeatures(F, FB);
+ continue;
----------------
Propagating the subtarget features is broken. The cases that need this both should be set up front, or shouldn't be subtarget features
================
Comment at: llvm/test/CodeGen/AMDGPU/propagate-attributes-direct-indirect.ll:41
+
+; CHECK: define protected amdgpu_kernel void @_Z22switch_indirect_kernelPfi(float addrspace(1)* %result.coerce, i32 %type) #2 {
+define protected amdgpu_kernel void @_Z22switch_indirect_kernelPfi(float addrspace(1)* %result.coerce, i32 %type) #1 {
----------------
CHECK-LABEL, and don't need the arguments/attribute group
================
Comment at: llvm/test/CodeGen/AMDGPU/propagate-attributes-direct-indirect.ll:44-64
+ %result = alloca float*, align 8, addrspace(5)
+ %result.ascast = addrspacecast float* addrspace(5)* %result to float**
+ %result.addr = alloca float*, align 8, addrspace(5)
+ %result.addr.ascast = addrspacecast float* addrspace(5)* %result.addr to float**
+ %type.addr = alloca i32, align 4, addrspace(5)
+ %type.addr.ascast = addrspacecast i32 addrspace(5)* %type.addr to i32*
+ %fn = alloca float (i32)*, align 8, addrspace(5)
----------------
This can be simplified. You shouldn't need allocas or addrspacecasts
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D94585/new/
https://reviews.llvm.org/D94585
More information about the llvm-commits
mailing list