diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2010-05-25 18:41:01 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2010-05-25 18:41:01 +0000 | 
| commit | 4c77a6439150e7c3d3b7f9e9675e5fd81efa6ef0 (patch) | |
| tree | 6f57be7bbe43392a06cefc06541a8296f3ecf217 /clang/lib/Frontend | |
| parent | 4a5b2c597b86965e2ea0a0ddd7f4a4b66a417177 (diff) | |
| download | bcm5719-llvm-4c77a6439150e7c3d3b7f9e9675e5fd81efa6ef0.tar.gz bcm5719-llvm-4c77a6439150e7c3d3b7f9e9675e5fd81efa6ef0.zip | |
Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not the
.s printer or .o writer.
llvm-svn: 104623
Diffstat (limited to 'clang/lib/Frontend')
| -rw-r--r-- | clang/lib/Frontend/CodeGenAction.cpp | 8 | ||||
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 3 | 
2 files changed, 11 insertions, 0 deletions
| diff --git a/clang/lib/Frontend/CodeGenAction.cpp b/clang/lib/Frontend/CodeGenAction.cpp index 86005f280ac..03e3ea605cc 100644 --- a/clang/lib/Frontend/CodeGenAction.cpp +++ b/clang/lib/Frontend/CodeGenAction.cpp @@ -48,6 +48,7 @@ namespace {      Backend_EmitBC,        ///< Emit LLVM bitcode files      Backend_EmitLL,        ///< Emit human-readable LLVM assembly      Backend_EmitNothing,   ///< Don't emit anything (benchmarking mode) +    Backend_EmitMCNull,    ///< Run CodeGen, but don't emit anything      Backend_EmitObj        ///< Emit native object files    }; @@ -340,6 +341,10 @@ bool BackendConsumer::AddEmitPasses() {    TargetMachine::CodeGenFileType CGFT = TargetMachine::CGFT_AssemblyFile;    if (Action == Backend_EmitObj)      CGFT = TargetMachine::CGFT_ObjectFile; +  else if (Action == Backend_EmitMCNull) +    CGFT = TargetMachine::CGFT_Null; +  else +    assert(Action == Backend_EmitAssembly && "Invalid action!");    if (TM->addPassesToEmitFile(*PM, FormattedOutStream, CGFT, OptLevel,                                /*DisableVerify=*/!CodeGenOpts.VerifyModule)) {      Diags.Report(diag::err_fe_unable_to_interface_with_target); @@ -557,6 +562,7 @@ ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,      break;    case Backend_EmitNothing:      break; +  case Backend_EmitMCNull:    case Backend_EmitObj:      OS.reset(CI.createDefaultOutputFile(true, InFile, "o"));      break; @@ -579,4 +585,6 @@ EmitLLVMAction::EmitLLVMAction() : CodeGenAction(Backend_EmitLL) {}  EmitLLVMOnlyAction::EmitLLVMOnlyAction() : CodeGenAction(Backend_EmitNothing) {} +EmitCodeGenOnlyAction::EmitCodeGenOnlyAction() : CodeGenAction(Backend_EmitMCNull) {} +  EmitObjAction::EmitObjAction() : CodeGenAction(Backend_EmitObj) {} diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6239caf3948..b6a233dac46 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -316,6 +316,7 @@ static const char *getActionName(frontend::ActionKind Kind) {    case frontend::EmitHTML:               return "-emit-html";    case frontend::EmitLLVM:               return "-emit-llvm";    case frontend::EmitLLVMOnly:           return "-emit-llvm-only"; +  case frontend::EmitCodeGenOnly:        return "-emit-codegen-only";    case frontend::EmitObj:                return "-emit-obj";    case frontend::FixIt:                  return "-fixit";    case frontend::GeneratePCH:            return "-emit-pch"; @@ -927,6 +928,8 @@ ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Diagnostic &Diags) {        Opts.ProgramAction = frontend::EmitLLVM; break;      case OPT_emit_llvm_only:        Opts.ProgramAction = frontend::EmitLLVMOnly; break; +    case OPT_emit_codegen_only: +      Opts.ProgramAction = frontend::EmitCodeGenOnly; break;      case OPT_emit_obj:        Opts.ProgramAction = frontend::EmitObj; break;      case OPT_fixit_EQ: | 

