================
@@ -1427,8 +1429,20 @@ static void AddParamAndFnBasicAttributes(const CallBase
&CB,
ValidExactParamAttrs[ArgNo].getAlignment().valueOrOne())
AL = AL.removeParamAttribute(Context, I, Attribute::Alignment);
+ auto ExistingRange = AL.getParamRange(I);
AL = AL.addParamAttributes(Context, I, ValidExactParamAttrs[ArgNo]);
+ // For range we use the exact intersection.
+ if (ExistingRange.has_value()) {
+ if (auto NewRange = ValidExactParamAttrs[ArgNo].getRange()) {
+ auto CombinedRange =
ExistingRange->exactIntersectWith(*NewRange);
+ if (!CombinedRange.has_value())
+ CombinedRange =
+ ConstantRange::getEmpty(NewRange->getBitWidth());
+ AL = AL.removeParamAttribute(Context, I, Attribute::Range);
----------------
andjo403 wrote:
hmm if it have not missed something in the end this will be called
https://github.com/llvm/llvm-project/blob/3591da9f1ccbd8b19fef4814f96638dbbe9c2b40/llvm/lib/IR/Attributes.cpp#L1782-L1790
so swap will be called and replace the current value or?
https://github.com/llvm/llvm-project/pull/91101
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits