[llvm] [AMDGPULowerBufferFatPointers] Use typeIncompatible() (PR #122902)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 14 05:47:51 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Nikita Popov (nikic)
<details>
<summary>Changes</summary>
Use typeIncompatible() to drop attributes incompatible with the new argument/return type, instead of keeping a custom list.
---
Full diff: https://github.com/llvm/llvm-project/pull/122902.diff
1 Files Affected:
- (modified) llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp (+6-10)
``````````diff
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;
``````````
</details>
https://github.com/llvm/llvm-project/pull/122902
More information about the llvm-commits
mailing list