[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