[llvm] 4f614a8 - [AMDGPULowerBufferFatPointers] Use typeIncompatible() (#122902)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 14 07:55:54 PST 2025


Author: Nikita Popov
Date: 2025-01-14T16:55:49+01:00
New Revision: 4f614a8f7c8b92f0348109521833dc3ef7ea8a4a

URL: https://github.com/llvm/llvm-project/commit/4f614a8f7c8b92f0348109521833dc3ef7ea8a4a
DIFF: https://github.com/llvm/llvm-project/commit/4f614a8f7c8b92f0348109521833dc3ef7ea8a4a.diff

LOG: [AMDGPULowerBufferFatPointers] Use typeIncompatible() (#122902)

Use typeIncompatible() to drop attributes incompatible with the new
argument/return type, instead of keeping a custom list.

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp
index 8c6ea5f9bd0f81..657a406e9f7056 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp
@@ -1674,14 +1674,6 @@ static Function *moveFunctionAdaptingType(Function *OldF, FunctionType *NewTy,
     }
   }
 
-  AttributeMask PtrOnlyAttrs;
-  for (auto K :
-       {Attribute::Dereferenceable, Attribute::DereferenceableOrNull,
-        Attribute::NoAlias, Attribute::NoCapture, Attribute::NoFree,
-        Attribute::NonNull, Attribute::NullPointerIsValid, Attribute::ReadNone,
-        Attribute::ReadOnly, Attribute::WriteOnly}) {
-    PtrOnlyAttrs.addAttribute(K);
-  }
   SmallVector<AttributeSet> ArgAttrs;
   AttributeList OldAttrs = OldF->getAttributes();
 
@@ -1697,12 +1689,16 @@ static Function *moveFunctionAdaptingType(Function *OldF, FunctionType *NewTy,
     AttributeSet ArgAttr = OldAttrs.getParamAttrs(I);
     // Intrinsics get their attributes fixed later.
     if (OldArgTy != NewArgTy && !IsIntrinsic)
-      ArgAttr = ArgAttr.removeAttributes(NewF->getContext(), PtrOnlyAttrs);
+      ArgAttr = ArgAttr.removeAttributes(
+          NewF->getContext(),
+          AttributeFuncs::typeIncompatible(NewArgTy, ArgAttr));
     ArgAttrs.push_back(ArgAttr);
   }
   AttributeSet RetAttrs = OldAttrs.getRetAttrs();
   if (OldF->getReturnType() != NewF->getReturnType() && !IsIntrinsic)
-    RetAttrs = RetAttrs.removeAttributes(NewF->getContext(), PtrOnlyAttrs);
+    RetAttrs = RetAttrs.removeAttributes(
+        NewF->getContext(),
+        AttributeFuncs::typeIncompatible(NewF->getReturnType(), RetAttrs));
   NewF->setAttributes(AttributeList::get(
       NewF->getContext(), OldAttrs.getFnAttrs(), RetAttrs, ArgAttrs));
   return NewF;


        


More information about the llvm-commits mailing list