diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-03-18 20:14:03 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-03-18 20:14:03 +0000 |
commit | 5ce872fdcdf868c60e91f4669b2c2925c5c2e6cc (patch) | |
tree | fb5db44e111cdd925c4d8c9991f26514ebeeede6 | |
parent | ac0659ae4124156915eddf70e78065df224d34c8 (diff) |
Driver/Darwin: Transparently fallback when compiling i386 -fapple-kext code, we
don't support the ABI yet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127903 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Driver/ToolChains.cpp | 15 | ||||
-rw-r--r-- | test/Driver/apple-kext-i386.cpp | 9 |
2 files changed, 21 insertions, 3 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 77fc0219a6..523ff14b0a 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -172,9 +172,18 @@ std::string Darwin::ComputeEffectiveClangTriple(const ArgList &Args) const { Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA, const ActionList &Inputs) const { Action::ActionClass Key; - if (getDriver().ShouldUseClangCompiler(C, JA, getTriple())) - Key = Action::AnalyzeJobClass; - else + + if (getDriver().ShouldUseClangCompiler(C, JA, getTriple())) { + // Fallback to llvm-gcc for i386 kext compiles, we don't support that ABI. + if (Inputs.size() == 1 && + types::isCXX(Inputs[0]->getType()) && + getTriple().getOS() == llvm::Triple::Darwin && + getTriple().getArch() == llvm::Triple::x86 && + C.getArgs().getLastArg(options::OPT_fapple_kext)) + Key = JA.getKind(); + else + Key = Action::AnalyzeJobClass; + } else Key = JA.getKind(); // FIXME: This doesn't belong here, but ideally we will support static soon diff --git a/test/Driver/apple-kext-i386.cpp b/test/Driver/apple-kext-i386.cpp new file mode 100644 index 0000000000..dc4e6a641f --- /dev/null +++ b/test/Driver/apple-kext-i386.cpp @@ -0,0 +1,9 @@ +// Check that we transparently fallback to llvm-gcc for i386 kexts, we don't +// support the ABI they use (yet). + +// RUN: %clang -ccc-host-triple i386-apple-darwin10 \ +// RUN: -fapple-kext -### -fsyntax-only %s 2> %t +// RUN: FileCheck --check-prefix=CHECK < %t %s + +// CHECK: cc1plus" +// CHECK: "-fapple-kext" |