[llvm] ba7cc56 - [Attributor] Port AANoRecurse to the isImpliedByIR interface
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 9 16:05:09 PDT 2023
Author: Johannes Doerfert
Date: 2023-07-09T16:04:22-07:00
New Revision: ba7cc56782dbf4a26c0a043dd33c7949366e2b0d
URL: https://github.com/llvm/llvm-project/commit/ba7cc56782dbf4a26c0a043dd33c7949366e2b0d
DIFF: https://github.com/llvm/llvm-project/commit/ba7cc56782dbf4a26c0a043dd33c7949366e2b0d.diff
LOG: [Attributor] Port AANoRecurse to the isImpliedByIR interface
Added:
Modified:
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/lib/Transforms/IPO/AttributorAttributes.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp
index 732aa99923051c..db094b0ea33598 100644
--- a/llvm/lib/Transforms/IPO/Attributor.cpp
+++ b/llvm/lib/Transforms/IPO/Attributor.cpp
@@ -3294,8 +3294,7 @@ void Attributor::identifyDefaultAbstractAttributes(Function &F) {
checkAndQueryIRAttr<Attribute::NoReturn, AANoReturn>(FPos, FnAttrs);
// Every function might be "no-recurse".
- if (!Attrs.hasFnAttr(Attribute::NoRecurse))
- getOrCreateAAFor<AANoRecurse>(FPos);
+ checkAndQueryIRAttr<Attribute::NoRecurse, AANoRecurse>(FPos, FnAttrs);
// Every function can be "non-convergent".
if (Attrs.hasFnAttr(Attribute::Convergent))
diff --git a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
index 6f45d9497ddbb9..c87ff1d0a59858 100644
--- a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+++ b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
@@ -3016,6 +3016,13 @@ namespace {
struct AANoRecurseImpl : public AANoRecurse {
AANoRecurseImpl(const IRPosition &IRP, Attributor &A) : AANoRecurse(IRP, A) {}
+ /// See AbstractAttribute::initialize(...).
+ void initialize(Attributor &A) override {
+ bool IsKnown;
+ assert(!AA::hasAssumedIRAttr<Attribute::NoRecurse>(
+ A, nullptr, getIRPosition(), DepClassTy::NONE, IsKnown));
+ }
+
/// See AbstractAttribute::getAsStr()
const std::string getAsStr(Attributor *A) const override {
return getAssumed() ? "norecurse" : "may-recurse";
More information about the llvm-commits
mailing list