[llvm] [IR][Attributes] Take "best" from Callbase/Call Function when getting attributes (PR #112985)
Andreas Jonson via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 18 15:01:00 PDT 2024
================
@@ -374,10 +374,39 @@ FPClassTest CallBase::getParamNoFPClass(unsigned i) const {
}
std::optional<ConstantRange> CallBase::getRange() const {
- const Attribute RangeAttr = getRetAttr(llvm::Attribute::Range);
- if (RangeAttr.isValid())
- return RangeAttr.getRange();
- return std::nullopt;
+ Attribute CBRangeAttr = getRetAttr(llvm::Attribute::Range);
+ Attribute FnRangeAttr{};
+ if (const Function *F = getCalledFunction())
+ FnRangeAttr = F->getAttributes().getRetAttr(llvm::Attribute::Range);
+ if (!CBRangeAttr.isValid() || !FnRangeAttr.isValid()) {
+ if (CBRangeAttr.isValid())
+ return CBRangeAttr.getRange();
+ if (FnRangeAttr.isValid())
+ return FnRangeAttr.getRange();
+ return std::nullopt;
+ }
+ return CBRangeAttr.getRange().intersectWith(FnRangeAttr.getRange());
+}
+
+MaybeAlign CallBase::getRetAlign() const {
+ MaybeAlign CBAlign = Attrs.getRetAlignment();
+ MaybeAlign FNAlign = CBAlign;
----------------
andjo403 wrote:
Why init FNAlign to CBAlign instead of letting it be the default value?
https://github.com/llvm/llvm-project/pull/112985
More information about the llvm-commits
mailing list