diff options
| author | Nick Lewycky <nicholas@mxc.ca> | 2012-02-12 02:15:20 +0000 |
|---|---|---|
| committer | Nick Lewycky <nicholas@mxc.ca> | 2012-02-12 02:15:20 +0000 |
| commit | 6a7df9aae620801d97da72d718e9aff76eebac9b (patch) | |
| tree | b491962ce8254c65b2e16a8a09b22a04757a301b /lib/Transforms/IPO | |
| parent | 6a577f82ba56a4da48e984702240a01c3ba7e941 (diff) | |
| download | external_llvm-6a7df9aae620801d97da72d718e9aff76eebac9b.zip external_llvm-6a7df9aae620801d97da72d718e9aff76eebac9b.tar.gz external_llvm-6a7df9aae620801d97da72d718e9aff76eebac9b.tar.bz2 | |
Remove redundant getAnalysis<> calls in GlobalOpt. Add a few Itanium ABI calls
to TargetLibraryInfo and use one of them in GlobalOpt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150323 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
| -rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 175d0d0..60a8b1c 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -1938,8 +1938,6 @@ bool GlobalOpt::OptimizeGlobalVars(Module &M) { // Simplify the initializer. if (GV->hasInitializer()) if (ConstantExpr *CE = dyn_cast<ConstantExpr>(GV->getInitializer())) { - TargetData *TD = getAnalysisIfAvailable<TargetData>(); - TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>(); Constant *New = ConstantFoldConstantExpression(CE, TD, TLI); if (New && New != CE) GV->setInitializer(New); @@ -2645,9 +2643,6 @@ bool GlobalOpt::OptimizeGlobalCtorsList(GlobalVariable *&GCL) { bool MadeChange = false; if (Ctors.empty()) return false; - const TargetData *TD = getAnalysisIfAvailable<TargetData>(); - const TargetLibraryInfo *TLI = &getAnalysis<TargetLibraryInfo>(); - // Loop over global ctors, optimizing them when we can. for (unsigned i = 0; i != Ctors.size(); ++i) { Function *F = Ctors[i]; @@ -2737,12 +2732,15 @@ bool GlobalOpt::OptimizeGlobalAliases(Module &M) { return Changed; } -static Function *FindCXAAtExit(Module &M) { - Function *Fn = M.getFunction("__cxa_atexit"); +static Function *FindCXAAtExit(Module &M, TargetLibraryInfo *TLI) { + if (!TLI->has(LibFunc::cxa_atexit)) + return false; + + Function *Fn = M.getFunction(TLI->getName(LibFunc::cxa_atexit)); if (!Fn) return 0; - + FunctionType *FTy = Fn->getFunctionType(); // Checking that the function has the right return type, the right number of @@ -2854,12 +2852,12 @@ bool GlobalOpt::runOnModule(Module &M) { bool Changed = false; TD = getAnalysisIfAvailable<TargetData>(); - TLI = getAnalysisIfAvailable<TargetLibraryInfo>(); + TLI = &getAnalysis<TargetLibraryInfo>(); // Try to find the llvm.globalctors list. GlobalVariable *GlobalCtors = FindGlobalCtors(M); - Function *CXAAtExitFn = FindCXAAtExit(M); + Function *CXAAtExitFn = FindCXAAtExit(M, TLI); bool LocalChange = true; while (LocalChange) { |
