diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-07-20 19:14:30 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-07-20 19:14:30 +0000 |
commit | 5371243dab37e8293e008edae394721f2931cfef (patch) | |
tree | 79844751dd2a6fea5494447539d64a169361cfb5 | |
parent | 2ea9f25f5fdd23d309d009063f6a2f3124b0a6c3 (diff) | |
download | bcm5719-llvm-5371243dab37e8293e008edae394721f2931cfef.tar.gz bcm5719-llvm-5371243dab37e8293e008edae394721f2931cfef.zip |
If -ccc-host-triple i386-pc-win32-macho or -ccc-host-triple
x86_64-pc-win32-macho is used in conjunction with -no-integrated-as go ahead and
use the Darwin system assembler.
rdar://9785470
llvm-svn: 135604
-rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 10 | ||||
-rw-r--r-- | clang/test/Driver/ccc-host-triple-no-integrated-as.c | 20 |
2 files changed, 29 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 1619ef8f84a..8b5b2ec9b01 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -1752,6 +1752,10 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA, else Key = JA.getKind(); + bool UseIntegratedAs = C.getArgs().hasFlag(options::OPT_integrated_as, + options::OPT_no_integrated_as, + IsIntegratedAssemblerDefault()); + Tool *&T = Tools[Key]; if (!T) { switch (Key) { @@ -1766,7 +1770,11 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA, case Action::CompileJobClass: T = new tools::Clang(*this); break; case Action::AssembleJobClass: - T = new tools::ClangAs(*this); break; + if (!UseIntegratedAs && getTriple().getEnvironment() == llvm::Triple::MachO) + T = new tools::darwin::Assemble(*this); + else + T = new tools::ClangAs(*this); + break; case Action::LinkJobClass: T = new tools::visualstudio::Link(*this); break; } diff --git a/clang/test/Driver/ccc-host-triple-no-integrated-as.c b/clang/test/Driver/ccc-host-triple-no-integrated-as.c new file mode 100644 index 00000000000..ff0f3960fa6 --- /dev/null +++ b/clang/test/Driver/ccc-host-triple-no-integrated-as.c @@ -0,0 +1,20 @@ +// Check that -no-integrated-as works when -ccc-host-triple i386-pc-win32-macho or +// -ccc-host-triple x86_64-pc-win32-macho is specified. + +// RUN: %clang -### -c -ccc-host-triple i386-pc-win32-macho -no-integrated-as %s 2> %t1 +// RUN: FileCheck -check-prefix=X86 < %t1 %s +// RUN: %clang -### -c -ccc-host-triple x86_64-pc-win32-macho -no-integrated-as %s 2> %t2 +// RUN: FileCheck -check-prefix=X86_64 < %t2 %s +// +// X86: "-cc1" +// X86-NOT: "-cc1as" +// X86: "-arch" +// X86: "i386" +// +// X86_64: "-cc1" +// X86_64-NOT: "-cc1as" +// X86_64: "-arch" +// X86_64: "x86_64" + + + |