mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 01:24:30 +00:00
[multiversion] Thread a function argument through all the callers of the
getTTI method used to get an actual TTI object. No functionality changed. This just threads the argument and ensures code like the inliner can correctly look up the callee's TTI rather than using a fixed one. The next change will use this to implement per-function subtarget usage by TTI. The changes after that should eliminate the need for FTTI as that will have become the default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227730 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -138,7 +138,7 @@ private:
|
||||
/// \brief Initialize the pass.
|
||||
void setup(Function &Fn) {
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(Fn);
|
||||
Entry = &Fn.getEntryBlock();
|
||||
}
|
||||
|
||||
|
@ -734,7 +734,7 @@ public:
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
auto *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
auto &TLI = getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
auto &DT = getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
|
||||
|
@ -1937,7 +1937,7 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
TLI = TLIP ? &TLIP->getTLI() : nullptr;
|
||||
auto *TTIP = getAnalysisIfAvailable<TargetTransformInfoWrapperPass>();
|
||||
TTI = TTIP ? &TTIP->getTTI() : nullptr;
|
||||
TTI = TTIP ? &TTIP->getTTI(*L->getHeader()->getParent()) : nullptr;
|
||||
|
||||
DeadInsts.clear();
|
||||
Changed = false;
|
||||
|
@ -204,8 +204,9 @@ namespace {
|
||||
}
|
||||
|
||||
const TargetTransformInfo *getTargetTransformInfo() {
|
||||
return TTI ? TTI : (TTI = &getAnalysis<TargetTransformInfoWrapperPass>()
|
||||
.getTTI());
|
||||
return TTI ? TTI
|
||||
: (TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*CurLoop->getHeader()->getParent()));
|
||||
}
|
||||
|
||||
Loop *getLoop() const { return CurLoop; }
|
||||
|
@ -101,10 +101,11 @@ bool LoopRotate::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
// Save the loop metadata.
|
||||
MDNode *LoopMD = L->getLoopID();
|
||||
|
||||
Function &F = *L->getHeader()->getParent();
|
||||
|
||||
LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(
|
||||
*L->getHeader()->getParent());
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
auto *DTWP = getAnalysisIfAvailable<DominatorTreeWrapperPass>();
|
||||
DT = DTWP ? &DTWP->getDomTree() : nullptr;
|
||||
|
||||
|
@ -4866,8 +4866,9 @@ LSRInstance::LSRInstance(Loop *L, Pass *P)
|
||||
: IU(P->getAnalysis<IVUsers>()), SE(P->getAnalysis<ScalarEvolution>()),
|
||||
DT(P->getAnalysis<DominatorTreeWrapperPass>().getDomTree()),
|
||||
LI(P->getAnalysis<LoopInfoWrapperPass>().getLoopInfo()),
|
||||
TTI(P->getAnalysis<TargetTransformInfoWrapperPass>().getTTI()), L(L),
|
||||
Changed(false), IVIncInsertPos(nullptr) {
|
||||
TTI(P->getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*L->getHeader()->getParent())),
|
||||
L(L), Changed(false), IVIncInsertPos(nullptr) {
|
||||
// If LoopSimplify form is not available, stay out of trouble.
|
||||
if (!L->isLoopSimplifyForm())
|
||||
return;
|
||||
@ -5100,7 +5101,8 @@ bool LoopStrengthReduce::runOnLoop(Loop *L, LPPassManager & /*LPM*/) {
|
||||
#endif
|
||||
unsigned numFolded = Rewriter.replaceCongruentIVs(
|
||||
L, &getAnalysis<DominatorTreeWrapperPass>().getDomTree(), DeadInsts,
|
||||
&getAnalysis<TargetTransformInfoWrapperPass>().getTTI());
|
||||
&getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*L->getHeader()->getParent()));
|
||||
if (numFolded) {
|
||||
Changed = true;
|
||||
DeleteTriviallyDeadInstructions(DeadInsts);
|
||||
|
@ -346,14 +346,15 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
if (skipOptnoneFunction(L))
|
||||
return false;
|
||||
|
||||
Function &F = *L->getHeader()->getParent();
|
||||
|
||||
LoopInfo *LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
|
||||
ScalarEvolution *SE = &getAnalysis<ScalarEvolution>();
|
||||
const TargetTransformInfo &TTI =
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
const FunctionTargetTransformInfo &FTTI =
|
||||
getAnalysis<FunctionTargetTransformInfo>();
|
||||
auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(
|
||||
*L->getHeader()->getParent());
|
||||
auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
|
||||
BasicBlock *Header = L->getHeader();
|
||||
DEBUG(dbgs() << "Loop Unroll: F[" << Header->getParent()->getName()
|
||||
|
@ -433,7 +433,8 @@ bool LoopUnswitch::processCurrentLoop() {
|
||||
// Probably we reach the quota of branches for this loop. If so
|
||||
// stop unswitching.
|
||||
if (!BranchesInfo.countLoop(
|
||||
currentLoop, getAnalysis<TargetTransformInfoWrapperPass>().getTTI(),
|
||||
currentLoop, getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*currentLoop->getHeader()->getParent()),
|
||||
AC))
|
||||
return false;
|
||||
|
||||
|
@ -63,7 +63,7 @@ bool PartiallyInlineLibCalls::runOnFunction(Function &F) {
|
||||
TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
const TargetTransformInfo *TTI =
|
||||
&getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
&getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
for (Function::iterator BB = F.begin(), BE = F.end(); BB != BE;) {
|
||||
CurrBB = BB++;
|
||||
|
||||
|
@ -859,7 +859,8 @@ bool SeparateConstOffsetFromGEP::splitGEP(GetElementPtrInst *GEP) {
|
||||
// case.
|
||||
if (!LowerGEP) {
|
||||
TargetTransformInfo &TTI =
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*GEP->getParent()->getParent());
|
||||
if (!TTI.isLegalAddressingMode(GEP->getType()->getElementType(),
|
||||
/*BaseGV=*/nullptr, AccumulativeByteOffset,
|
||||
/*HasBaseReg=*/true, /*Scale=*/0)) {
|
||||
|
@ -206,7 +206,7 @@ struct CFGSimplifyPass : public FunctionPass {
|
||||
AssumptionCache *AC =
|
||||
&getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
const TargetTransformInfo &TTI =
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
const DataLayout *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
return simplifyFunctionCFG(F, TTI, DL, AC, BonusInstThreshold);
|
||||
|
@ -386,7 +386,7 @@ bool TailCallElim::runTRE(Function &F) {
|
||||
// right, so don't even try to convert it...
|
||||
if (F.getFunctionType()->isVarArg()) return false;
|
||||
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
BasicBlock *OldEntry = nullptr;
|
||||
bool TailCallsAreMarkedTail = false;
|
||||
SmallVector<PHINode*, 8> ArgumentPHIs;
|
||||
|
@ -201,7 +201,7 @@ namespace {
|
||||
initializeBBVectorizePass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
BBVectorize(Pass *P, const VectorizeConfig &C)
|
||||
BBVectorize(Pass *P, Function &F, const VectorizeConfig &C)
|
||||
: BasicBlockPass(ID), Config(C) {
|
||||
AA = &P->getAnalysis<AliasAnalysis>();
|
||||
DT = &P->getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
@ -210,7 +210,7 @@ namespace {
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TTI = IgnoreTargetInfo
|
||||
? nullptr
|
||||
: &P->getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
: &P->getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
}
|
||||
|
||||
typedef std::pair<Value *, Value *> ValuePair;
|
||||
@ -446,7 +446,8 @@ namespace {
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TTI = IgnoreTargetInfo
|
||||
? nullptr
|
||||
: &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
: &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(
|
||||
*BB.getParent());
|
||||
|
||||
return vectorizeBB(BB);
|
||||
}
|
||||
@ -3207,7 +3208,7 @@ BasicBlockPass *llvm::createBBVectorizePass(const VectorizeConfig &C) {
|
||||
|
||||
bool
|
||||
llvm::vectorizeBasicBlock(Pass *P, BasicBlock &BB, const VectorizeConfig &C) {
|
||||
BBVectorize BBVectorizer(P, C);
|
||||
BBVectorize BBVectorizer(P, *BB.getParent(), C);
|
||||
return BBVectorizer.vectorizeBB(BB);
|
||||
}
|
||||
|
||||
|
@ -1330,7 +1330,7 @@ struct LoopVectorize : public FunctionPass {
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
BFI = &getAnalysis<BlockFrequencyInfo>();
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
|
@ -3052,7 +3052,7 @@ struct SLPVectorizer : public FunctionPass {
|
||||
SE = &getAnalysis<ScalarEvolution>();
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI();
|
||||
TTI = &getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
TLI = TLIP ? &TLIP->getTLI() : nullptr;
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
|
Reference in New Issue
Block a user