[cfe-commits] r57993 - /cfe/trunk/Driver/Backend.cpp
Daniel Dunbar
daniel at zuster.org
Wed Oct 22 11:29:52 PDT 2008
Author: ddunbar
Date: Wed Oct 22 13:29:51 2008
New Revision: 57993
URL: http://llvm.org/viewvc/llvm-project?rev=57993&view=rev
Log:
Only create the target machine when emitting assembly.
Modified:
cfe/trunk/Driver/Backend.cpp
Modified: cfe/trunk/Driver/Backend.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/Backend.cpp?rev=57993&r1=57992&r2=57993&view=diff
==============================================================================
--- cfe/trunk/Driver/Backend.cpp (original)
+++ cfe/trunk/Driver/Backend.cpp Wed Oct 22 13:29:51 2008
@@ -144,23 +144,6 @@
}
bool BackendConsumer::AddEmitPasses(bool Fast, std::string &Error) {
- // Create the TargetMachine for generating code.
- const TargetMachineRegistry::entry *TME =
- TargetMachineRegistry::getClosestStaticTargetForModule(*TheModule, Error);
- if (!TME) {
- Error = std::string("Unable to get target machine: ") + Error;
- return false;
- }
-
- // FIXME: Support features?
- std::string FeatureStr;
- TargetMachine *TM = TME->CtorFn(*TheModule, FeatureStr);
-
- // Set register scheduler & allocation policy.
- RegisterScheduler::setDefault(createDefaultScheduler);
- RegisterRegAlloc::setDefault(Fast ? createLocalRegisterAllocator :
- createLinearScanRegisterAllocator);
-
if (OutputFile == "-" || (InputFile == "-" && OutputFile.empty())) {
AsmOutStream = new raw_stdout_ostream();
sys::Program::ChangeStdoutToBinary();
@@ -189,6 +172,23 @@
} else if (Action == Backend_EmitLL) {
getPerModulePasses()->add(createPrintModulePass(AsmOutStream));
} else {
+ // Create the TargetMachine for generating code.
+ const TargetMachineRegistry::entry *TME =
+ TargetMachineRegistry::getClosestStaticTargetForModule(*TheModule, Error);
+ if (!TME) {
+ Error = std::string("Unable to get target machine: ") + Error;
+ return false;
+ }
+
+ // FIXME: Support features?
+ std::string FeatureStr;
+ TargetMachine *TM = TME->CtorFn(*TheModule, FeatureStr);
+
+ // Set register scheduler & allocation policy.
+ RegisterScheduler::setDefault(createDefaultScheduler);
+ RegisterRegAlloc::setDefault(Fast ? createLocalRegisterAllocator :
+ createLinearScanRegisterAllocator);
+
// From llvm-gcc:
// If there are passes we have to run on the entire module, we do codegen
// as a separate "pass" after that happens.
More information about the cfe-commits
mailing list