[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