aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetOptionsImpl.cpp
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2025-10-25 09:47:56 -0700
committerGitHub <noreply@github.com>2025-10-25 09:47:56 -0700
commit05c495de132f7609537686f60f312059ea70b4a6 (patch)
treeb9eab72ed75cd3ac241068264185de7549944a0b /llvm/lib/CodeGen/TargetOptionsImpl.cpp
parent059d90d08f610d5919c42646f267bbab77f7bee4 (diff)
downloadllvm-05c495de132f7609537686f60f312059ea70b4a6.zip
llvm-05c495de132f7609537686f60f312059ea70b4a6.tar.gz
llvm-05c495de132f7609537686f60f312059ea70b4a6.tar.bz2
[SpecialCaseList] Filtering Globs with matching prefix and suffix (#164543)
This commit enhances the `SpecialCaseList::GlobMatcher` to filter globs more efficiently by considering both prefixes and suffixes. Previously, the `GlobMatcher` used a `RadixTree` to store globs based on their prefixes. This allowed for quick lookup of potential matches by matching the query string's prefix against the stored prefixes. However, for globs with common prefixes but different suffixes, unnecessary glob matching attempts could still occur. This change introduces a nested `RadixTree` structure: `PrefixSuffixToGlob: RadixTree<Prefix, RadixTree<Suffix, Globs>>`. Now, when a query string is matched, it first finds matching prefixes, and then within those prefix matches, it further filters by matching the reversed suffix of the query string against the reversed suffixes of the globs. This significantly reduces the number of `Glob::match` calls, especially for large special case lists with many globs sharing common prefixes but differing in their suffixes. According to SpecialCaseListBM: Lookup benchmarks (significant improvements): ``` OVERALL_GEOMEAN -0.5815 ``` Lookup `*suffix` and `prefix*suffix` like benchmarks (huge improvements): ``` OVERALL_GEOMEAN -0.9316 ``` https://gist.github.com/vitalybuka/e586751902760ced6beefcdf0d7b26fd
Diffstat (limited to 'llvm/lib/CodeGen/TargetOptionsImpl.cpp')
0 files changed, 0 insertions, 0 deletions