Author: Kelvin Li
Date: 2026-06-26T17:54:18-04:00
New Revision: 518bd65d62cd831c8ae583a0f0fbca6df9b37a3b

URL: 
https://github.com/llvm/llvm-project/commit/518bd65d62cd831c8ae583a0f0fbca6df9b37a3b
DIFF: 
https://github.com/llvm/llvm-project/commit/518bd65d62cd831c8ae583a0f0fbca6df9b37a3b.diff

LOG: [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.

Added: 
    

Modified: 
    clang/docs/ReleaseNotes.rst
    clang/lib/Driver/Driver.cpp
    clang/test/Driver/aix-object-mode.c

Removed: 
    


################################################################################
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 7fb3f273c5608..93f770c10afae 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -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
 ^^^^^^^^^^^^^^

diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index eb87bd2eebad0..0b04a68417bbe 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -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;
       }
 

diff  --git a/clang/test/Driver/aix-object-mode.c 
b/clang/test/Driver/aix-object-mode.c
index 7d79b5e900f67..c13b478bf7962 100644
--- a/clang/test/Driver/aix-object-mode.c
+++ b/clang/test/Driver/aix-object-mode.c
@@ -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
 


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to