summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2012-11-15 00:14:15 +0000
committerOwen Anderson <resistor@mac.com>2012-11-15 00:14:15 +0000
commit40b6fdb81e12b40dd41c9f9f07befb60ec7291c3 (patch)
tree467a798d5e6f1847a8bb536c5678b1b50f1ed973 /tools
parent3427f0aa7ca6979c8646a9b18c1bdab41dcb6eb0 (diff)
downloadllvm-40b6fdb81e12b40dd41c9f9f07befb60ec7291c3.tar.gz
llvm-40b6fdb81e12b40dd41c9f9f07befb60ec7291c3.tar.bz2
llvm-40b6fdb81e12b40dd41c9f9f07befb60ec7291c3.tar.xz
Add doInitialization and doFinalization methods to ModulePass's, to allow them to be re-initialized and reused on multiple Module's.
Patch by Pedro Artigas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168008 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/bugpoint/CrashDebugger.cpp2
-rw-r--r--tools/llc/llc.cpp2
-rw-r--r--tools/llvm-extract/llvm-extract.cpp2
-rw-r--r--tools/llvm-prof/llvm-prof.cpp2
-rw-r--r--tools/llvm-stress/llvm-stress.cpp2
-rw-r--r--tools/lto/LTOCodeGenerator.cpp4
-rw-r--r--tools/opt/opt.cpp2
7 files changed, 16 insertions, 0 deletions
diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp
index aed16f47e0..8836eedb47 100644
--- a/tools/bugpoint/CrashDebugger.cpp
+++ b/tools/bugpoint/CrashDebugger.cpp
@@ -412,7 +412,9 @@ bool ReduceCrashingInstructions::TestInsts(std::vector<const Instruction*>
// Verify that this is still valid.
PassManager Passes;
Passes.add(createVerifierPass());
+ Passes.doInitialization();
Passes.run(*M);
+ Passes.doFinalization();
// Try running on the hacked up program...
if (TestFn(BD, M)) {
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index 4d4a74c009..f3e5c20567 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -359,7 +359,9 @@ int main(int argc, char **argv) {
// Before executing passes, print the final values of the LLVM options.
cl::PrintOptionValues();
+ PM.doInitialization();
PM.run(*mod);
+ PM.doFinalization();
}
// Declare success.
diff --git a/tools/llvm-extract/llvm-extract.cpp b/tools/llvm-extract/llvm-extract.cpp
index ac82d98b3b..d2caabdd2b 100644
--- a/tools/llvm-extract/llvm-extract.cpp
+++ b/tools/llvm-extract/llvm-extract.cpp
@@ -276,7 +276,9 @@ int main(int argc, char **argv) {
else if (Force || !CheckBitcodeOutputToConsole(Out.os(), true))
Passes.add(createBitcodeWriterPass(Out.os()));
+ Passes.doInitialization();
Passes.run(*M.get());
+ Passes.doFinalization();
// Declare success.
Out.keep();
diff --git a/tools/llvm-prof/llvm-prof.cpp b/tools/llvm-prof/llvm-prof.cpp
index 81e9503abe..940ac340e7 100644
--- a/tools/llvm-prof/llvm-prof.cpp
+++ b/tools/llvm-prof/llvm-prof.cpp
@@ -287,7 +287,9 @@ int main(int argc, char **argv) {
PassManager PassMgr;
PassMgr.add(createProfileLoaderPass(ProfileDataFile));
PassMgr.add(new ProfileInfoPrinterPass(PIL));
+ PassMgr.doInitialization();
PassMgr.run(*M);
+ PassMgr.doFinalization();
return 0;
}
diff --git a/tools/llvm-stress/llvm-stress.cpp b/tools/llvm-stress/llvm-stress.cpp
index 8473d94731..72fdac87b4 100644
--- a/tools/llvm-stress/llvm-stress.cpp
+++ b/tools/llvm-stress/llvm-stress.cpp
@@ -713,7 +713,9 @@ int main(int argc, char **argv) {
PassManager Passes;
Passes.add(createVerifierPass());
Passes.add(createPrintModulePass(&Out->os()));
+ Passes.doInitialization();
Passes.run(*M.get());
+ Passes.doFinalization();
Out->keep();
return 0;
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index b1c4f437ff..d9fa218b92 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -342,7 +342,9 @@ void LTOCodeGenerator::applyScopeRestrictions() {
passes.add(createInternalizePass(mustPreserveList));
// apply scope restrictions
+ passes.doInitialization();
passes.run(*mergedModule);
+ passes.doFinalization();
_scopeRestrictionsDone = true;
}
@@ -397,7 +399,9 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
}
// Run our queue of passes all at once now, efficiently.
+ passes.doInitialization();
passes.run(*mergedModule);
+ passes.doFinalization();
// Run the code generator, and write assembly file
codeGenPasses->doInitialization();
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index bac0d46947..7cced98dcc 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -820,7 +820,9 @@ int main(int argc, char **argv) {
cl::PrintOptionValues();
// Now that we have all of the passes ready, run them.
+ Passes.doInitialization();
Passes.run(*M.get());
+ Passes.doFinalization();
// Declare success.
if (!NoOutput || PrintBreakpoints)