diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -662,7 +662,8 @@ if (D.IsFlangMode() && getDriver().ShouldUseFlangCompiler(JA)) return getFlang(); if (getDriver().ShouldUseClangCompiler(JA)) return getClang(); Action::ActionClass AC = JA.getKind(); - if (AC == Action::AssembleJobClass && useIntegratedAs()) + if (AC == Action::AssembleJobClass && useIntegratedAs() && + !getTriple().isOSAIX()) return getClangAs(); return getTool(AC); } diff --git a/clang/test/Driver/target-as.s b/clang/test/Driver/target-as.s --- a/clang/test/Driver/target-as.s +++ b/clang/test/Driver/target-as.s @@ -1,6 +1,29 @@ // Make sure the -march is passed down to cc1as. // RUN: %clang -target i386-unknown-freebsd -### -c -integrated-as %s \ -// RUN: -march=geode 2>&1 | FileCheck -check-prefix=TARGET %s +// RUN: -march=geode 2>&1 | FileCheck -check-prefix=GEODE %s + +// Check powerpc64-ibm-aix7.1.0.0, 64-bit. +// RUN: %clang %s -### -c -fintegrated-as 2>&1 \ +// RUN: --target=powerpc64-ibm-aix7.1.0.0 \ +// RUN: | FileCheck --check-prefixes=AIX-AS64,CHECK %s // -// TARGET: "-cc1as" -// TARGET: "-target-cpu" "geode" +// RUN: %clang %s -### -c -fno-integrated-as 2>&1 \ +// RUN: --target=powerpc64-ibm-aix7.1.0.0 \ +// RUN: | FileCheck --check-prefixes=AIX-AS64,CHECK %s + +// Check powerpc-ibm-aix7.1.0.0, 32-bit. +// RUN: %clang %s -### -c -fintegrated-as 2>&1 \ +// RUN: --target=powerpc-ibm-aix7.1.0.0 \ +// RUN: | FileCheck --check-prefixes=AIX-AS32,CHECK %s +// +// RUN: %clang %s -### -c 2>&1 -fno-integrated-as \ +// RUN: --target=powerpc-ibm-aix7.1.0.0 \ +// RUN: | FileCheck --check-prefixes=AIX-AS32,CHECK %s + +// GEODE: "-cc1as" +// GEODE: "-target-cpu" "geode" + +// CHECK: "{{.*}}as{{(.exe)?}}" +// AIX-AS32: "-a32" +// AIX-AS64: "-a64" +// CHECK: "-many"