https://github.com/kkwli updated 
https://github.com/llvm/llvm-project/pull/205180

>From 5c84f39a41beeb0c8029e062faf4fef0765092fa Mon Sep 17 00:00:00 2001
From: Kelvin Li <[email protected]>
Date: Mon, 22 Jun 2026 15:55:25 -0400
Subject: [PATCH 1/5] [driver][AIX] Accept '32_64' and 'any' as valid value for
 OBJECT_MODE

If OBJECT_MODE is set to '32_64' or 'any', the bit mode defaults to '32'.
---
 clang/lib/Driver/Driver.cpp         |  3 ++-
 clang/test/Driver/aix-object-mode.c | 15 +++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index ea06235de5c1f..d540d95c025ec 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -676,7 +676,8 @@ static llvm::Triple computeTargetTriple(const Driver &D,
 
       if (ObjectMode == "64") {
         AT = Target.get64BitArchVariant().getArch();
-      } else if (ObjectMode == "32") {
+      } else if (ObjectMode == "32" || ObjectMode == "32_64" ||
+                 ObjectMode == "any") {
         AT = Target.get32BitArchVariant().getArch();
       } else {
         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..4e513d5b5f9cd 100644
--- a/clang/test/Driver/aix-object-mode.c
+++ b/clang/test/Driver/aix-object-mode.c
@@ -12,6 +12,15 @@
 // RUN: env OBJECT_MODE=32 \
 // RUN: %clang -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 -check-prefix=CHECK32 %s
+
+// RUN: env OBJECT_MODE=any \
+// RUN: %clang -print-target-triple | FileCheck -check-prefix=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 +28,12 @@
 // 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=any \
+// RUN: %clang --target=powerpc-ibm-aix -print-target-triple -m64 | FileCheck 
-check-prefix=CHECK64 %s
+
 // CHECK32: powerpc-ibm-aix
 // CHECK64: powerpc64-ibm-aix
 

>From 2ca3697fbb53efdcc63c79f6c76995fde011bcba Mon Sep 17 00:00:00 2001
From: Kelvin Li <[email protected]>
Date: Mon, 22 Jun 2026 23:41:38 -0400
Subject: [PATCH 2/5] update test

---
 clang/test/Driver/aix-object-mode.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/clang/test/Driver/aix-object-mode.c 
b/clang/test/Driver/aix-object-mode.c
index 4e513d5b5f9cd..ad8caed52ae89 100644
--- a/clang/test/Driver/aix-object-mode.c
+++ b/clang/test/Driver/aix-object-mode.c
@@ -18,6 +18,9 @@
 // RUN: env OBJECT_MODE=32_64 \
 // RUN: %clang -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 -check-prefix=CHECK32 %s
 

>From 0a107a2effd91c287c2ef8108eaa78a4d506625f Mon Sep 17 00:00:00 2001
From: Kelvin Li <[email protected]>
Date: Wed, 24 Jun 2026 16:49:46 -0400
Subject: [PATCH 3/5] update the logic

---
 clang/lib/Driver/Driver.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index d540d95c025ec..7c9241f43379e 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -674,12 +674,12 @@ static llvm::Triple computeTargetTriple(const Driver &D,
       StringRef ObjectMode = *ObjectModeValue;
       llvm::Triple::ArchType AT = llvm::Triple::UnknownArch;
 
+      // Silently accept '32_64' and 'any'
       if (ObjectMode == "64") {
         AT = Target.get64BitArchVariant().getArch();
-      } else if (ObjectMode == "32" || ObjectMode == "32_64" ||
-                 ObjectMode == "any") {
+      } else if (ObjectMode == "32") {
         AT = Target.get32BitArchVariant().getArch();
-      } else {
+      } else if (ObjectMode != "32_64" && ObjectMode != "any") {
         D.Diag(diag::err_drv_invalid_object_mode) << ObjectMode;
       }
 

>From 8fd63920f991c323f073554a94ec51c0b9356880 Mon Sep 17 00:00:00 2001
From: Kelvin Li <[email protected]>
Date: Wed, 24 Jun 2026 18:48:09 -0400
Subject: [PATCH 4/5] Update LIT test and Release Notes

---
 clang/docs/ReleaseNotes.rst         | 2 ++
 clang/lib/Driver/Driver.cpp         | 3 ++-
 clang/test/Driver/aix-object-mode.c | 8 ++++----
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 42c5dc16ea2e1..544e7b15532ba 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -960,6 +960,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 7c9241f43379e..401183cb23770 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -675,11 +675,12 @@ static llvm::Triple computeTargetTriple(const Driver &D,
       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 if (ObjectMode != "32_64" && ObjectMode != "any") {
+      } 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 ad8caed52ae89..72708ad5e6758 100644
--- a/clang/test/Driver/aix-object-mode.c
+++ b/clang/test/Driver/aix-object-mode.c
@@ -13,16 +13,16 @@
 // RUN: %clang -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: %clang --target=powerpc-ibm-aix -print-target-triple | FileCheck 
-check-prefix=CHECK32 %s
 
 // RUN: env OBJECT_MODE=32_64 \
-// RUN: %clang -print-target-triple | FileCheck -check-prefix=CHECK32 %s
+// RUN: %clang -print-target-triple | FileCheck -check-prefix=CHECK64 %s
 
 // RUN: env OBJECT_MODE=any \
-// RUN: %clang --target=powerpc64-ibm-aix -print-target-triple | FileCheck 
-check-prefix=CHECK64 %s
+// RUN: %clang --target=powerpc-ibm-aix -print-target-triple | FileCheck 
-check-prefix=CHECK32 %s
 
 // RUN: env OBJECT_MODE=any \
-// RUN: %clang -print-target-triple | FileCheck -check-prefix=CHECK32 %s
+// RUN: %clang -print-target-triple | FileCheck -check-prefix=CHECK64 %s
 
 // Command-line options win.
 // RUN: env OBJECT_MODE=64 \

>From 945a6af612d1bbf30748866dcc56f583a2f725c1 Mon Sep 17 00:00:00 2001
From: Kelvin Li <[email protected]>
Date: Wed, 24 Jun 2026 18:54:11 -0400
Subject: [PATCH 5/5] Fix format

---
 clang/lib/Driver/Driver.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 401183cb23770..aaf799d037903 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -675,7 +675,8 @@ static llvm::Triple computeTargetTriple(const Driver &D,
       llvm::Triple::ArchType AT = llvm::Triple::UnknownArch;
 
       // Silently accept '32_64' and 'any'
-      const bool OtherAllowedMode = ObjectMode == "32_64" || ObjectMode == 
"any";
+      const bool OtherAllowedMode =
+          ObjectMode == "32_64" || ObjectMode == "any";
       if (ObjectMode == "64") {
         AT = Target.get64BitArchVariant().getArch();
       } else if (ObjectMode == "32") {

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

Reply via email to