stevewan created this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. stevewan added reviewers: hubert.reinterpretcast, cebowleratibm, daltenty.
This patch changes the AIX default target CPU to power4 since this is the the lowest arch for the lowest OS level supported. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D80835 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/aix-mcpu-default.c Index: clang/test/Driver/aix-mcpu-default.c =================================================================== --- /dev/null +++ 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" Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -294,14 +294,18 @@ 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; }
Index: clang/test/Driver/aix-mcpu-default.c =================================================================== --- /dev/null +++ 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" Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -294,14 +294,18 @@ 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; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits