Changes in directory llvm/tools/lto:
lto.cpp updated: 1.34 -> 1.35 --- Log message: The new version of how to add passes to emit files. We explicitly call a function to add the file writers between calls to add the passes. --- Diffs of the changes: (+26 -2) lto.cpp | 28 ++++++++++++++++++++++++++-- 1 files changed, 26 insertions(+), 2 deletions(-) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.34 llvm/tools/lto/lto.cpp:1.35 --- llvm/tools/lto/lto.cpp:1.34 Mon Feb 5 14:47:21 2007 +++ llvm/tools/lto/lto.cpp Wed Feb 7 19:41:07 2007 @@ -27,6 +27,7 @@ #include "llvm/System/Signals.h" #include "llvm/Analysis/Passes.h" #include "llvm/Analysis/Verifier.h" +#include "llvm/CodeGen/FileWriters.h" #include "llvm/Target/SubtargetFeature.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" @@ -308,8 +309,31 @@ new FunctionPassManager(new ExistingModuleProvider(M)); CodeGenPasses->add(new TargetData(*Target->getTargetData())); - Target->addPassesToEmitFile(*CodeGenPasses, Out, TargetMachine::AssemblyFile, - true); + + MachineCodeEmitter *MCE = 0; + + switch (Target->addPassesToEmitFile(*CodeGenPasses, Out, + TargetMachine::AssemblyFile, true)) { + default: + assert(0 && "Invalid file model!"); + return LTO_UNKNOWN; + case FileModel::Error: + // FIXME: Error... + return LTO_UNKNOWN; + case FileModel::AsmFile: + break; + case FileModel::MachOFile: + MCE = AddMachOWriter(*CodeGenPasses, Out, *Target); + break; + case FileModel::ElfFile: + MCE = AddELFWriter(*CodeGenPasses, Out, *Target); + break; + } + + if (Target->addPassesToEmitFileFinish(*CodeGenPasses, MCE, true)) { + // FIXME: Error... + return LTO_UNKNOWN; + } // Run our queue of passes all at once now, efficiently. Passes.run(*M); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits