diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/pnacl-llc/pnacl-llc.cpp | 73 |
1 files changed, 12 insertions, 61 deletions
diff --git a/tools/pnacl-llc/pnacl-llc.cpp b/tools/pnacl-llc/pnacl-llc.cpp index b085a0be57..0b6c7ded61 100644 --- a/tools/pnacl-llc/pnacl-llc.cpp +++ b/tools/pnacl-llc/pnacl-llc.cpp @@ -306,7 +306,7 @@ static int compileModule(char **argv, LLVMContext &Context) { TimeIRParsingIsEnabled); M.reset(NaClParseIRFile(InputFilename, InputFileFormat, Err, Context)); } -#endif +#endif // __native_client__ mod = M.get(); if (mod == 0) { @@ -472,18 +472,21 @@ static int compileModule(char **argv, LLVMContext &Context) { Target.setMCRelaxAll(true); } -#if defined __native_client__ { +#if defined(__native_client__) raw_fd_ostream ROS(GetObjectFileFD(), true); ROS.SetBufferSize(1 << 20); formatted_raw_ostream FOS(ROS); +#else + formatted_raw_ostream FOS(Out->os()); +#endif // __native_client__ // Ask the target to add backend passes as necessary. We explicitly ask it // not to add the verifier pass because we added it earlier. if (Target.addPassesToEmitFile(*PM, FOS, FileType, /* DisableVerify */ true)) { - errs() << argv[0] << ": target does not support generation of this" - << " file type!\n"; + errs() << argv[0] + << ": target does not support generation of this file type!\n"; return 1; } @@ -501,67 +504,15 @@ static int compileModule(char **argv, LLVMContext &Context) { } else { static_cast<PassManager*>(PM.get())->run(*mod); } +#if defined(__native_client__) FOS.flush(); ROS.flush(); - } #else - - { - formatted_raw_ostream FOS(Out->os()); - - AnalysisID StartAfterID = 0; - AnalysisID StopAfterID = 0; - const PassRegistry *PR = PassRegistry::getPassRegistry(); - if (!StartAfter.empty()) { - const PassInfo *PI = PR->getPassInfo(StartAfter); - if (!PI) { - errs() << argv[0] << ": start-after pass is not registered.\n"; - return 1; - } - StartAfterID = PI->getTypeInfo(); - } - if (!StopAfter.empty()) { - const PassInfo *PI = PR->getPassInfo(StopAfter); - if (!PI) { - errs() << argv[0] << ": stop-after pass is not registered.\n"; - return 1; - } - StopAfterID = PI->getTypeInfo(); - } - - // Ask the target to add backend passes as necessary. - // TODO: decrease the amount of code duplication with __native_client__ - if (Target.addPassesToEmitFile(*PM, FOS, FileType, - /* DisableVerify */ true, - StartAfterID, StopAfterID)) { - errs() << argv[0] << ": target does not support generation of this" - << " file type!\n"; - return 1; - } - - // Before executing passes, print the final values of the LLVM options. - cl::PrintOptionValues(); - - if (LazyBitcode || ReduceMemoryFootprint) { - FunctionPassManager *P = static_cast<FunctionPassManager*>(PM.get()); - P->doInitialization(); - for (Module::iterator I = mod->begin(), E = mod->end(); I != E; ++I) { - P->run(*I); - CheckABIVerifyErrors(ABIErrorReporter, "Function " + I->getName()); - if (ReduceMemoryFootprint) { - I->Dematerialize(); - } - } - P->doFinalization(); - } else { - static_cast<PassManager*>(PM.get())->run(*mod); - } + // Declare success. + Out->keep(); +#endif // __native_client__ } - // Declare success. - Out->keep(); -#endif - return 0; } @@ -572,4 +523,4 @@ main (int argc, char **argv) { } #else // main() is in nacl_file.cpp. -#endif +#endif // __native_client__ |