diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index b2c984912154c..0ddbfac81b333 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -294,14 +294,18 @@ std::string tools::getCPUName(const ArgList &Args, const llvm::Triple &T, std::string TargetCPUName = ppc::getPPCTargetCPU(Args); // LLVM may default to generating code for the native CPU, // but, like gcc, we default to a more generic option for - // each architecture. (except on Darwin) - if (TargetCPUName.empty() && !T.isOSDarwin()) { - if (T.getArch() == llvm::Triple::ppc64) - TargetCPUName = "ppc64"; - else if (T.getArch() == llvm::Triple::ppc64le) - TargetCPUName = "ppc64le"; - else - TargetCPUName = "ppc"; + // each architecture. (except on AIX or Darwin) + if (TargetCPUName.empty()) { + if (T.isOSAIX()) + TargetCPUName = "pwr4"; + else if (!T.isOSDarwin()) { + if (T.getArch() == llvm::Triple::ppc64) + TargetCPUName = "ppc64"; + else if (T.getArch() == llvm::Triple::ppc64le) + TargetCPUName = "ppc64le"; + else + TargetCPUName = "ppc"; + } } return TargetCPUName; } diff --git a/clang/test/Driver/aix-mcpu-default.c b/clang/test/Driver/aix-mcpu-default.c new file mode 100644 index 0000000000000..10636abad3048 --- /dev/null +++ b/clang/test/Driver/aix-mcpu-default.c @@ -0,0 +1,16 @@ +// Check that the target cpu defaults to power4 on AIX. +// RUN: %clang -no-canonical-prefixes %s -### -c 2>&1 \ +// RUN: -target powerpc-ibm-aix \ +// RUN: | FileCheck --check-prefix=CHECK-MCPU-DEFAULT %s +// CHECK-MCPU-DEFAULT-NOT: warning: +// CHECK-MCPU-DEFAULT: {{.*}}clang{{.*}}" "-cc1" +// CHECK-MCPU-DEFAULT: "-target-cpu" "pwr4" + +// Check that the user is able to overwrite the default with '-mcpu'. +// RUN: %clang -no-canonical-prefixes %s -### -c 2>&1 \ +// RUN: -mcpu=pwr6 \ +// RUN: -target powerpc-ibm-aix \ +// RUN: | FileCheck --check-prefix=CHECK-MCPU-USER %s +// CHECK-MCPU-USER-NOT: warning: +// CHECK-MCPU-USER: {{.*}}clang{{.*}}" "-cc1" +// CHECK-MCPU-USER: "-target-cpu" "pwr6"