Driver::IsUsingLTO() no longer return true when seeing -emit-llvm.
authorShuxin Yang <shuxin.llvm@gmail.com>
Fri, 23 Aug 2013 21:34:57 +0000 (21:34 +0000)
committerShuxin Yang <shuxin.llvm@gmail.com>
Fri, 23 Aug 2013 21:34:57 +0000 (21:34 +0000)
One step toward differentiating following two commands:
   clang -O3 -flto a.c -c, and
   clang -O3 -emit-llvm a.c

Thanks many awesome folks for clarifying things.

llvm-svn: 189148

clang/lib/Driver/Driver.cpp

index f3b8beb..09da30d 100644 (file)
@@ -1340,6 +1340,10 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
       types::ID Output =
         Args.hasArg(options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
       return new CompileJobAction(Input, Output);
+    } else if (Args.hasArg(options::OPT_emit_llvm)) {
+      types::ID Output =
+        Args.hasArg(options::OPT_S) ? types::TY_LLVM_IR : types::TY_LLVM_BC;
+      return new CompileJobAction(Input, Output);
     } else {
       return new CompileJobAction(Input, types::TY_PP_Asm);
     }
@@ -1352,9 +1356,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
 }
 
 bool Driver::IsUsingLTO(const ArgList &Args) const {
-  // Check for -emit-llvm or -flto.
-  if (Args.hasArg(options::OPT_emit_llvm) ||
-      Args.hasFlag(options::OPT_flto, options::OPT_fno_lto, false))
+  if (Args.hasFlag(options::OPT_flto, options::OPT_fno_lto, false))
     return true;
 
   // Check for -O4.