diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp index 648f4e64a4d2..4a6719741719 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp @@ -12,7 +12,6 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Utils/CodeMoverUtils.h" -#include "llvm/ADT/Optional.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/DependenceAnalysis.h" #include "llvm/Analysis/PostDominators.h" @@ -58,9 +57,9 @@ class ControlConditions { public: /// Return a ControlConditions which stores all conditions required to execute /// \p BB from \p Dominator. If \p MaxLookup is non-zero, it limits the - /// number of conditions to collect. Return None if not all conditions are - /// collected successfully, or we hit the limit. - static const Optional<ControlConditions> + /// number of conditions to collect. Return std::nullopt if not all conditions + /// are collected successfully, or we hit the limit. + static const std::optional<ControlConditions> collectControlConditions(const BasicBlock &BB, const BasicBlock &Dominator, const DominatorTree &DT, const PostDominatorTree &PDT, @@ -105,9 +104,12 @@ static bool domTreeLevelBefore(DominatorTree *DT, const Instruction *InstA, return DA->getLevel() < DB->getLevel(); } -const Optional<ControlConditions> ControlConditions::collectControlConditions( - const BasicBlock &BB, const BasicBlock &Dominator, const DominatorTree &DT, - const PostDominatorTree &PDT, unsigned MaxLookup) { +const std::optional<ControlConditions> +ControlConditions::collectControlConditions(const BasicBlock &BB, + const BasicBlock &Dominator, + const DominatorTree &DT, + const PostDominatorTree &PDT, + unsigned MaxLookup) { assert(DT.dominates(&Dominator, &BB) && "Expecting Dominator to dominate BB"); ControlConditions Conditions; @@ -129,7 +131,7 @@ const Optional<ControlConditions> ControlConditions::collectControlConditions( // Limitation: can only handle branch instruction currently. const BranchInst *BI = dyn_cast<BranchInst>(IDom->getTerminator()); if (!BI) - return None; + return std::nullopt; bool Inserted = false; if (PDT.dominates(CurBlock, IDom)) { @@ -149,13 +151,13 @@ const Optional<ControlConditions> ControlConditions::collectControlConditions( Inserted = Conditions.addControlCondition( ControlCondition(BI->getCondition(), false)); } else - return None; + return std::nullopt; if (Inserted) ++NumConditions; if (MaxLookup != 0 && NumConditions > MaxLookup) - return None; + return std::nullopt; CurBlock = IDom; } while (CurBlock != &Dominator); @@ -249,16 +251,16 @@ bool llvm::isControlFlowEquivalent(const BasicBlock &BB0, const BasicBlock &BB1, << " and " << BB1.getName() << " is " << CommonDominator->getName() << "\n"); - const Optional<ControlConditions> BB0Conditions = + const std::optional<ControlConditions> BB0Conditions = ControlConditions::collectControlConditions(BB0, *CommonDominator, DT, PDT); - if (BB0Conditions == None) + if (BB0Conditions == std::nullopt) return false; - const Optional<ControlConditions> BB1Conditions = + const std::optional<ControlConditions> BB1Conditions = ControlConditions::collectControlConditions(BB1, *CommonDominator, DT, PDT); - if (BB1Conditions == None) + if (BB1Conditions == std::nullopt) return false; return BB0Conditions->isEquivalent(*BB1Conditions); @@ -455,7 +457,7 @@ bool llvm::nonStrictlyPostDominate(const BasicBlock *ThisBlock, if (PDT->dominates(CurBlock, OtherBlock)) return true; - for (auto *Pred : predecessors(CurBlock)) { + for (const auto *Pred : predecessors(CurBlock)) { if (Pred == CommonDominator || Visited.count(Pred)) continue; WorkList.push_back(Pred); |