[driver][AIX] Accept '32_64' and 'any' as valid value for OBJECT_MODE (#205180)

If OBJECT_MODE is set to '32_64' or 'any', the driver accepts the
setting silently.
This commit is contained in:
Kelvin Li 2026-06-26 17:54:18 -04:00 committed by GitHub
parent ebe87bafcf
commit 518bd65d62
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 38 additions and 1 deletions

View file

@ -981,6 +981,8 @@ AIX Support
- Added support for ``#pragma comment(copyright, "token_sequence")`` on AIX.
This directive embeds a copyright or identifying string into the compiled object file.
The string is included in the final executable and loaded into memory at program runtime.
- The driver relaxes the restrictions on the ``OBJECT_MODE`` environment
variable and now silently accepts ``32_64`` and ``any``.
NetBSD Support
^^^^^^^^^^^^^^

View file

@ -674,11 +674,14 @@ static llvm::Triple computeTargetTriple(const Driver &D,
StringRef ObjectMode = *ObjectModeValue;
llvm::Triple::ArchType AT = llvm::Triple::UnknownArch;
// Silently accept '32_64' and 'any'
const bool OtherAllowedMode =
ObjectMode == "32_64" || ObjectMode == "any";
if (ObjectMode == "64") {
AT = Target.get64BitArchVariant().getArch();
} else if (ObjectMode == "32") {
AT = Target.get32BitArchVariant().getArch();
} else {
} else if (!OtherAllowedMode) {
D.Diag(diag::err_drv_invalid_object_mode) << ObjectMode;
}

View file

@ -12,6 +12,26 @@
// RUN: env OBJECT_MODE=32 \
// RUN: %clang -print-target-triple | FileCheck -check-prefix=CHECK32 %s
// RUN: env OBJECT_MODE=32_64 \
// RUN: %clang --target=powerpc-ibm-aix -print-target-triple | FileCheck -check-prefix=CHECK32 %s
// RUN: env OBJECT_MODE=32_64 \
// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple | FileCheck -check-prefix=CHECK64 %s
// RUN: env OBJECT_MODE=32_64 \
// RUN: %clang -print-target-triple | FileCheck \
// RUN: -check-prefix=%if target={{powerpc64-.*}} %{CHECK64%} %else %{CHECK32%} %s
// RUN: env OBJECT_MODE=any \
// RUN: %clang --target=powerpc-ibm-aix -print-target-triple | FileCheck -check-prefix=CHECK32 %s
// RUN: env OBJECT_MODE=any \
// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple | FileCheck -check-prefix=CHECK64 %s
// RUN: env OBJECT_MODE=any \
// RUN: %clang -print-target-triple | FileCheck \
// RUN: -check-prefix=%if target={{powerpc64-.*}} %{CHECK64%} %else %{CHECK32%} %s
// Command-line options win.
// RUN: env OBJECT_MODE=64 \
// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple -m32 | FileCheck -check-prefix=CHECK32 %s
@ -19,6 +39,18 @@
// RUN: env OBJECT_MODE=32 \
// RUN: %clang --target=powerpc-ibm-aix -print-target-triple -m64 | FileCheck -check-prefix=CHECK64 %s
// RUN: env OBJECT_MODE=32_64 \
// RUN: %clang --target=powerpc-ibm-aix -print-target-triple -m64 | FileCheck -check-prefix=CHECK64 %s
// RUN: env OBJECT_MODE=32_64 \
// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple -m32 | FileCheck -check-prefix=CHECK32 %s
// RUN: env OBJECT_MODE=any \
// RUN: %clang --target=powerpc-ibm-aix -print-target-triple -m64 | FileCheck -check-prefix=CHECK64 %s
// RUN: env OBJECT_MODE=any \
// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple -m32 | FileCheck -check-prefix=CHECK32 %s
// CHECK32: powerpc-ibm-aix
// CHECK64: powerpc64-ibm-aix