forked from OSchip/llvm-project
[NFC][Inliner] Simplify clamping in addCost
This commit is contained in:
parent
84e9194828
commit
26dd42705c
|
@ -42,6 +42,7 @@
|
||||||
#include "llvm/Support/Debug.h"
|
#include "llvm/Support/Debug.h"
|
||||||
#include "llvm/Support/FormattedStream.h"
|
#include "llvm/Support/FormattedStream.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
|
#include <climits>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
@ -502,7 +503,6 @@ int64_t getExpectedNumberOfCompare(int NumCaseCluster) {
|
||||||
/// FIXME: if it is necessary to derive from InlineCostCallAnalyzer, note
|
/// FIXME: if it is necessary to derive from InlineCostCallAnalyzer, note
|
||||||
/// the FIXME in onLoweredCall, when instantiating an InlineCostCallAnalyzer
|
/// the FIXME in onLoweredCall, when instantiating an InlineCostCallAnalyzer
|
||||||
class InlineCostCallAnalyzer final : public CallAnalyzer {
|
class InlineCostCallAnalyzer final : public CallAnalyzer {
|
||||||
const int CostUpperBound = INT_MAX - InlineConstants::InstrCost - 1;
|
|
||||||
const bool ComputeFullInlineCost;
|
const bool ComputeFullInlineCost;
|
||||||
int LoadEliminationCost = 0;
|
int LoadEliminationCost = 0;
|
||||||
/// Bonus to be applied when percentage of vector instructions in callee is
|
/// Bonus to be applied when percentage of vector instructions in callee is
|
||||||
|
@ -579,9 +579,9 @@ class InlineCostCallAnalyzer final : public CallAnalyzer {
|
||||||
BlockFrequencyInfo *CallerBFI);
|
BlockFrequencyInfo *CallerBFI);
|
||||||
|
|
||||||
/// Handle a capped 'int' increment for Cost.
|
/// Handle a capped 'int' increment for Cost.
|
||||||
void addCost(int64_t Inc, int64_t UpperBound = INT_MAX) {
|
void addCost(int64_t Inc) {
|
||||||
assert(UpperBound > 0 && UpperBound <= INT_MAX && "invalid upper bound");
|
Inc = std::max<int64_t>(std::min<int64_t>(INT_MAX, Inc), INT_MIN);
|
||||||
Cost = std::min<int>(UpperBound, Cost + Inc);
|
Cost = std::max<int64_t>(std::min<int64_t>(INT_MAX, Inc + Cost), INT_MIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onDisableSROA(AllocaInst *Arg) override {
|
void onDisableSROA(AllocaInst *Arg) override {
|
||||||
|
@ -662,7 +662,7 @@ class InlineCostCallAnalyzer final : public CallAnalyzer {
|
||||||
static_cast<int64_t>(JumpTableSize) * InlineConstants::InstrCost +
|
static_cast<int64_t>(JumpTableSize) * InlineConstants::InstrCost +
|
||||||
4 * InlineConstants::InstrCost;
|
4 * InlineConstants::InstrCost;
|
||||||
|
|
||||||
addCost(JTCost, static_cast<int64_t>(CostUpperBound));
|
addCost(JTCost);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -677,7 +677,7 @@ class InlineCostCallAnalyzer final : public CallAnalyzer {
|
||||||
int64_t SwitchCost =
|
int64_t SwitchCost =
|
||||||
ExpectedNumberOfCompare * 2 * InlineConstants::InstrCost;
|
ExpectedNumberOfCompare * 2 * InlineConstants::InstrCost;
|
||||||
|
|
||||||
addCost(SwitchCost, static_cast<int64_t>(CostUpperBound));
|
addCost(SwitchCost);
|
||||||
}
|
}
|
||||||
void onMissedSimplification() override {
|
void onMissedSimplification() override {
|
||||||
addCost(InlineConstants::InstrCost);
|
addCost(InlineConstants::InstrCost);
|
||||||
|
|
Loading…
Reference in New Issue