[llvm-commits] CVS: llvm/tools/lto/lto.cpp

Devang Patel dpatel at apple.com
Thu Sep 7 14:41:25 PDT 2006



Changes in directory llvm/tools/lto:

lto.cpp updated: 1.13 -> 1.14
---
Log message:

Using addPassesToEmitWholeFile is not a good idea here.
Use FunctionPassManager to do the job.


---
Diffs of the changes:  (+14 -1)

 lto.cpp |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletion(-)


Index: llvm/tools/lto/lto.cpp
diff -u llvm/tools/lto/lto.cpp:1.13 llvm/tools/lto/lto.cpp:1.14
--- llvm/tools/lto/lto.cpp:1.13	Thu Sep  7 15:20:56 2006
+++ llvm/tools/lto/lto.cpp	Thu Sep  7 16:41:11 2006
@@ -282,11 +282,24 @@
   // Make sure everything is still good.
   Passes.add(createVerifierPass());
 
-  Target.addPassesToEmitWholeFile(Passes, Out, TargetMachine::AssemblyFile, true);
+  FunctionPassManager *CodeGenPasses =
+    new FunctionPassManager(new ExistingModuleProvider(M));
+
+  CodeGenPasses->add(new TargetData(*Target.getTargetData()));
+  Target.addPassesToEmitFile(*CodeGenPasses, Out, TargetMachine::AssemblyFile, 
+			     true);
 
   // Run our queue of passes all at once now, efficiently.
   Passes.run(*M);
 
+  // Run the code generator, if present.
+  CodeGenPasses->doInitialization();
+  for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) {
+    if (!I->isExternal())
+      CodeGenPasses->run(*I);
+  }
+  CodeGenPasses->doFinalization();
+
   return LTO_OPT_SUCCESS;
 }
 






More information about the llvm-commits mailing list