This revision was automatically updated to reflect the committed changes.
Closed by commit rG9a733e8a2c58: [clang][driver] accept maix32/maix64 gcc
compat options (authored by daltenty).
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Changed prior to commit:
https://reviews.llvm.org/D145610?vs=503977=504840#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D145610/new/
https://reviews.llvm.org/D145610
Files:
clang/include/clang/Driver/Options.td
clang/lib/Driver/Driver.cpp
clang/test/Driver/aix-maix.c
Index: clang/test/Driver/aix-maix.c
===
--- /dev/null
+++ clang/test/Driver/aix-maix.c
@@ -0,0 +1,17 @@
+// Check GCC AIX bitmode compat options.
+
+// RUN: %clang -target powerpc-ibm-aix -maix64 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=CHECK64 %s
+
+// RUN: %clang -target powerpc64-ibm-aix -maix32 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=CHECK32 %s
+
+// RUN: %clang -target powerpc-unknown-linux -maix64 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=ERROR %s
+
+// RUN: %clang -target powerpc64-unknown-linux -maix32 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=ERROR %s
+
+// CHECK32: Target: powerpc-ibm-aix
+// CHECK64: Target: powerpc64-ibm-aix
+// ERROR: error: unsupported option '-maix
Index: clang/lib/Driver/Driver.cpp
===
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -594,13 +594,21 @@
}
}
+ // The `-maix[32|64]` flags are only valid for AIX targets.
+ if (Arg *A = Args.getLastArgNoClaim(options::OPT_maix32,
options::OPT_maix64);
+ A && !Target.isOSAIX())
+D.Diag(diag::err_drv_unsupported_opt_for_target)
+<< A->getAsString(Args) << Target.str();
+
// Handle pseudo-target flags '-m64', '-mx32', '-m32' and '-m16'.
Arg *A = Args.getLastArg(options::OPT_m64, options::OPT_mx32,
- options::OPT_m32, options::OPT_m16);
+ options::OPT_m32, options::OPT_m16,
+ options::OPT_maix32, options::OPT_maix64);
if (A) {
llvm::Triple::ArchType AT = llvm::Triple::UnknownArch;
-if (A->getOption().matches(options::OPT_m64)) {
+if (A->getOption().matches(options::OPT_m64) ||
+A->getOption().matches(options::OPT_maix64)) {
AT = Target.get64BitArchVariant().getArch();
if (Target.getEnvironment() == llvm::Triple::GNUX32)
Target.setEnvironment(llvm::Triple::GNU);
@@ -613,7 +621,8 @@
Target.setEnvironment(llvm::Triple::MuslX32);
else
Target.setEnvironment(llvm::Triple::GNUX32);
-} else if (A->getOption().matches(options::OPT_m32)) {
+} else if (A->getOption().matches(options::OPT_m32) ||
+ A->getOption().matches(options::OPT_maix32)) {
AT = Target.get32BitArchVariant().getArch();
if (Target.getEnvironment() == llvm::Triple::GNUX32)
Target.setEnvironment(llvm::Triple::GNU);
Index: clang/include/clang/Driver/Options.td
===
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -3416,10 +3416,12 @@
def EB : Flag<["-"], "EB">, Alias;
def m16 : Flag<["-"], "m16">, Group, Flags<[NoXarchOption,
CoreOption]>;
def m32 : Flag<["-"], "m32">, Group, Flags<[NoXarchOption,
CoreOption]>;
+def maix32 : Flag<["-"], "maix32">, Group, Flags<[NoXarchOption]>;
def mqdsp6_compat : Flag<["-"], "mqdsp6-compat">, Group,
Flags<[NoXarchOption,CC1Option]>,
HelpText<"Enable hexagon-qdsp6 backward compatibility">,
MarshallingInfoFlag>;
def m64 : Flag<["-"], "m64">, Group, Flags<[NoXarchOption,
CoreOption]>;
+def maix64 : Flag<["-"], "maix64">, Group, Flags<[NoXarchOption]>;
def mx32 : Flag<["-"], "mx32">, Group, Flags<[NoXarchOption,
CoreOption]>;
def mabi_EQ : Joined<["-"], "mabi=">, Group;
def miamcu : Flag<["-"], "miamcu">, Group, Flags<[NoXarchOption,
CoreOption]>,
Index: clang/test/Driver/aix-maix.c
===
--- /dev/null
+++ clang/test/Driver/aix-maix.c
@@ -0,0 +1,17 @@
+// Check GCC AIX bitmode compat options.
+
+// RUN: %clang -target powerpc-ibm-aix -maix64 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=CHECK64 %s
+
+// RUN: %clang -target powerpc64-ibm-aix -maix32 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=CHECK32 %s
+
+// RUN: %clang -target powerpc-unknown-linux -maix64 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=ERROR %s
+
+// RUN: %clang -target powerpc64-unknown-linux -maix32 -### -c %s 2>&1 | \
+// RUN: FileCheck --check-prefix=ERROR %s
+
+// CHECK32: Target: powerpc-ibm-aix
+// CHECK64: Target: powerpc64-ibm-aix
+// ERROR: error: unsupported option '-maix
Index: clang/lib/Driver/Driver.cpp