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
This commit is contained in:
Chad Rosier 2011-07-20 19:14:30 +00:00
parent 2ea9f25f5f
commit 5371243dab
2 changed files with 29 additions and 1 deletions

View File

@ -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;
}

View File

@ -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"