diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-21 20:11:54 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-21 20:11:54 +0000 |
| commit | 3169e80603c9496c250a2f74455d5ad12bc6ea6d (patch) | |
| tree | f7acce3ae47d888aeb24d9434a7f3b177a5a90d4 /clang/lib/Driver/ToolChains.cpp | |
| parent | 9bbf481f0203bd97038b4c9d8001476e0ac03c90 (diff) | |
| download | bcm5719-llvm-3169e80603c9496c250a2f74455d5ad12bc6ea6d.tar.gz bcm5719-llvm-3169e80603c9496c250a2f74455d5ad12bc6ea6d.zip | |
[driver] When creating the compiler invocation out of command-line
arguments, force use of clang frontend for the driver.
Fixes rdar://11356765.
llvm-svn: 157205
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index b0e94bff6cc..53b78d238b5 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -199,21 +199,25 @@ void Generic_ELF::anchor() {} Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA, const ActionList &Inputs) const { - Action::ActionClass Key; + Action::ActionClass Key = JA.getKind(); + bool useClang = false; if (getDriver().ShouldUseClangCompiler(C, JA, getTriple())) { + useClang = true; // Fallback to llvm-gcc for i386 kext compiles, we don't support that ABI. - if (Inputs.size() == 1 && + if (!getDriver().shouldForceClangUse() && + Inputs.size() == 1 && types::isCXX(Inputs[0]->getType()) && getTriple().isOSDarwin() && getTriple().getArch() == llvm::Triple::x86 && (C.getArgs().getLastArg(options::OPT_fapple_kext) || C.getArgs().getLastArg(options::OPT_mkernel))) - Key = JA.getKind(); - else - Key = Action::AnalyzeJobClass; - } else - Key = JA.getKind(); + useClang = false; + } + + // FIXME: This seems like a hacky way to choose clang frontend. + if (useClang) + Key = Action::AnalyzeJobClass; bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, options::OPT_no_integrated_as, |

