summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-12-23 00:47:42 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-12-23 00:47:42 +0000
commite0d2691b8812fd9b80b39c3d57fab4df1d061ad8 (patch)
tree01b9a0aeb697ef56cc9fdc3c0ca692864bcc724a /clang/lib
parent9df5c6dfc308f66ee21a25f1f7df7e9004d97e17 (diff)
downloadbcm5719-llvm-e0d2691b8812fd9b80b39c3d57fab4df1d061ad8.tar.gz
bcm5719-llvm-e0d2691b8812fd9b80b39c3d57fab4df1d061ad8.zip
Driver: Fix '... -O4 -O0 ...', which was generating bitcode.
llvm-svn: 91962
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Driver.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index c7eaad338c8..9ba5095aa86 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -739,6 +739,10 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
case phases::Precompile:
return new PrecompileJobAction(Input, types::TY_PCH);
case phases::Compile: {
+ bool HasO4 = false;
+ if (const Arg *A = Args.getLastArg(options::OPT_O_Group))
+ HasO4 = A->getOption().matches(options::OPT_O4);
+
if (Args.hasArg(options::OPT_fsyntax_only)) {
return new CompileJobAction(Input, types::TY_Nothing);
} else if (Args.hasArg(options::OPT__analyze, options::OPT__analyze_auto)) {
@@ -746,8 +750,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
} else if (Args.hasArg(options::OPT_emit_ast)) {
return new CompileJobAction(Input, types::TY_AST);
} else if (Args.hasArg(options::OPT_emit_llvm) ||
- Args.hasArg(options::OPT_flto) ||
- Args.hasArg(options::OPT_O4)) {
+ Args.hasArg(options::OPT_flto) || HasO4) {
types::ID Output =
Args.hasArg(options::OPT_S) ? types::TY_LLVMAsm : types::TY_LLVMBC;
return new CompileJobAction(Input, Output);
OpenPOWER on IntegriCloud