diff options
author | Davide Italiano <davide@freebsd.org> | 2016-05-05 02:37:32 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2016-05-05 02:37:32 +0000 |
commit | 344e838feab10f6a0117b0e5e50a62d093be647d (patch) | |
tree | 576a805055a9de9ea2d3b2fbd7566638db85a5f0 /llvm/lib/Transforms/IPO | |
parent | ca16c104c6ebb8f2c7b8f59c6cec794c7fc434c4 (diff) | |
download | bcm5719-llvm-344e838feab10f6a0117b0e5e50a62d093be647d.tar.gz bcm5719-llvm-344e838feab10f6a0117b0e5e50a62d093be647d.zip |
[PM] Port EliminateAvailableExternally pass to the new pass manager.
llvm-svn: 268599
Diffstat (limited to 'llvm/lib/Transforms/IPO')
-rw-r--r-- | llvm/lib/Transforms/IPO/ElimAvailExtern.cpp | 64 | ||||
-rw-r--r-- | llvm/lib/Transforms/IPO/IPO.cpp | 2 |
2 files changed, 37 insertions, 29 deletions
diff --git a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp index 083debc3148..b3ca10bd945 100644 --- a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp +++ b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp @@ -13,10 +13,11 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Transforms/IPO.h" +#include "llvm/Transforms/IPO/ElimAvailExtern.h" #include "llvm/ADT/Statistic.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Module.h" +#include "llvm/Transforms/IPO.h" #include "llvm/Transforms/Utils/GlobalStatus.h" #include "llvm/Pass.h" using namespace llvm; @@ -26,33 +27,7 @@ using namespace llvm; STATISTIC(NumFunctions, "Number of functions removed"); STATISTIC(NumVariables, "Number of global variables removed"); -namespace { -struct EliminateAvailableExternally : public ModulePass { - static char ID; // Pass identification, replacement for typeid - EliminateAvailableExternally() : ModulePass(ID) { - initializeEliminateAvailableExternallyPass( - *PassRegistry::getPassRegistry()); - } - - // run - Do the EliminateAvailableExternally pass on the specified module, - // optionally updating the specified callgraph to reflect the changes. - // - bool runOnModule(Module &M) override; -}; -} - -char EliminateAvailableExternally::ID = 0; -INITIALIZE_PASS(EliminateAvailableExternally, "elim-avail-extern", - "Eliminate Available Externally Globals", false, false) - -ModulePass *llvm::createEliminateAvailableExternallyPass() { - return new EliminateAvailableExternally(); -} - -bool EliminateAvailableExternally::runOnModule(Module &M) { - if (skipModule(M)) - return false; - +static bool eliminateAvailableExternally(Module &M) { bool Changed = false; // Drop initializers of available externally global variables. @@ -85,3 +60,36 @@ bool EliminateAvailableExternally::runOnModule(Module &M) { return Changed; } + +PreservedAnalyses EliminateAvailableExternallyPass::run(Module &M) { + if (!eliminateAvailableExternally(M)) + return PreservedAnalyses::all(); + return PreservedAnalyses::none(); +} + +namespace { +struct EliminateAvailableExternallyLegacyPass : public ModulePass { + static char ID; // Pass identification, replacement for typeid + EliminateAvailableExternallyLegacyPass() : ModulePass(ID) { + initializeEliminateAvailableExternallyLegacyPassPass( + *PassRegistry::getPassRegistry()); + } + + // run - Do the EliminateAvailableExternally pass on the specified module, + // optionally updating the specified callgraph to reflect the changes. + // + bool runOnModule(Module &M) { + if (skipModule(M)) + return false; + return eliminateAvailableExternally(M); + } +}; +} + +char EliminateAvailableExternallyLegacyPass::ID = 0; +INITIALIZE_PASS(EliminateAvailableExternallyLegacyPass, "elim-avail-extern", + "Eliminate Available Externally Globals", false, false) + +ModulePass *llvm::createEliminateAvailableExternallyPass() { + return new EliminateAvailableExternallyLegacyPass(); +} diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp index 8cdefe3d726..fc757684b80 100644 --- a/llvm/lib/Transforms/IPO/IPO.cpp +++ b/llvm/lib/Transforms/IPO/IPO.cpp @@ -51,7 +51,7 @@ void llvm::initializeIPO(PassRegistry &Registry) { initializeStripDeadDebugInfoPass(Registry); initializeStripNonDebugSymbolsPass(Registry); initializeBarrierNoopPass(Registry); - initializeEliminateAvailableExternallyPass(Registry); + initializeEliminateAvailableExternallyLegacyPassPass(Registry); initializeSampleProfileLoaderPass(Registry); initializeFunctionImportPassPass(Registry); initializeWholeProgramDevirtPass(Registry); |