aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Transforms/Utils/CodeMoverUtils.cpp32
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);