[llvm] [NFC][SpecialCaseList] Add findRule helpers (PR #203025)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 10 09:09:11 PDT 2026
https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/203025
>From 61e473f699d7f65f73338b9bb34753c255d84cb5 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Wed, 10 Jun 2026 08:42:00 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
=?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
---
llvm/lib/Support/SpecialCaseList.cpp | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/llvm/lib/Support/SpecialCaseList.cpp b/llvm/lib/Support/SpecialCaseList.cpp
index 7495308675c1d..0bf6930abd2c1 100644
--- a/llvm/lib/Support/SpecialCaseList.cpp
+++ b/llvm/lib/Support/SpecialCaseList.cpp
@@ -44,6 +44,7 @@ class RegexMatcher {
public:
Error insert(StringRef Pattern, unsigned LineNumber);
unsigned match(StringRef Query) const;
+ StringRef findRule(unsigned LineNo) const;
private:
struct Reg {
@@ -61,6 +62,7 @@ class GlobMatcher {
public:
Error insert(StringRef Pattern, unsigned LineNumber);
unsigned match(StringRef Query) const;
+ StringRef findRule(unsigned LineNo) const;
private:
struct Glob {
@@ -99,6 +101,9 @@ class Matcher {
std::variant<RegexMatcher, GlobMatcher> M;
bool RemoveDotSlash;
+
+private:
+ StringRef findRule(unsigned LineNo) const;
};
Error RegexMatcher::insert(StringRef Pattern, unsigned LineNumber) {
@@ -132,6 +137,14 @@ unsigned RegexMatcher::match(StringRef Query) const {
return 0;
}
+StringRef RegexMatcher::findRule(unsigned LineNo) const {
+ for (const auto &R : RegExes)
+ if (R.LineNo == LineNo)
+ return R.Name;
+ assert(!"`findRule` should be called only with correct `LineNo`");
+ return {};
+}
+
Error GlobMatcher::insert(StringRef Pattern, unsigned LineNumber) {
if (Pattern.empty())
return createStringError(errc::invalid_argument, "Supplied glob was blank");
@@ -218,6 +231,14 @@ unsigned GlobMatcher::match(StringRef Query) const {
return Best < 0 ? 0 : Globs[Best].LineNo;
}
+StringRef GlobMatcher::findRule(unsigned LineNo) const {
+ for (const auto &G : Globs)
+ if (G.LineNo == LineNo)
+ return G.Name;
+ assert(!"`findRule` should be called only with correct `LineNo`");
+ return {};
+}
+
Matcher::Matcher(bool UseGlobs, bool RemoveDotSlash)
: RemoveDotSlash(RemoveDotSlash) {
if (UseGlobs)
@@ -235,6 +256,11 @@ unsigned Matcher::match(StringRef Query) const {
Query = llvm::sys::path::remove_leading_dotslash(Query);
return std::visit([&](auto &V) -> unsigned { return V.match(Query); }, M);
}
+
+StringRef Matcher::findRule(unsigned LineNo) const {
+ return std::visit([&](auto &V) -> StringRef { return V.findRule(LineNo); },
+ M);
+}
} // namespace
class SpecialCaseList::Section::SectionImpl {
More information about the llvm-commits
mailing list