mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
[PM] Separate the TargetLibraryInfo object from the immutable pass.
The pass is really just a means of accessing a cached instance of the TargetLibraryInfo object, and this way we can re-use that object for the new pass manager as its result. Lots of delta, but nothing interesting happening here. This is the common pattern that is developing to allow analyses to live in both the old and new pass manager -- a wrapper pass in the old pass manager emulates the separation intrinsic to the new pass manager between the result and pass for analyses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226157 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -45,7 +45,7 @@ namespace {
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.setPreservesCFG();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -53,7 +53,7 @@ namespace {
|
||||
char ConstantPropagation::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(ConstantPropagation, "constprop",
|
||||
"Simple constant propagation", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(ConstantPropagation, "constprop",
|
||||
"Simple constant propagation", false, false)
|
||||
|
||||
@@ -70,7 +70,8 @@ bool ConstantPropagation::runOnFunction(Function &F) {
|
||||
bool Changed = false;
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
const DataLayout *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
|
||||
while (!WorkList.empty()) {
|
||||
Instruction *I = *WorkList.begin();
|
||||
|
@@ -42,7 +42,8 @@ namespace {
|
||||
bool runOnBasicBlock(BasicBlock &BB) override {
|
||||
if (skipOptnoneFunction(BB))
|
||||
return false;
|
||||
TargetLibraryInfo *TLI = getAnalysisIfAvailable<TargetLibraryInfo>();
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
TargetLibraryInfo *TLI = TLIP ? &TLIP->getTLI() : nullptr;
|
||||
bool Changed = false;
|
||||
for (BasicBlock::iterator DI = BB.begin(); DI != BB.end(); ) {
|
||||
Instruction *Inst = DI++;
|
||||
@@ -95,7 +96,8 @@ bool DCE::runOnFunction(Function &F) {
|
||||
if (skipOptnoneFunction(F))
|
||||
return false;
|
||||
|
||||
TargetLibraryInfo *TLI = getAnalysisIfAvailable<TargetLibraryInfo>();
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
TargetLibraryInfo *TLI = TLIP ? &TLIP->getTLI() : nullptr;
|
||||
|
||||
// Start out with all of the instructions in the worklist...
|
||||
std::vector<Instruction*> WorkList;
|
||||
|
@@ -385,7 +385,7 @@ private:
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<AssumptionCacheTracker>();
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.setPreservesCFG();
|
||||
}
|
||||
};
|
||||
@@ -401,7 +401,7 @@ FunctionPass *llvm::createEarlyCSEPass() {
|
||||
INITIALIZE_PASS_BEGIN(EarlyCSE, "early-cse", "Early CSE", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(EarlyCSE, "early-cse", "Early CSE", false, false)
|
||||
|
||||
bool EarlyCSE::processNode(DomTreeNode *Node) {
|
||||
@@ -580,7 +580,7 @@ bool EarlyCSE::runOnFunction(Function &F) {
|
||||
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
|
||||
|
@@ -685,7 +685,7 @@ namespace {
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<AssumptionCacheTracker>();
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
if (!NoLoads)
|
||||
AU.addRequired<MemoryDependenceAnalysis>();
|
||||
AU.addRequired<AliasAnalysis>();
|
||||
@@ -736,7 +736,7 @@ INITIALIZE_PASS_BEGIN(GVN, "gvn", "Global Value Numbering", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(MemoryDependenceAnalysis)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_PASS_END(GVN, "gvn", "Global Value Numbering", false, false)
|
||||
|
||||
@@ -2350,7 +2350,7 @@ bool GVN::runOnFunction(Function& F) {
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
AC = &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
VN.setAliasAnalysis(&getAnalysis<AliasAnalysis>());
|
||||
VN.setMemDep(MD);
|
||||
VN.setDomTree(DT);
|
||||
|
@@ -1934,7 +1934,8 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = getAnalysisIfAvailable<TargetLibraryInfo>();
|
||||
auto *TLIP = getAnalysisIfAvailable<TargetLibraryInfoWrapperPass>();
|
||||
TLI = TLIP ? &TLIP->getTLI() : nullptr;
|
||||
TTI = getAnalysisIfAvailable<TargetTransformInfo>();
|
||||
|
||||
DeadInsts.clear();
|
||||
|
@@ -115,7 +115,7 @@ namespace {
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<LazyValueInfo>();
|
||||
AU.addPreserved<LazyValueInfo>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
|
||||
void FindLoopHeaders(Function &F);
|
||||
@@ -145,7 +145,7 @@ char JumpThreading::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(JumpThreading, "jump-threading",
|
||||
"Jump Threading", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(LazyValueInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(JumpThreading, "jump-threading",
|
||||
"Jump Threading", false, false)
|
||||
|
||||
@@ -161,7 +161,7 @@ bool JumpThreading::runOnFunction(Function &F) {
|
||||
DEBUG(dbgs() << "Jump threading on function '" << F.getName() << "'\n");
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
LVI = &getAnalysis<LazyValueInfo>();
|
||||
|
||||
// Remove unreachable blocks from function as they may result in infinite
|
||||
|
@@ -94,7 +94,7 @@ namespace {
|
||||
AU.addRequired<AliasAnalysis>();
|
||||
AU.addPreserved<AliasAnalysis>();
|
||||
AU.addPreserved<ScalarEvolution>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
|
||||
using llvm::Pass::doFinalization;
|
||||
@@ -214,7 +214,7 @@ INITIALIZE_PASS_DEPENDENCY(LoopInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopSimplify)
|
||||
INITIALIZE_PASS_DEPENDENCY(LCSSA)
|
||||
INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_PASS_END(LICM, "licm", "Loop Invariant Code Motion", false, false)
|
||||
|
||||
@@ -237,7 +237,7 @@ bool LICM::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
|
||||
assert(L->isLCSSAForm(*DT) && "Loop is not in LCSSA form.");
|
||||
|
||||
|
@@ -175,7 +175,7 @@ namespace {
|
||||
AU.addPreserved<ScalarEvolution>();
|
||||
AU.addPreserved<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.addRequired<TargetTransformInfo>();
|
||||
}
|
||||
|
||||
@@ -197,7 +197,10 @@ namespace {
|
||||
}
|
||||
|
||||
TargetLibraryInfo *getTargetLibraryInfo() {
|
||||
return TLI ? TLI : (TLI = &getAnalysis<TargetLibraryInfo>());
|
||||
if (!TLI)
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
|
||||
return TLI;
|
||||
}
|
||||
|
||||
const TargetTransformInfo *getTargetTransformInfo() {
|
||||
@@ -220,7 +223,7 @@ INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopSimplify)
|
||||
INITIALIZE_PASS_DEPENDENCY(LCSSA)
|
||||
INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_AG_DEPENDENCY(TargetTransformInfo)
|
||||
INITIALIZE_PASS_END(LoopIdiomRecognize, "loop-idiom", "Recognize loop idioms",
|
||||
@@ -667,7 +670,7 @@ bool LoopIdiomRecognize::runOnCountableLoop() {
|
||||
(void)getDominatorTree();
|
||||
|
||||
LoopInfo &LI = getAnalysis<LoopInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
|
||||
// set TLI
|
||||
(void)getTargetLibraryInfo();
|
||||
|
@@ -48,7 +48,7 @@ namespace {
|
||||
AU.addPreservedID(LoopSimplifyID);
|
||||
AU.addPreservedID(LCSSAID);
|
||||
AU.addPreserved("scalar-evolution");
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -57,7 +57,7 @@ char LoopInstSimplify::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(LoopInstSimplify, "loop-instsimplify",
|
||||
"Simplify instructions in loops", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(LCSSA)
|
||||
@@ -78,7 +78,8 @@ bool LoopInstSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
LoopInfo *LI = &getAnalysis<LoopInfo>();
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
const DataLayout *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
const TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
const TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(
|
||||
*L->getHeader()->getParent());
|
||||
|
||||
|
@@ -135,7 +135,7 @@ namespace {
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addPreserved<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<ScalarEvolution>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
|
||||
protected:
|
||||
@@ -342,7 +342,7 @@ INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(LoopReroll, "loop-reroll", "Reroll loops", false, false)
|
||||
|
||||
Pass *llvm::createLoopRerollPass() {
|
||||
@@ -1131,7 +1131,7 @@ bool LoopReroll::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
AA = &getAnalysis<AliasAnalysis>();
|
||||
LI = &getAnalysis<LoopInfo>();
|
||||
SE = &getAnalysis<ScalarEvolution>();
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
|
||||
|
@@ -334,7 +334,7 @@ namespace {
|
||||
AU.addRequired<DominatorTreeWrapperPass>();
|
||||
AU.addRequired<MemoryDependenceAnalysis>();
|
||||
AU.addRequired<AliasAnalysis>();
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.addPreserved<AliasAnalysis>();
|
||||
AU.addPreserved<MemoryDependenceAnalysis>();
|
||||
}
|
||||
@@ -366,7 +366,7 @@ INITIALIZE_PASS_BEGIN(MemCpyOpt, "memcpyopt", "MemCpy Optimization",
|
||||
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
|
||||
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(MemoryDependenceAnalysis)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_PASS_END(MemCpyOpt, "memcpyopt", "MemCpy Optimization",
|
||||
false, false)
|
||||
@@ -1069,7 +1069,7 @@ bool MemCpyOpt::runOnFunction(Function &F) {
|
||||
MD = &getAnalysis<MemoryDependenceAnalysis>();
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TLI = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
|
||||
// If we don't have at least memset and memcpy, there is little point of doing
|
||||
// anything here. These are required by a freestanding implementation, so if
|
||||
|
@@ -115,7 +115,7 @@ public:
|
||||
private:
|
||||
// This transformation requires dominator postdominator info
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.addRequired<MemoryDependenceAnalysis>();
|
||||
AU.addRequired<AliasAnalysis>();
|
||||
AU.addPreserved<AliasAnalysis>();
|
||||
@@ -168,7 +168,7 @@ FunctionPass *llvm::createMergedLoadStoreMotionPass() {
|
||||
INITIALIZE_PASS_BEGIN(MergedLoadStoreMotion, "mldst-motion",
|
||||
"MergedLoadStoreMotion", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(MemoryDependenceAnalysis)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
|
||||
INITIALIZE_PASS_END(MergedLoadStoreMotion, "mldst-motion",
|
||||
"MergedLoadStoreMotion", false, false)
|
||||
|
@@ -52,7 +52,7 @@ INITIALIZE_PASS(PartiallyInlineLibCalls, "partially-inline-libcalls",
|
||||
"Partially inline calls to library functions", false, false)
|
||||
|
||||
void PartiallyInlineLibCalls::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
AU.addRequired<TargetTransformInfo>();
|
||||
FunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
@@ -60,7 +60,8 @@ void PartiallyInlineLibCalls::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
bool PartiallyInlineLibCalls::runOnFunction(Function &F) {
|
||||
bool Changed = false;
|
||||
Function::iterator CurrBB;
|
||||
TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
const TargetTransformInfo *TTI = &getAnalysis<TargetTransformInfo>();
|
||||
for (Function::iterator BB = F.begin(), BE = F.end(); BB != BE;) {
|
||||
CurrBB = BB++;
|
||||
|
@@ -1504,7 +1504,7 @@ namespace {
|
||||
///
|
||||
struct SCCP : public FunctionPass {
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
static char ID; // Pass identification, replacement for typeid
|
||||
SCCP() : FunctionPass(ID) {
|
||||
@@ -1563,7 +1563,8 @@ bool SCCP::runOnFunction(Function &F) {
|
||||
DEBUG(dbgs() << "SCCP on function '" << F.getName() << "'\n");
|
||||
const DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
const DataLayout *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
const TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
const TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
SCCPSolver Solver(DL, TLI);
|
||||
|
||||
// Mark the first block of the function as being executable.
|
||||
@@ -1637,7 +1638,7 @@ namespace {
|
||||
///
|
||||
struct IPSCCP : public ModulePass {
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<TargetLibraryInfo>();
|
||||
AU.addRequired<TargetLibraryInfoWrapperPass>();
|
||||
}
|
||||
static char ID;
|
||||
IPSCCP() : ModulePass(ID) {
|
||||
@@ -1651,7 +1652,7 @@ char IPSCCP::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(IPSCCP, "ipsccp",
|
||||
"Interprocedural Sparse Conditional Constant Propagation",
|
||||
false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(IPSCCP, "ipsccp",
|
||||
"Interprocedural Sparse Conditional Constant Propagation",
|
||||
false, false)
|
||||
@@ -1692,7 +1693,8 @@ static bool AddressIsTaken(const GlobalValue *GV) {
|
||||
bool IPSCCP::runOnModule(Module &M) {
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
const DataLayout *DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
const TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
const TargetLibraryInfo *TLI =
|
||||
&getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
|
||||
SCCPSolver Solver(DL, TLI);
|
||||
|
||||
// AddressTakenFunctions - This set keeps track of the address-taken functions
|
||||
|
Reference in New Issue
Block a user