[flang-commits] [flang] [flang] Add option to exclude array literals from isCompilerGenerated (PR #225164)

Valentin Clement バレンタイン クレメン via flang-commits flang-commits at lists.llvm.org
Mon Sep 21 11:56:01 PDT 2026


Valentin Clement =?utf-8?b?KOODkOODrOODsw=?Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/225164 at github.com>


https://github.com/clementval updated https://github.com/llvm/llvm-project/pull/225164

>From 9f82eec5d6eaa04734b569acfe4040485b51f5e9 Mon Sep 17 00:00:00 2001
From: Valentin Clement <clementval at gmail.com>
Date: Mon, 21 Sep 2026 11:26:55 -0700
Subject: [PATCH 1/2] [flang] Add option to exclude array literals from
 isCompilerGenerated

---
 flang/include/flang/Optimizer/Support/InternalNames.h | 3 ++-
 flang/lib/Optimizer/Support/InternalNames.cpp         | 5 ++++-
 flang/unittests/Optimizer/InternalNamesTest.cpp       | 4 ++++
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/flang/include/flang/Optimizer/Support/InternalNames.h b/flang/include/flang/Optimizer/Support/InternalNames.h
index f35c76b65f80d..6de13f51c9399 100644
--- a/flang/include/flang/Optimizer/Support/InternalNames.h
+++ b/flang/include/flang/Optimizer/Support/InternalNames.h
@@ -199,7 +199,8 @@ struct NameUniquer {
   /// If \p excludeStringLiterals is true, string literals are excluded from the
   /// check.
   static bool isCompilerGenerated(llvm::StringRef name,
-                                  bool excludeStringLiterals = true);
+                                  bool excludeStringLiterals = true,
+                                  bool excludeArrayLiterals = true);
 
 private:
   static std::string intAsString(std::int64_t i);
diff --git a/flang/lib/Optimizer/Support/InternalNames.cpp b/flang/lib/Optimizer/Support/InternalNames.cpp
index 4c7d56ec2c3ed..ed4d3a15e631d 100644
--- a/flang/lib/Optimizer/Support/InternalNames.cpp
+++ b/flang/lib/Optimizer/Support/InternalNames.cpp
@@ -442,7 +442,8 @@ bool fir::NameUniquer::isSpecialSymbol(llvm::StringRef name) {
 }
 
 bool fir::NameUniquer::isCompilerGenerated(llvm::StringRef name,
-                                           bool excludeStringLiterals) {
+                                           bool excludeStringLiterals,
+                                           bool excludeArrayLiterals) {
   auto [nameKind, deconstructed] = fir::NameUniquer::deconstruct(name);
 
   // Names that are not mangled by flang belong to the user (e.g. BIND(C)
@@ -455,6 +456,8 @@ bool fir::NameUniquer::isCompilerGenerated(llvm::StringRef name,
   if (nameKind == fir::NameUniquer::NameKind::GENERATED) {
     if (excludeStringLiterals && name.starts_with("_QQcl"))
       return false;
+    if (excludeArrayLiterals && name.starts_with("_QQro"))
+      return false;
     return true;
   }
 
diff --git a/flang/unittests/Optimizer/InternalNamesTest.cpp b/flang/unittests/Optimizer/InternalNamesTest.cpp
index d37b26bf89dd3..5e8290615d22c 100644
--- a/flang/unittests/Optimizer/InternalNamesTest.cpp
+++ b/flang/unittests/Optimizer/InternalNamesTest.cpp
@@ -301,6 +301,10 @@ TEST(InternalNamesTest, isCompilerGenerated) {
   ASSERT_TRUE(NameUniquer::isCompilerGenerated(
       "_QQcl.2E2F6669725F7064745F6578616D706C652E66393000",
       /*excludeStringLiterals=*/false));
+  // Test for array literals
+  ASSERT_FALSE(NameUniquer::isCompilerGenerated("_QQro.4x3xc1.0"));
+  ASSERT_TRUE(NameUniquer::isCompilerGenerated("_QQro.4x3xc1.0",
+      /*excludeStringLiterals=*/true, /*excludeArrayLiterals=*/false));
 }
 
 // main() from gtest_main

>From 8c4f51f5f2f634f2c8faea77bd0a419df401a7c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Valentin=20Clement=20=28=E3=83=90=E3=83=AC=E3=83=B3?=
 =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=B3=20=E3=82=AF=E3=83=AC=E3=83=A1?=
 =?UTF-8?q?=E3=83=B3=29?= <clementval at gmail.com>
Date: Mon, 21 Sep 2026 11:55:49 -0700
Subject: [PATCH 2/2] update comment
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Valentin Clement (バレンタイン クレメン) <clementval at gmail.com>
---
 flang/include/flang/Optimizer/Support/InternalNames.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/flang/include/flang/Optimizer/Support/InternalNames.h b/flang/include/flang/Optimizer/Support/InternalNames.h
index 6de13f51c9399..d5da47818e1c0 100644
--- a/flang/include/flang/Optimizer/Support/InternalNames.h
+++ b/flang/include/flang/Optimizer/Support/InternalNames.h
@@ -198,6 +198,8 @@ struct NameUniquer {
   /// Returns true if the passed name denotes a compiler generated name.
   /// If \p excludeStringLiterals is true, string literals are excluded from the
   /// check.
+  /// If \p excludeArrayLiterals is true, array literals are excluded from the
+  /// check.
   static bool isCompilerGenerated(llvm::StringRef name,
                                   bool excludeStringLiterals = true,
                                   bool excludeArrayLiterals = true);



More information about the flang-commits mailing list