diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2011-06-21 20:55:08 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2011-06-21 20:55:08 +0000 |
| commit | 8f1fe5b5c34e287e4295a7508f1de49e71d991bd (patch) | |
| tree | 97ec71b6dc30743bf8b4909adf522d692fb9d8f8 | |
| parent | c1869a5ee169f8a1541e3e1cdf973a0128968418 (diff) | |
| download | bcm5719-llvm-8f1fe5b5c34e287e4295a7508f1de49e71d991bd.tar.gz bcm5719-llvm-8f1fe5b5c34e287e4295a7508f1de49e71d991bd.zip | |
Driver: Factor out IsUsingLTO helper function.
llvm-svn: 133542
| -rw-r--r-- | clang/include/clang/Driver/Driver.h | 2 | ||||
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 21 |
2 files changed, 16 insertions, 7 deletions
diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index 5a7d830b069..b6951663148 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -357,6 +357,8 @@ public: bool ShouldUseClangCompiler(const Compilation &C, const JobAction &JA, const llvm::Triple &ArchName) const; + bool IsUsingLTO(const ArgList &Args) const; + /// @} /// GetReleaseVersion - Parse (([0-9]+)(.([0-9]+)(.([0-9]+)?))?)? and diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index eb878a3f1c5..3a78b6a988f 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -942,10 +942,6 @@ 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_rewrite_objc)) { @@ -954,9 +950,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase, return new AnalyzeJobAction(Input, types::TY_Plist); } else if (Args.hasArg(options::OPT_emit_ast)) { return new CompileJobAction(Input, types::TY_AST); - } else if (Args.hasArg(options::OPT_emit_llvm) || - Args.hasFlag(options::OPT_flto, options::OPT_fno_lto, false) || - HasO4) { + } else if (IsUsingLTO(Args)) { types::ID Output = Args.hasArg(options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC; return new CompileJobAction(Input, Output); @@ -972,6 +966,19 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase, return 0; } +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)) + return true; + + // Check for -O4. + if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) + return A->getOption().matches(options::OPT_O4); + + return false; +} + void Driver::BuildJobs(Compilation &C) const { llvm::PrettyStackTraceString CrashInfo("Building compilation jobs"); |

