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/4] [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/4] 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/4] 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/4] 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 \ _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
