aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
diff options
context:
space:
mode:
authorKazu Hirata <kazu@google.com>2022-12-02 21:11:37 -0800
committerKazu Hirata <kazu@google.com>2022-12-02 21:11:37 -0800
commit343de6856e16b58bcbd16d479fc633f54e22fadc (patch)
tree31e3fbef03aa0e4c5ea9582d0eacc650aba3073d /llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
parent998960ee1f2c8bc3830df4849ab89ec9d6217f26 (diff)
downloadllvm-343de6856e16b58bcbd16d479fc633f54e22fadc.zip
llvm-343de6856e16b58bcbd16d479fc633f54e22fadc.tar.gz
llvm-343de6856e16b58bcbd16d479fc633f54e22fadc.tar.bz2
[Transforms] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional. This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp85
1 files changed, 44 insertions, 41 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
index 35a1a8d..148af5a9 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -359,11 +359,11 @@ static Optional<EstimatedUnrollCost> analyzeLoopUnrollCost(
// Only analyze inner loops. We can't properly estimate cost of nested loops
// and we won't visit inner loops again anyway.
if (!L->isInnermost())
- return None;
+ return std::nullopt;
// Don't simulate loops with a big or unknown tripcount
if (!TripCount || TripCount > MaxIterationsCountToAnalyze)
- return None;
+ return std::nullopt;
SmallSetVector<BasicBlock *, 16> BBWorklist;
SmallSetVector<std::pair<BasicBlock *, BasicBlock *>, 4> ExitWorklist;
@@ -559,7 +559,7 @@ static Optional<EstimatedUnrollCost> analyzeLoopUnrollCost(
const Function *Callee = CI->getCalledFunction();
if (!Callee || TTI.isLoweredToCall(Callee)) {
LLVM_DEBUG(dbgs() << "Can't analyze cost of loop with call\n");
- return None;
+ return std::nullopt;
}
}
@@ -574,7 +574,7 @@ static Optional<EstimatedUnrollCost> analyzeLoopUnrollCost(
<< " UnrolledCost: " << UnrolledCost
<< ", MaxUnrolledLoopSize: " << MaxUnrolledLoopSize
<< "\n");
- return None;
+ return std::nullopt;
}
}
@@ -632,7 +632,7 @@ static Optional<EstimatedUnrollCost> analyzeLoopUnrollCost(
if (UnrolledCost == RolledDynamicCost) {
LLVM_DEBUG(dbgs() << " No opportunities found.. exiting.\n"
<< " UnrolledCost: " << UnrolledCost << "\n");
- return None;
+ return std::nullopt;
}
}
@@ -798,7 +798,7 @@ shouldPragmaUnroll(Loop *L, const PragmaInfo &PInfo,
return TripCount;
// if didn't return until here, should continue to other priorties
- return None;
+ return std::nullopt;
}
static std::optional<unsigned> shouldFullUnroll(
@@ -809,7 +809,7 @@ static std::optional<unsigned> shouldFullUnroll(
assert(FullUnrollTripCount && "should be non-zero!");
if (FullUnrollTripCount > UP.FullUnrollMaxCount)
- return None;
+ return std::nullopt;
// When computing the unrolled size, note that BEInsns are not replicated
// like the rest of the loop body.
@@ -828,7 +828,7 @@ static std::optional<unsigned> shouldFullUnroll(
if (Cost->UnrolledCost < UP.Threshold * Boost / 100)
return FullUnrollTripCount;
}
- return None;
+ return std::nullopt;
}
static std::optional<unsigned>
@@ -837,7 +837,7 @@ shouldPartialUnroll(const unsigned LoopSize, const unsigned TripCount,
const TargetTransformInfo::UnrollingPreferences &UP) {
if (!TripCount)
- return None;
+ return std::nullopt;
if (!UP.Partial) {
LLVM_DEBUG(dbgs() << " will not try to unroll partially because "
@@ -1378,13 +1378,15 @@ public:
Optional<unsigned> ProvidedFullUnrollMaxCount;
LoopUnroll(int OptLevel = 2, bool OnlyWhenForced = false,
- bool ForgetAllSCEV = false, Optional<unsigned> Threshold = None,
- Optional<unsigned> Count = None,
- Optional<bool> AllowPartial = None, Optional<bool> Runtime = None,
- Optional<bool> UpperBound = None,
- Optional<bool> AllowPeeling = None,
- Optional<bool> AllowProfileBasedPeeling = None,
- Optional<unsigned> ProvidedFullUnrollMaxCount = None)
+ bool ForgetAllSCEV = false,
+ Optional<unsigned> Threshold = std::nullopt,
+ Optional<unsigned> Count = std::nullopt,
+ Optional<bool> AllowPartial = std::nullopt,
+ Optional<bool> Runtime = std::nullopt,
+ Optional<bool> UpperBound = std::nullopt,
+ Optional<bool> AllowPeeling = std::nullopt,
+ Optional<bool> AllowProfileBasedPeeling = std::nullopt,
+ Optional<unsigned> ProvidedFullUnrollMaxCount = std::nullopt)
: LoopPass(ID), OptLevel(OptLevel), OnlyWhenForced(OnlyWhenForced),
ForgetAllSCEV(ForgetAllSCEV), ProvidedCount(std::move(Count)),
ProvidedThreshold(Threshold), ProvidedAllowPartial(AllowPartial),
@@ -1456,12 +1458,12 @@ Pass *llvm::createLoopUnrollPass(int OptLevel, bool OnlyWhenForced,
// callers.
return new LoopUnroll(
OptLevel, OnlyWhenForced, ForgetAllSCEV,
- Threshold == -1 ? None : Optional<unsigned>(Threshold),
- Count == -1 ? None : Optional<unsigned>(Count),
- AllowPartial == -1 ? None : Optional<bool>(AllowPartial),
- Runtime == -1 ? None : Optional<bool>(Runtime),
- UpperBound == -1 ? None : Optional<bool>(UpperBound),
- AllowPeeling == -1 ? None : Optional<bool>(AllowPeeling));
+ Threshold == -1 ? std::nullopt : Optional<unsigned>(Threshold),
+ Count == -1 ? std::nullopt : Optional<unsigned>(Count),
+ AllowPartial == -1 ? std::nullopt : Optional<bool>(AllowPartial),
+ Runtime == -1 ? std::nullopt : Optional<bool>(Runtime),
+ UpperBound == -1 ? std::nullopt : Optional<bool>(UpperBound),
+ AllowPeeling == -1 ? std::nullopt : Optional<bool>(AllowPeeling));
}
Pass *llvm::createSimpleLoopUnrollPass(int OptLevel, bool OnlyWhenForced,
@@ -1489,16 +1491,17 @@ PreservedAnalyses LoopFullUnrollPass::run(Loop &L, LoopAnalysisManager &AM,
std::string LoopName = std::string(L.getName());
- bool Changed = tryToUnrollLoop(&L, AR.DT, &AR.LI, AR.SE, AR.TTI, AR.AC, ORE,
- /*BFI*/ nullptr, /*PSI*/ nullptr,
- /*PreserveLCSSA*/ true, OptLevel,
- OnlyWhenForced, ForgetSCEV, /*Count*/ None,
- /*Threshold*/ None, /*AllowPartial*/ false,
- /*Runtime*/ false, /*UpperBound*/ false,
- /*AllowPeeling*/ true,
- /*AllowProfileBasedPeeling*/ false,
- /*FullUnrollMaxCount*/ None) !=
- LoopUnrollResult::Unmodified;
+ bool Changed =
+ tryToUnrollLoop(&L, AR.DT, &AR.LI, AR.SE, AR.TTI, AR.AC, ORE,
+ /*BFI*/ nullptr, /*PSI*/ nullptr,
+ /*PreserveLCSSA*/ true, OptLevel, OnlyWhenForced,
+ ForgetSCEV, /*Count*/ std::nullopt,
+ /*Threshold*/ std::nullopt, /*AllowPartial*/ false,
+ /*Runtime*/ false, /*UpperBound*/ false,
+ /*AllowPeeling*/ true,
+ /*AllowProfileBasedPeeling*/ false,
+ /*FullUnrollMaxCount*/ std::nullopt) !=
+ LoopUnrollResult::Unmodified;
if (!Changed)
return PreservedAnalyses::all();
@@ -1618,9 +1621,9 @@ PreservedAnalyses LoopUnrollPass::run(Function &F,
LoopUnrollResult Result = tryToUnrollLoop(
&L, DT, &LI, SE, TTI, AC, ORE, BFI, PSI,
/*PreserveLCSSA*/ true, UnrollOpts.OptLevel, UnrollOpts.OnlyWhenForced,
- UnrollOpts.ForgetSCEV, /*Count*/ None,
- /*Threshold*/ None, UnrollOpts.AllowPartial, UnrollOpts.AllowRuntime,
- UnrollOpts.AllowUpperBound, LocalAllowPeeling,
+ UnrollOpts.ForgetSCEV, /*Count*/ std::nullopt,
+ /*Threshold*/ std::nullopt, UnrollOpts.AllowPartial,
+ UnrollOpts.AllowRuntime, UnrollOpts.AllowUpperBound, LocalAllowPeeling,
UnrollOpts.AllowProfileBasedPeeling, UnrollOpts.FullUnrollMaxCount);
Changed |= Result != LoopUnrollResult::Unmodified;
@@ -1646,18 +1649,18 @@ void LoopUnrollPass::printPipeline(
static_cast<PassInfoMixin<LoopUnrollPass> *>(this)->printPipeline(
OS, MapClassName2PassName);
OS << "<";
- if (UnrollOpts.AllowPartial != None)
+ if (UnrollOpts.AllowPartial != std::nullopt)
OS << (UnrollOpts.AllowPartial.value() ? "" : "no-") << "partial;";
- if (UnrollOpts.AllowPeeling != None)
+ if (UnrollOpts.AllowPeeling != std::nullopt)
OS << (UnrollOpts.AllowPeeling.value() ? "" : "no-") << "peeling;";
- if (UnrollOpts.AllowRuntime != None)
+ if (UnrollOpts.AllowRuntime != std::nullopt)
OS << (UnrollOpts.AllowRuntime.value() ? "" : "no-") << "runtime;";
- if (UnrollOpts.AllowUpperBound != None)
+ if (UnrollOpts.AllowUpperBound != std::nullopt)
OS << (UnrollOpts.AllowUpperBound.value() ? "" : "no-") << "upperbound;";
- if (UnrollOpts.AllowProfileBasedPeeling != None)
+ if (UnrollOpts.AllowProfileBasedPeeling != std::nullopt)
OS << (UnrollOpts.AllowProfileBasedPeeling.value() ? "" : "no-")
<< "profile-peeling;";
- if (UnrollOpts.FullUnrollMaxCount != None)
+ if (UnrollOpts.FullUnrollMaxCount != std::nullopt)
OS << "full-unroll-max=" << UnrollOpts.FullUnrollMaxCount << ";";
OS << "O" << UnrollOpts.OptLevel;
OS << ">";