On Feb 7, 2007, at 5:41 PM, Bill Wendling wrote:
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;
+ }
Please avoid assert() in lto. Let linker handle all failures.
Use LTO_WRITE_FAILURE instead of LTO_UNKNOWN.
Thanks,
-
Devang
_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits