forked from OSchip/llvm-project
Make more fields of InlineParams Optional.
Differential revision: https://reviews.llvm.org/D23386 llvm-svn: 278312
This commit is contained in:
parent
18dd773016
commit
0d58fcac99
|
@ -124,7 +124,7 @@ struct InlineParams {
|
|||
int DefaultThreshold;
|
||||
|
||||
/// Threshold to use for callees with inline hint.
|
||||
int HintThreshold;
|
||||
Optional<int> HintThreshold;
|
||||
|
||||
/// Threshold to use for cold callees.
|
||||
Optional<int> ColdThreshold;
|
||||
|
@ -136,7 +136,7 @@ struct InlineParams {
|
|||
Optional<int> OptMinSizeThreshold;
|
||||
|
||||
/// Threshold to use when the callsite is considered hot.
|
||||
int HotCallSiteThreshold;
|
||||
Optional<int> HotCallSiteThreshold;
|
||||
};
|
||||
|
||||
/// Generate the parameters to tune the inline cost analysis based only on the
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue