summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/InlineCost.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/InlineCost.cpp')
-rw-r--r--llvm/lib/Analysis/InlineCost.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp
index c0ac6c86ce9..9fbb2853594 100644
--- a/llvm/lib/Analysis/InlineCost.cpp
+++ b/llvm/lib/Analysis/InlineCost.cpp
@@ -624,6 +624,11 @@ void CallAnalyzer::updateThreshold(CallSite CS, Function &Callee) {
return B ? std::min(A, B.getValue()) : A;
};
+ // return max(A, B) if B is valid.
+ auto MaxIfValid = [](int A, Optional<int> B) {
+ return B ? std::max(A, B.getValue()) : A;
+ };
+
// Use the OptMinSizeThreshold or OptSizeThreshold knob if they are available
// and reduce the threshold if the caller has the necessary attribute.
if (Caller->optForMinSize())
@@ -644,11 +649,10 @@ void CallAnalyzer::updateThreshold(CallSite CS, Function &Callee) {
bool InlineHint = Callee.hasFnAttribute(Attribute::InlineHint) ||
PSI->isHotFunction(&Callee);
if (InlineHint && !Caller->optForMinSize())
- Threshold = std::max(Threshold, Params.HintThreshold);
+ Threshold = MaxIfValid(Threshold, Params.HintThreshold);
- if (HotCallsite && HotCallSiteThreshold > Threshold &&
- !Caller->optForMinSize())
- Threshold = std::max(Threshold, Params.HotCallSiteThreshold);
+ if (HotCallsite && !Caller->optForMinSize())
+ Threshold = MaxIfValid(Threshold, Params.HotCallSiteThreshold);
bool ColdCallee = PSI->isColdFunction(&Callee);
// For cold callees, use the ColdThreshold knob if it is available and reduces
OpenPOWER on IntegriCloud