aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/Backend.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-02-03 01:18:43 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-02-03 01:18:43 +0000
commitda1573f95902a42aa4d11e8f45ab98ec7e27bc28 (patch)
tree0a970b14c3aa9b0874fb1b85439814ad429e922a /lib/Frontend/Backend.cpp
parent09cc141c89a5e9f305c17d7a88298647df16cedd (diff)
clang -cc1: Wire up -emit-obj, for emitting object files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95182 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/Backend.cpp')
-rw-r--r--lib/Frontend/Backend.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/Frontend/Backend.cpp b/lib/Frontend/Backend.cpp
index aab0daefd7..d48e8ef5a8 100644
--- a/lib/Frontend/Backend.cpp
+++ b/lib/Frontend/Backend.cpp
@@ -303,16 +303,15 @@ bool BackendConsumer::AddEmitPasses() {
case 3: OptLevel = CodeGenOpt::Aggressive; break;
}
- // Normal mode, emit a .s file by running the code generator.
- // Note, this also adds codegenerator level optimization passes.
- switch (TM->addPassesToEmitFile(*PM, FormattedOutStream,
- TargetMachine::CGFT_AssemblyFile,
- OptLevel)) {
- default:
+ // Normal mode, emit a .s or .o file by running the code generator. Note,
+ // this also adds codegenerator level optimization passes.
+ TargetMachine::CodeGenFileType CGFT = TargetMachine::CGFT_AssemblyFile;
+ if (Action == Backend_EmitObj)
+ CGFT = TargetMachine::CGFT_ObjectFile;
+ if (TM->addPassesToEmitFile(*PM, FormattedOutStream,
+ CGFT, OptLevel) != CGFT) {
Diags.Report(diag::err_fe_unable_to_interface_with_target);
return false;
- case TargetMachine::CGFT_AssemblyFile:
- break;
}
}