]> granicus.if.org Git - clang/commitdiff
Add -emit-llvm-only option (generate LLVM IR & run passes, but discard
authorDaniel Dunbar <daniel@zuster.org>
Thu, 26 Feb 2009 22:39:37 +0000 (22:39 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 26 Feb 2009 22:39:37 +0000 (22:39 +0000)
output).
 - For timing IRgen phase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65580 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/ASTConsumers.h
Driver/Backend.cpp
Driver/clang.cpp

index 34c9fb246ec820a5df65bfee26e8642bc823e17a..670f8dc190b38493b1ff19664aac78f185e09943 100644 (file)
@@ -48,7 +48,8 @@ ASTConsumer *CreateCodeRewriterTest(const std::string& InFile,
 enum BackendAction {
   Backend_EmitAssembly,
   Backend_EmitBC,
-  Backend_EmitLL
+  Backend_EmitLL,
+  Backend_EmitNothing
 };
 ASTConsumer *CreateBackendConsumer(BackendAction Action,
                                    Diagnostic &Diags,
index 8cffae0748400f046a4d5b5bbedb060c7438db51..3c7c1bc0288da1c52271a16d1ac34f3d82ecea30 100644 (file)
@@ -181,6 +181,9 @@ FunctionPassManager *BackendConsumer::getPerFunctionPasses() const {
 }
 
 bool BackendConsumer::AddEmitPasses(std::string &Error) {
+  if (Action == Backend_EmitNothing)
+    return true;
+
   if (OutputFile == "-" || (InputFile == "-" && OutputFile.empty())) {
     AsmOutStream = new raw_stdout_ostream();
     sys::Program::ChangeStdoutToBinary();
index d17f77b0a878d6e8d5c2154993fc4f5d727630e8..6fdd18af6bd62cbd186d97abd1fe2b7de4755157 100644 (file)
@@ -86,6 +86,7 @@ enum ProgActions {
   EmitAssembly,                 // Emit a .s file.
   EmitLLVM,                     // Emit a .ll file.
   EmitBC,                       // Emit a .bc file.
+  EmitLLVMOnly,                 // Generate LLVM IR, but do not 
   SerializeAST,                 // Emit a .ast file.
   EmitHTML,                     // Translate input source into HTML.
   ASTPrint,                     // Parse ASTs and print them.
@@ -143,6 +144,8 @@ ProgAction(llvm::cl::desc("Choose output type:"), llvm::cl::ZeroOrMore,
                         "Build ASTs then convert to LLVM, emit .ll file"),
              clEnumValN(EmitBC, "emit-llvm-bc",
                         "Build ASTs then convert to LLVM, emit .bc file"),
+             clEnumValN(EmitLLVMOnly, "emit-llvm-only",
+                        "Build ASTs and convert to LLVM, discarding output"),
              clEnumValN(SerializeAST, "serialize",
                         "Build ASTs and emit .ast file"),
              clEnumValN(RewriteTest, "rewrite-test",
@@ -1297,12 +1300,15 @@ static ASTConsumer *CreateASTConsumer(const std::string& InFile,
     
   case EmitAssembly:
   case EmitLLVM:
-  case EmitBC: {
+  case EmitBC: 
+  case EmitLLVMOnly: {
     BackendAction Act;
     if (ProgAction == EmitAssembly)
       Act = Backend_EmitAssembly;
     else if (ProgAction == EmitLLVM)
       Act = Backend_EmitLL;
+    else if (ProgAction == EmitLLVMOnly)
+      Act = Backend_EmitNothing;
     else
       Act = Backend_EmitBC;