Re-commit r208025, reverted in r208030, with a fix for a conformance issue

which GCC detects and Clang does not!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208033 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Richard Smith
2014-05-06 01:44:26 +00:00
parent f3a199b2ae
commit 36ecb2ee9d
9 changed files with 227 additions and 46 deletions
+3 -4
View File
@@ -3022,10 +3022,9 @@ bool GlobalOpt::runOnModule(Module &M) {
LocalChange |= OptimizeFunctions(M);
// Optimize global_ctors list.
LocalChange |= optimizeGlobalCtorsList(M, [](void *C, Function *F) -> bool {
GlobalOpt *self = static_cast<GlobalOpt *>(C);
return EvaluateStaticConstructor(F, self->DL, self->TLI);
}, this);
LocalChange |= optimizeGlobalCtorsList(M, [&](Function *F) {
return EvaluateStaticConstructor(F, DL, TLI);
});
// Optimize non-address-taken globals.
LocalChange |= OptimizeGlobalVars(M);