Skip to content

LLVM and SPIRV-LLVM-Translator pulldown (WW52) #12255

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 348 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
348 commits
Select commit Hold shift + click to select a range
a4e1541
[mlir][ArmSME] Move creation of load/store intrinsics to helpers (NFC…
MacDue Dec 21, 2023
34a6598
[MLIR] Erase location of folded constants (#75415)
zyx-billy Dec 21, 2023
192f720
Re-land "[AArch64] Add FEAT_PAuthLR assembler support" (#75947)
tmatheson-arm Dec 21, 2023
6a870cc
Add tests for driver to propagate module map flags for layering check…
googlewalt Dec 21, 2023
f44079d
[ISel] Add pattern matching for depositing subreg value (#75978)
david-xl Dec 21, 2023
c50de57
[flang] Fix a warning
kazutakahirata Dec 21, 2023
7bd1721
Re-land "[AArch64] Codegen support for FEAT_PAuthLR" (#75947)
tmatheson-arm Dec 21, 2023
2366d53
[X86] Fix more medium code model addressing modes (#75641)
aeubanks Dec 21, 2023
9664ab5
[llvm-profdata] Modernize FuncSampleStats, ValueSitesStats, and HotFu…
kazutakahirata Dec 21, 2023
e6f5762
[mlir][vector][nfc] Add a test case for scalable vectors (#76138)
banach-space Dec 21, 2023
0224ec0
Merge branch 'sycl' into sycl-web
jsji Dec 21, 2023
7433b1c
Reapply "[X86] Set SHF_X86_64_LARGE for globals with explicit well-kn…
aeubanks Dec 21, 2023
058e527
[AccelTable][NFC] Fix typos and duplicated code (#76155)
felipepiovezan Dec 21, 2023
809f2f3
[AArch64][SME2] Add builtins for FDOT, BFDOT, SUDOT, USDOT, SDOT, UDO…
Dec 21, 2023
74a09bd
[SystemZ] Test improvements for atomic load/store instructions (NFC).…
JonPsson1 Dec 21, 2023
1830fad
[LLDB] Fix write permission error in TestGlobalModuleCache.py (#76171)
cmtice Dec 21, 2023
528150b
[hwasan] Separate sections in report (#76130)
vitalybuka Dec 21, 2023
0cf3af0
Revert "[Flang] Allow Intrinsic simpification with min/maxloc dim and…
psteinfeld Dec 21, 2023
1577483
[BOLT] Don't split likely fallthrough in CDSplit (#76164)
ShatianWang Dec 21, 2023
0110245
[test][hwasan] Update tests missed by #76130
vitalybuka Dec 21, 2023
35a5df2
[WebAssembly][Object] Record section start offsets at start of payloa…
dschuff Dec 21, 2023
12250c4
Reland [OpenMP][Fix] libomptarget Fortran tests (#76189)
fabianmcg Dec 21, 2023
82b38e8
[ASan][libc++] Optimization of container annotations (#76082)
AdvenamTacet Dec 21, 2023
3ca9bcc
[llvm][docs][X86] Mention code model improvements in ReleaseNotes (#7…
aeubanks Dec 21, 2023
e64f5d6
[RISCV] Replace RISCVISD::VP_MERGE_VL with a new node that has a sepa…
topperc Dec 21, 2023
f70b229
[LLDB] Define _BSD_SOURCE globally, to get optreset available in ming…
mstorsjo Dec 21, 2023
38eea57
[ADT] fix grammatical typo in Twine.h docs, NFC
cyndyishida Dec 21, 2023
7c3b67d
[hwasan] Respect strip_path_prefix printing locals (#76132)
vitalybuka Dec 22, 2023
033ec09
[Clang][Sema] Fix Wswitch-default bad warning in template (#76007)
hstk30-hw Dec 22, 2023
7db28dd
[hwasan] Classify stack overflow, and use after scope (#76133)
vitalybuka Dec 22, 2023
c99670b
[mlir][vector] `LoadOp`/`StoreOp`: Allow 0-D vectors (#76134)
matthias-springer Dec 22, 2023
c03745d
libc++-infa: Hotfix runner group
EricWF Dec 22, 2023
62d8ae0
[X86][NFC] Remove class (VEX/EVEX/XOP)_4V and add class VVVV
KanRobert Dec 22, 2023
847a6f8
[mlir][MemRef] Add runtime bounds checking (#75817)
ryanpholt Dec 22, 2023
26ddf4e
[ELF] Change .debug_names tombstone value to UINT32_MAX/UINT64_MAX (#…
MaskRay Dec 22, 2023
a03c53c
[mlir][spirv] Add physical storage buffer extension test. NFC. (#76196)
kuhar Dec 22, 2023
248fba0
AMDGPU: Remove pointless setOperationAction for xint_to_fp
arsenm Dec 21, 2023
0ccc1e7
Revert "[AArch64] Fold more load.x into load.i with large offset"
vitalybuka Dec 22, 2023
beffa1e
[test][hwasan] Try to fix Android bot
vitalybuka Dec 22, 2023
50ed3b1
AMDGPU: Workaround a divergent return value bug in test
arsenm Dec 20, 2023
c7952d8
AMDGPU: Add a few more bfloat codegen tests
arsenm Dec 21, 2023
cca63f9
[Docs] Remove llvm-objdump man page (#75759)
boomanaiden154 Dec 22, 2023
bb7f8f7
[test][hwasan] Update another test after #76133
vitalybuka Dec 22, 2023
782cf12
Fix chunk-print-before-all script
arpilipe Dec 22, 2023
4d1cd38
DAG: Handle promotion of fcanonicalize
arsenm Dec 20, 2023
b296dfd
Merge from 'sycl' to 'sycl-web'
Dec 22, 2023
297704c
Merge from 'main' to 'sycl-web' (269 commits)
Dec 22, 2023
7b3323f
[X86][MC] Support Enc/Dec for EGPR for promoted CET instruction (#76023)
XinWang10 Dec 22, 2023
f25bcfb
[test][hwasan] XFAIL new test which fails for unknown reason
vitalybuka Dec 22, 2023
90f816e
[RISCV] Rename TuneVeyronFusions to TuneVentanaVeyron
wangpc-pp Dec 22, 2023
f9c9088
[RISCV] Split TuneShiftedZExtFusion (#76032)
wangpc-pp Dec 22, 2023
fc3eed1
[Github] Reformat strings for code format action (#75764)
boomanaiden154 Dec 22, 2023
59eebb4
[RISCV] Fix macro-fusions.mir
wangpc-pp Dec 22, 2023
33707fe
Omited resolution change (#12238)
XinWang10 Dec 22, 2023
1d4691a
[X86][MC] Support Enc/Dec for EGPR for promoted CMPCCXADD instruction…
XinWang10 Dec 22, 2023
e2d0f50
[clang][NFC] Remove trailing whitespace characters
benshi001 Dec 22, 2023
a15532d
[X86] Add CPU detection for more znver2 CPUs (#74955)
boomanaiden154 Dec 22, 2023
73b86d1
[mlir][Transforms] `GreedyPatternRewriteDriver`: verify IR (#74270)
matthias-springer Dec 22, 2023
ff32ab3
[X86][NFC] Not imply TB in PS|PD|XS|XD
KanRobert Dec 22, 2023
06a9c67
[CVP] Fix #76058: missing debug location in processSDiv function (#76…
Apochens Dec 22, 2023
17858ce
[MacroFusion] Remove createBranchMacroFusionDAGMutation (#76209)
wangpc-pp Dec 22, 2023
0d903b6
[clang][ASTImporter] Import AlignValueAttr correctly. (#75308)
balazske Dec 22, 2023
3f199cb
[SROA] Add test for #64081 (NFC)
nikic Dec 22, 2023
54067c5
[SROA] Use memcpy if type size does not match store size
nikic Dec 22, 2023
0e46b49
Reapply "RegisterCoalescer: Add implicit-def of super register when c…
arsenm Dec 22, 2023
f3fa603
[flang] lower ASSOCIATED for procedure pointers (#76067)
jeanPerier Dec 22, 2023
30a1c0a
[flang] c_funloc - handle pocedure pointers in convertToBox (#76070)
jeanPerier Dec 22, 2023
0ac1dfa
[flang] lower c_f_procpointer (#76071)
jeanPerier Dec 22, 2023
7109a46
[AArch64] Assembly support for the Armv9.5-A RAS Extensions (#76161)
pratlucas Dec 22, 2023
625197d
[clang][ASTImporter] Support Importer of BuiltinBitCastExpr (#74813)
jcsxky Dec 22, 2023
f7c3627
DAG: Implement promotion for strict_fpextend (#74310)
arsenm Dec 22, 2023
24e80d4
[IndVars] Move "using namespace" to top-level scope (NFC)
nikic Dec 22, 2023
c165591
[IndVars] Avoid unnecessary truncate for zext nneg use
nikic Dec 22, 2023
ffabf73
[NFC][OpenMP][MLIR] Add test for lowering parallel workshare GPU loop…
DominikAdamski Dec 22, 2023
95b423e
[Sema] NFC. Simplify code in a few places of TryOrBuildParenListIniti…
ilya-biryukov Dec 22, 2023
86dc6e1
[Sema] Fix crash on invalid code with parenthesized aggregate initial…
ilya-biryukov Dec 22, 2023
7ab16fb
[Sema] Update test for previous change
ilya-biryukov Dec 22, 2023
d430c14
[CMake] Move check for dlfcn.h and dladdr to clang (#76163)
abhina-sree Dec 22, 2023
48b9106
[AArch64] Add an strict fp reduction test. NFC
davemgreen Dec 22, 2023
d03beb9
[clang-format] Do not break on JS fields like on goto labels (#76233)
ilya-biryukov Dec 22, 2023
85b2327
[mlir][nvvm] Fix the PTX lowering of wgmma.mma_async (#76150)
apaszke Dec 22, 2023
f5ab0bb
[AArch64] paci<k>171615 auti<k>171615 assembly (#76227)
tmatheson-arm Dec 22, 2023
efeb546
[clang-format] Add common attribute macros to Google style (#76239)
ilya-biryukov Dec 22, 2023
3736e1d
[SCEV] Ensure shift amount is in range before calling getZExtValue()
RKSimon Dec 22, 2023
e4f1c52
[AArch64] Assembly support for the Armv9.5-A Memory System Extensions…
pratlucas Dec 22, 2023
5cb7534
[tsan] Only intercept pthread_mutex_clocklock on Linux (#76220)
rorth Dec 22, 2023
40ec791
[RegAllocFast] Refactor dominates algorithm for large basic block (#7…
HaohaiWen Dec 22, 2023
5f254eb
[Bazel] Fixup for #76163
chapuni Dec 22, 2023
658b260
[Attributor] Don't construct pretty GEPs
nikic Dec 22, 2023
d82eccc
[RegAllocFast] Avoid duplicate hash lookup (NFC)
nikic Dec 22, 2023
4b69689
[AArch64] Implement spill/fill of predicate pair register classes (#7…
momchil-velikov Dec 22, 2023
dd85c6c
[Sema] Add -Wc++11-narrowing-const-reference (#76094)
MaskRay Dec 22, 2023
6c2ad8a
[TLI][NFC] Autogenerate vectorized call tests for SLEEF/ArmPL. (#76146)
labrinea Dec 22, 2023
650119c
[gn] port d430c145ba92 (dladdr check for clang)
nico Dec 22, 2023
3669238
[lit] add `LIT_MAX_WORKERS` env variable (#76205)
makslevental Dec 22, 2023
d782f19
lld/MachO: Fix two typos to cycle bots
nico Dec 22, 2023
04c473b
[lldb] Fix two deprecation warnings
nico Dec 22, 2023
52b7045
[flang][MLIR][OpenMP] Emit `UpdateDataOp` from `!$omp target update` …
ergawy Dec 22, 2023
e9a56ab
[PhaseOrdering] Add test with removable chained conditions.
fhahn Dec 22, 2023
1ba4a45
[test][hwasan] Add -g required for the test
vitalybuka Dec 22, 2023
9b6ea5e
[OpenMP] Improve omp offload profiler (#68016)
fel-cab Dec 22, 2023
345d7b1
[InstCombine] Fold minmax intrinsic using KnownBits information (#76242)
dtcxzyw Dec 22, 2023
813a671
[OpenMP] Remove unnecessary dependencies from plugin unit tests (#76266)
EthanLuisMcDonough Dec 22, 2023
ceccacb
[test][hwasan] Re-enabled android test
vitalybuka Dec 22, 2023
0e039fc
[APINotes] Use DenseMap::contains (NFC)
kazutakahirata Dec 22, 2023
4532617
Change release branch creation process to bump version to N.1.0. (#75…
jyknight Dec 22, 2023
03dc806
[Transforms] Use {DenseMap,SmallPtrSet}::contains (NFC)
kazutakahirata Dec 22, 2023
2205d23
Revert "[Sema] Fix crash on invalid code with parenthesized aggregate…
vitalybuka Dec 22, 2023
63c3148
[llvm-exegesis] Fix stack pointer register restoration
boomanaiden154 Dec 23, 2023
61b5cc6
[LLVM] ConvergenceControlInst as a derived class of IntrinsicInst (#7…
ssahasra Dec 23, 2023
bbe1b06
[NFC][CLANG] Fix static analyzer bugs about unnecessary object copies…
smanna12 Dec 23, 2023
31aa7d2
[RISCV] Use riscv_bitmanip.h in zbb.c. NFC
topperc Dec 23, 2023
f8f8926
[clang-format] Fix a bug in annotating function declaration names (#7…
owenca Dec 23, 2023
8097a5d
[clang-format] Fix operator overload inconsistency in `BreakAfterAttr…
XDeme1 Dec 23, 2023
f78a742
[NFC][sanitizer] Rename Lock{Before,After}Fork suffixes locking Stack…
vitalybuka Dec 23, 2023
b203d53
[libc++] Optimize std::find if types are integral and have the same s…
philnik777 Dec 23, 2023
5841140
[libc++][modules] Fixes C++20 build errors.
mordante Dec 23, 2023
ed6dc62
DAG: Handle equal size element build_vector promotion (#76213)
arsenm Dec 23, 2023
fbcf8a8
[ConstraintElim] Add (UGE, var, 0) to unsigned system for new vars. (…
fhahn Dec 23, 2023
acacec3
[LiveDebugValues][nfc] Reduce memory usage of InstrRef (#76051)
felipepiovezan Dec 23, 2023
061e4f2
[mlir][doc] Escape effects, interfaces, and traits (#76297)
rikhuijzer Dec 23, 2023
0e07bf9
[NFC][sanitizer] Rename to Lock{Before,After}Fork StackDepotBase lock…
vitalybuka Dec 24, 2023
6e20df1
[X86][NFC] Set default OpPrefix to PS for XOP/VEX/EVEX instructions
KanRobert Dec 23, 2023
17ff25a
[X86][NFC] Not infer OpSize from Xi8|16|32|64
KanRobert Dec 24, 2023
1daf299
[llvm] Use StringRef::contains (NFC)
kazutakahirata Dec 24, 2023
0f1721c
[clang-tidy] Use StringRef::contains (NFC)
kazutakahirata Dec 24, 2023
eeeb963
[libc++] Use __datasizeof for __libcpp_datasizeof if available (#72104)
philnik777 Dec 24, 2023
50ae0da
[libc++][NFC] Refactor <experimental/simd> a bit to simplify dependen…
philnik777 Dec 24, 2023
e060392
[gn build] Port 50ae0da05829
llvmgnsyncbot Dec 24, 2023
d26791b
[Clang][RISCV] Use `__builtin_popcount` in `__riscv_cpop_32/64` (#76286)
dtcxzyw Dec 24, 2023
1dc715a
[Clang][RISCV] Add missing support for `__riscv_clmulr_32/64` in `ris…
dtcxzyw Dec 24, 2023
8f9803b
[clang-format] Add an fnmatch-like function for .clang-format-ignore …
owenca Dec 24, 2023
51b988e
[gn build] Port 8f9803b5ab0b
llvmgnsyncbot Dec 24, 2023
1479fe8
[X86][NFC] Rename variables and define a var for duplicated strings i…
KanRobert Dec 24, 2023
eea2176
[Doc] update the usage of opt with mem2reg pass in tutorial (#76282)
youkaichao Dec 24, 2023
1e710cf
[DAG] Add TLI::isTruncateFree(SDValue, EVT) wrapper.
RKSimon Dec 24, 2023
9423e45
[ProfileData] Copy CallTargetMaps a bit less. NFCI
d0k Dec 24, 2023
d8ddcae
[LSR] Fix typo in debug message where backspace escape was used inste…
topperc Dec 24, 2023
4c1bc8e
[JITLink][MachO] Handle intra-block subtractor relocations.
lhames Dec 24, 2023
09e6f12
[builtins] Fix CPU feature detection for Zircon (#76276)
petrhosek Dec 24, 2023
422b67a
[Analysis] Use range-based for loops (NFC)
kazutakahirata Dec 24, 2023
0d454d6
[InstCombine] Fold xor of icmps using range information (#76334)
dtcxzyw Dec 24, 2023
a041da3
[X86] Use range-based for loops (NFC)
kazutakahirata Dec 24, 2023
fd331ef
[CostModel][X86] Track fpext conversion cost for 16 elements (#76277)
HaohaiWen Dec 25, 2023
536b043
[RegAllocFast] Lazily initialize InstrPosIndexes for each MBB (#76275)
HaohaiWen Dec 25, 2023
34727b0
[RISCV] Remove +experimental-zfbfmin from the testcases for Zvfbfmin …
tclin914 Dec 25, 2023
9b99a30
[clang][ASTImporter] skip TemplateTypeParmDecl in VisitTypeAliasTempl…
jcsxky Dec 25, 2023
81ae2a8
[clang] Fix '-Wunused-variable' warnings. NFC
darkbuck Dec 25, 2023
af837d4
[RISCV][DAG] Teach computeKnownBits consider SEW/LMUL/AVL for vsetvli…
yetingk Dec 25, 2023
966d564
asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST redux (#7…
dankm Dec 25, 2023
41cb686
[CodeGen] Use range-based for loops (NFC)
kazutakahirata Dec 25, 2023
af8d050
[Target] Use range-based for loops (NFC)
kazutakahirata Dec 25, 2023
fe21b39
[Basic] Use range-based for loops (NFC)
kazutakahirata Dec 25, 2023
03b7747
[libc++][test] Move `abi.compile.pass.cpp` to `libcxx` subdirectory (…
frederick-vs-ja Dec 25, 2023
88548df
[lld][LoongArch] Support the R_LARCH_CALL36 relocation type (#73346)
SixWeining Dec 25, 2023
b951239
[polly] [CMake] Link polly-isl-test with LLVMSupport (#65424)
vient Sep 6, 2023
58689e4
[polly] [CMake] Create component and install target in add_polly_libr…
vimproved Sep 17, 2023
0fbc728
[lld][test][LoongArch] Remove the test for R_LARCH_CALL36 range checking
SixWeining Dec 25, 2023
48f36c6
[LLVM] Make use of s_flbit_i32_b64 and s_ff1_i32_b64 (#75158)
Acim-Maravic Dec 25, 2023
952d344
[clang-tidy] introduce a unused local non trival variable check (#76101)
rockwotj Dec 25, 2023
3f85fb9
[gn build] Port 952d344f3e25
llvmgnsyncbot Dec 25, 2023
007ed0d
[clang-tidy][NFC] Enable exceptions in test for bugprone-unused-local…
PiotrZSL Dec 25, 2023
37fc9c6
[clang-tidy][NFC] Enable exceptions in test for bugprone-unused-local…
PiotrZSL Dec 25, 2023
9fba1d5
[clang-tidy] Fixes for bugprone-unused-local-non-trivial-variable
PiotrZSL Dec 25, 2023
6452395
Revert "[lld][test][LoongArch] Remove the test for R_LARCH_CALL36 ran…
SixWeining Dec 25, 2023
ff76627
[InstCombine] Fix type mismatch between cond and value in `foldSelect…
dtcxzyw Dec 25, 2023
5cfc7b3
[PowerPC] Add test after #75271 on PPC. NFC. (#75616)
Dec 25, 2023
95bdbc8
[JITLink] Add -phony-externals to silence test errors on some buildbots.
lhames Dec 25, 2023
9d6837d
[flang][driver] Remove Fortain_main static library from linking stage…
mjklemm Dec 25, 2023
c67e2d9
[ADT] Add [[nodiscard]] to SmallString (NFC)
kazutakahirata Dec 25, 2023
8c24422
[clang-tidy] add std::span to the default types. (#76116)
da-viper Dec 25, 2023
76243ad
[LLD][COFF] Merge .wowthk section to .text. (#76254)
cjacek Dec 25, 2023
f5f2c31
[llvm] Use StringRef::consume_front (NFC)
kazutakahirata Dec 25, 2023
9e98f8d
[clng-tidy][NFC] Update documentation for readability-simplify-subscr…
PiotrZSL Dec 25, 2023
68f832f
[clang] Use StringRef::consume_front (NFC)
kazutakahirata Dec 25, 2023
5c39b8d
[X86][MC] Support Enc/Dec for EGPR for promoted AMX-TILE instruction …
XinWang10 Dec 26, 2023
f9e2399
[X86][NFC] Remove class ADCOXOp(RR|RM) and redundant let statements
KanRobert Dec 26, 2023
64e6388
Recommit [RISCV] Update the interface of sifive vqmaccqoq (#74284) (#…
4vtomat Dec 26, 2023
66922a5
[X86][NFC] Simplify the definition of MULX by using class ITy
KanRobert Dec 26, 2023
c019ed9
Allow to pass config file to clang-tidy-diff (#75457)
MichaelLettrich Dec 26, 2023
dc1fade
[MCP] Enhance MCP copy Instruction removal for special case(reapply) …
LWenH Dec 26, 2023
250e98e
[X86][NFC] Simplify the definition of ANDN by using class ITy
KanRobert Dec 26, 2023
3f3c5e5
[NFC][llvm-exegesis] Refactor InstrBenchmark to BenchmarkResult (#76388)
boomanaiden154 Dec 26, 2023
b996f84
[RISCV][NFC] Refine MCOperandPredicate code for rtlist. (#76028)
yetingk Dec 26, 2023
1d76692
[RISCV][MC] Add support for experimental Zimop extension (#75182)
JivanH Dec 26, 2023
9dcc665
[clang-tidy] Don't replace typedefs in extern c scope (#69102)
da-viper Dec 26, 2023
34621aa
Revert "[clang-tidy] Don't replace typedefs in extern c scope (#69102)"
PiotrZSL Dec 26, 2023
583a258
[clang-tidy] Don't replace typedefs in extern c scope (#69102)
da-viper Dec 26, 2023
7a48039
[clang-tidy] Fix compilation of modernize-use-using check
PiotrZSL Dec 26, 2023
d51e06c
[AMDGPU][True16] Fix the VGPR register class for 16-bit values. (#76170)
kosarev Dec 26, 2023
75073e0
[X86][NFC] Simplify the definitions of MUL/IMUL and DIV/IDIV
KanRobert Dec 26, 2023
898320d
[cmake] Disable all -Wuninitialized warnings on GCC older than 12. (#…
cjacek Dec 26, 2023
aca3727
[clang-tidy] Treat fields in anonymous records as names in enclosing …
Lancern Dec 26, 2023
f11b056
[Support] Resolve symlinks in `getMainExecutable()` on Windows (#76304)
aganea Dec 26, 2023
dc5fb32
[lld][NFC] Revert commit ccec22b675195bf. (#76398)
cjacek Dec 26, 2023
7c38348
[llvm-exegesis] Add support for loading X86 segment registers (#76368)
boomanaiden154 Dec 26, 2023
8b48507
Revert "[llvm-exegesis] Add support for loading X86 segment registers…
boomanaiden154 Dec 26, 2023
b80e1ac
[M68k] Improve codegen of overflow arithmetics
mshockwave Dec 26, 2023
4358e6e
[FuncAttrs] Infer `norecurse` for funcs with calls to `nocallback` ca…
dtcxzyw Dec 26, 2023
01bf29b
[sanitizers] Optimize locking StackDepotBase for fork (#76280)
vitalybuka Dec 26, 2023
1022feb
[MLIR][Presburger] Generating functions and quasi-polynomials for Bar…
Abhinav271828 Dec 26, 2023
e8b6fa5
[WebAssembly] Add bounds check in parseCodeSection (#76407)
DavidKorczynski Dec 26, 2023
7962bd5
[hwasan] Make stack variables output consistent with globals (#76197)
vitalybuka Dec 26, 2023
aacff34
[InstCombine] Simplify `icmp pred (sdiv exact X, C), (sdiv exact Y, C…
dtcxzyw Dec 26, 2023
532d484
[mlir][Quasipolynomials] Fixed type issues in GeneratorFuunction.h (#…
bviyer Dec 26, 2023
14e221a
[flang][runtime] Correct EXw.0 output editing (#75121)
klausler Dec 26, 2023
befdfae
[flang][runtime] Detect & signal underflow when reading reals (#75232)
klausler Dec 26, 2023
8fc045e
[flang][runtime] Accept 128-bit integer SHIFT values in CSHIFT/EOSHIF…
klausler Dec 26, 2023
475d18f
[flang][runtime] Fix empty FINDLOC() results (#75251)
klausler Dec 26, 2023
933882f
[flang][runtime] Fix trailing blanks for Gw.dEe output editing (#75263)
klausler Dec 26, 2023
39c2f59
[flang][runtime] Fix NEAREST() when exponent decreases (#75368)
klausler Dec 26, 2023
1794b61
[flang][runtime] Fix spelling of INQUIRE result (#75372)
klausler Dec 26, 2023
7b50176
[flang][runtime] Flush output before INQUIRE(..., SIZE=) (#75379)
klausler Dec 26, 2023
9469dc3
[flang][runtime] Handle unconsumed repeated list-directed input items…
klausler Dec 26, 2023
1346037
[flang][runtime] Return +/-HUGE() for some real input roundings (#75525)
klausler Dec 26, 2023
f45723c
[flang][runtime] Fix RU/RD results when rounding to least nonzero (#7…
klausler Dec 26, 2023
c86fe3e
[mlir][Quasipolynomials] Fix -Wunused-variable in QuasiPolynomial.cpp…
DamonFool Dec 27, 2023
5a402c5
[flang] USE-associated explicit INTRINSIC names (#76199)
klausler Dec 27, 2023
479e133
Merge from 'sycl' to 'sycl-web'
Dec 27, 2023
b3ef8dc
[LoongArch] Emit R_LARCH_RELAX when expanding some LoadAddress (#72961)
MQ-mengqing Dec 27, 2023
8ddb0fc
[X86] Correct operand order of UWRMSR. (#76389)
FreddyLeaf Dec 27, 2023
256bf56
[RISCV] Update DecoderMethod and MCOperandPredicate of spimm. (#76061)
yetingk Dec 27, 2023
ce0c149
[RISCV][Clang] Remove -save-restore from default features. (#76390)
yetingk Dec 27, 2023
36fd729
[mlir][Quasipolynomial] Fixed -Wunused-variable in GeneratorFunction.…
bviyer Dec 27, 2023
b9f2fa9
Merge from 'main' to 'sycl-web' (167 commits)
mdfazlay Dec 27, 2023
4a601cf
[RISCV] Fix formatting. NFC
topperc Dec 27, 2023
23b82c9
[RISCV] Move Zimop to RISCVInstrInfoZimop.td (#76392)
wangpc-pp Dec 27, 2023
6f85075
[M68k] U/SMULd32d16 are not supposed to be communitive
mshockwave Dec 26, 2023
2476e2a
[M68k] Optimize for overflow arithmetics that will never overflow
mshockwave Dec 27, 2023
9f4b6e1
[X86][NFC] Simplify the definitions of INC/DEC and NEG/NOT
KanRobert Dec 27, 2023
039d9aa
[RISCV] Remove redundant variable Log2LMUL from vset intrinsic. NFC (…
tclin914 Dec 27, 2023
b8424ea
[llvm-profdata] Make tests more readable (NFC)
kazutakahirata Dec 27, 2023
4128ede
[JITLink] Tell yaml2obj the MachO file is little-endian. NFC.
Dec 27, 2023
4972a19
[wasm] Use StringRef::trim (NFC)
kazutakahirata Dec 27, 2023
72390c5
[clang-tidy][misleading-indentation]ignore false-positives for line s…
HerrCai0907 Dec 27, 2023
2df0fa4
[clang] Use StringRef::consume_front (NFC)
kazutakahirata Dec 27, 2023
ae0b263
[BitcodeReader] Add bounds checking on Strtab (#76403)
DavidKorczynski Dec 27, 2023
9f6bf00
[DAGCombine] Add DAG optimisation for BF16_TO_FP (#69426)
sunshaoce Dec 27, 2023
38c9390
[AArch64] Add an extra test for #75822. NFC
davemgreen Dec 27, 2023
1150e8e
[mlir::spirv] Support scf.if in mlir-vulkan-runner (#75367)
python3kgae Dec 27, 2023
8cf6bcf
[mlir][llvm] Add assert in CallOp builder (#76240)
gitoleg Dec 27, 2023
fe94ae8
[libc][FIXME] Disable another test on GPU (#76444)
jplehr Dec 27, 2023
a70dcc2
[clang] Use StringRef::ltrim (NFC)
kazutakahirata Dec 27, 2023
410066a
[Bazel] Added SCFDialect to mlir-vulkan-runner (#76454)
bviyer Dec 27, 2023
cdb7d8a
[RISCV] Minor improvements to RISCVInstrInfoXSf.td. NFC (#76424)
topperc Dec 27, 2023
840e23a
[RISCV] Simplify VTypeInfo and GroupVTypeInfo tblgen templates. NFC (…
topperc Dec 27, 2023
a01b58a
[OpenMP][libomptarget][Fix] Add missing array initialization (#76457)
doru1004 Dec 27, 2023
7f1c8fc
[InstCombine] Use ConstantInt::getSigned to sign extend -2 for large …
topperc Dec 27, 2023
bc8c4bb
[SLP][TTI][X86]Add addsub pattern cost estimation. (#76461)
alexey-bataev Dec 27, 2023
c99ffd5
Merge commit 'bc8c4bbd7973ab9527a78a20000aecde9bed652d' into llvmspir…
sys-ce-bb Dec 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/libcxx-build-and-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ jobs:
std_modules: 'OFF'
# Use a larger machine for MSAN to avoid timeout and memory allocation issues.
- config: 'generic-msan'
machine: libcxx-runners-32-set
machine: libcxx-runners-8-set
std_modules: 'OFF'
runs-on: ${{ matrix.machine }}
steps:
Expand Down
16 changes: 9 additions & 7 deletions bolt/lib/Core/DIEBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -266,13 +266,11 @@ void DIEBuilder::buildCompileUnits(const bool Init) {
}
void DIEBuilder::buildCompileUnits(const std::vector<DWARFUnit *> &CUs) {
BuilderState.reset(new State());
// Initializing to full size because there could be cross CU references with
// different abbrev offsets. LLVM happens to output CUs that have cross CU
// references with the same abbrev table. So destinations end up in the first
// set, even if they themselves don't have src cross cu ref. We could have
// cases where this is not the case. In which case this container needs to be
// big enough for all.
getState().CloneUnitCtxMap.resize(DwarfContext->getNumCompileUnits());
// Allocating enough for current batch being processed.
// In real use cases we either processing a batch of CUs with no cross
// references, or if they do have them it is due to LTO. With clang they will
// share the same abbrev table. In either case this vector will not grow.
getState().CloneUnitCtxMap.resize(CUs.size());
getState().Type = ProcessingType::CUs;
for (DWARFUnit *CU : CUs)
registerUnit(*CU, false);
Expand Down Expand Up @@ -897,6 +895,10 @@ void DIEBuilder::registerUnit(DWARFUnit &DU, bool NeedSort) {
});
}
getState().UnitIDMap[getHash(DU)] = getState().DUList.size();
// This handles the case where we do have cross cu references, but CUs do not
// share the same abbrev table.
if (getState().DUList.size() == getState().CloneUnitCtxMap.size())
getState().CloneUnitCtxMap.emplace_back();
getState().DUList.push_back(&DU);
}

Expand Down
100 changes: 64 additions & 36 deletions bolt/lib/Passes/SplitFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,12 @@ struct SplitCacheDirected final : public SplitStrategy {
void fragment(const BlockIt Start, const BlockIt End) override {
BasicBlockOrder BlockOrder(Start, End);
BinaryFunction &BF = *BlockOrder.front()->getFunction();
// No need to re-split small functions.
if (BlockOrder.size() <= 2)
return;

size_t BestSplitIndex = findSplitIndex(BF, BlockOrder);
assert(BestSplitIndex < BlockOrder.size());

// Assign fragments based on the computed best split index.
// All basic blocks with index up to the best split index become hot.
Expand All @@ -200,10 +204,12 @@ struct SplitCacheDirected final : public SplitStrategy {
};

struct SplitScore {
size_t SplitIndex;
size_t SplitIndex = size_t(-1);
size_t HotSizeReduction = 0;
double LocalScore = 0;
double CoverCallScore = 0;

double sum() const { return LocalScore + CoverCallScore; }
};

// Auxiliary variables used by the algorithm.
Expand Down Expand Up @@ -303,7 +309,7 @@ struct SplitCacheDirected final : public SplitStrategy {
const size_t SplitIndex) {
assert(SplitIndex < BlockOrder.size() && "Invalid split index");

// Update function layout assuming hot-warm splitting at SplitIndex
// Update function layout assuming hot-warm splitting at SplitIndex.
for (size_t Index = 0; Index < BlockOrder.size(); Index++) {
BinaryBasicBlock *BB = BlockOrder[Index];
if (BB->getFragmentNum() == FragmentNum::cold())
Expand All @@ -319,8 +325,8 @@ struct SplitCacheDirected final : public SplitStrategy {
// Populate BB.OutputAddressRange with estimated new start and end addresses
// and compute the old end address of the hot section and the new end
// address of the hot section.
size_t OldHotEndAddr;
size_t NewHotEndAddr;
size_t OldHotEndAddr{0};
size_t NewHotEndAddr{0};
size_t CurrentAddr = BBOffsets[BlockOrder[0]];
for (BinaryBasicBlock *BB : BlockOrder) {
// We only care about new addresses of blocks in hot/warm.
Expand Down Expand Up @@ -492,20 +498,15 @@ struct SplitCacheDirected final : public SplitStrategy {
}

/// Compute the split score of splitting a function at a given index.
/// The split score consists of local score and cover score. Cover call score
/// is expensive to compute. As a result, we pass in a \p ReferenceScore and
/// compute cover score only when the local score exceeds that in the
/// ReferenceScore or that the size reduction of the hot fragment is larger
/// than that achieved by the split index of the ReferenceScore. This function
/// returns \p Score of SplitScore type. It contains the local score and cover
/// score (if computed) of the current splitting index. For easier book
/// keeping and comparison, it also stores the split index and the resulting
/// reduction in hot fragment size.
/// The split score consists of local score and cover score. This function
/// returns \p Score of SplitScore type. It contains the local score and
/// cover score of the current splitting index. For easier book keeping and
/// comparison, it also stores the split index and the resulting reduction
/// in hot fragment size.
SplitScore computeSplitScore(const BinaryFunction &BF,
const BasicBlockOrder &BlockOrder,
const size_t SplitIndex,
const std::vector<CallInfo> &CoverCalls,
const SplitScore &ReferenceScore) {
const std::vector<CallInfo> &CoverCalls) {
// Populate BinaryBasicBlock::OutputAddressRange with estimated
// new start and end addresses after hot-warm splitting at SplitIndex.
size_t OldHotEnd;
Expand Down Expand Up @@ -533,47 +534,74 @@ struct SplitCacheDirected final : public SplitStrategy {
// increamented in place.
computeJumpScore(BlockOrder, SplitIndex, Score);

// There is no need to compute CoverCallScore if we have already found
// another split index with a bigger LocalScore and bigger HotSizeReduction.
if (Score.LocalScore <= ReferenceScore.LocalScore &&
Score.HotSizeReduction <= ReferenceScore.HotSizeReduction)
return Score;

// Compute CoverCallScore and store in Score in place.
computeCoverCallScore(BlockOrder, SplitIndex, CoverCalls, Score);
return Score;
}

/// Find the most likely successor of a basic block when it has one or two
/// successors. Return nullptr otherwise.
const BinaryBasicBlock *getMostLikelySuccessor(const BinaryBasicBlock *BB) {
if (BB->succ_size() == 1)
return BB->getSuccessor();
if (BB->succ_size() == 2) {
uint64_t TakenCount = BB->getTakenBranchInfo().Count;
assert(TakenCount != BinaryBasicBlock::COUNT_NO_PROFILE);
uint64_t NonTakenCount = BB->getFallthroughBranchInfo().Count;
assert(NonTakenCount != BinaryBasicBlock::COUNT_NO_PROFILE);
if (TakenCount > NonTakenCount)
return BB->getConditionalSuccessor(true);
else if (TakenCount < NonTakenCount)
return BB->getConditionalSuccessor(false);
}
return nullptr;
}

/// Find the best index for splitting. The returned value is the index of the
/// last hot basic block. Hence, "no splitting" is equivalent to returning the
/// value which is one less than the size of the function.
size_t findSplitIndex(const BinaryFunction &BF,
const BasicBlockOrder &BlockOrder) {
assert(BlockOrder.size() > 2);
// Find all function calls that can be shortened if we move blocks of the
// current function to warm/cold
const std::vector<CallInfo> CoverCalls = extractCoverCalls(BF);

// Try all possible split indices (blocks with Index <= SplitIndex are in
// hot) and find the one maximizing the splitting score.
// Find the existing hot-cold splitting index.
size_t HotColdIndex = 0;
while (HotColdIndex + 1 < BlockOrder.size()) {
if (BlockOrder[HotColdIndex + 1]->getFragmentNum() == FragmentNum::cold())
break;
HotColdIndex++;
}
assert(HotColdIndex + 1 == BlockOrder.size() ||
(BlockOrder[HotColdIndex]->getFragmentNum() == FragmentNum::main() &&
BlockOrder[HotColdIndex + 1]->getFragmentNum() ==
FragmentNum::cold()));

// Try all possible split indices up to HotColdIndex (blocks that have
// Index <= SplitIndex are in hot) and find the one maximizing the
// splitting score.
SplitScore BestScore;
double BestScoreSum = -1.0;
SplitScore ReferenceScore;
for (size_t Index = 0; Index < BlockOrder.size(); Index++) {
for (size_t Index = 0; Index <= HotColdIndex; Index++) {
const BinaryBasicBlock *LastHotBB = BlockOrder[Index];
// No need to keep cold blocks in the hot section.
if (LastHotBB->getFragmentNum() == FragmentNum::cold())
break;
assert(LastHotBB->getFragmentNum() != FragmentNum::cold());

// Do not break jump to the most likely successor.
if (Index + 1 < BlockOrder.size() &&
BlockOrder[Index + 1] == getMostLikelySuccessor(LastHotBB))
continue;

const SplitScore Score =
computeSplitScore(BF, BlockOrder, Index, CoverCalls, ReferenceScore);
double ScoreSum = Score.LocalScore + Score.CoverCallScore;
if (ScoreSum > BestScoreSum) {
BestScoreSum = ScoreSum;
computeSplitScore(BF, BlockOrder, Index, CoverCalls);
if (Score.sum() > BestScore.sum())
BestScore = Score;
}
if (Score.LocalScore > ReferenceScore.LocalScore)
ReferenceScore = Score;
}

// If we don't find a good splitting point, fallback to the original one.
if (BestScore.SplitIndex == size_t(-1))
return HotColdIndex;

return BestScore.SplitIndex;
}
};
Expand Down
9 changes: 4 additions & 5 deletions bolt/test/X86/cdsplit-call-scale.s
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
# When -call-scale=0.0, the tested function is 2-way splitted.
# When -call-scale=1.0, the tested function is 3-way splitted with 5 blocks
# in warm because of the increased benefit of shortening the call edges.
# When -call-scale=1000.0, the tested function is 3-way splitted with 7 blocks
# in warm because of the strong benefit of shortening the call edges.
# When -call-scale=1000.0, the tested function is still 3-way splitted with
# 5 blocks in warm because cdsplit does not allow hot-warm splitting to break
# a fall through branch from a basic block to its most likely successor.

# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.o
# RUN: link_fdata %s %t.o %t.fdata
Expand Down Expand Up @@ -39,12 +40,10 @@
# MEDINCENTIVE: {{^\.Ltmp5}}

# HIGHINCENTIVE: Binary Function "chain" after split-functions
# HIGHINCENTIVE: {{^\.LBB00}}
# HIGHINCENTIVE: {{^\.Ltmp1}}
# HIGHINCENTIVE: ------- HOT-COLD SPLIT POINT -------
# HIGHINCENTIVE: {{^\.LFT1}}
# HIGHINCENTIVE: ------- HOT-COLD SPLIT POINT -------
# HIGHINCENTIVE: {{^\.LFT0}}
# HIGHINCENTIVE: {{^\.Ltmp1}}
# HIGHINCENTIVE: {{^\.Ltmp0}}
# HIGHINCENTIVE: {{^\.Ltmp2}}
# HIGHINCENTIVE: {{^\.Ltmp3}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
#include "UnhandledSelfAssignmentCheck.h"
#include "UniquePtrArrayMismatchCheck.h"
#include "UnsafeFunctionsCheck.h"
#include "UnusedLocalNonTrivialVariableCheck.h"
#include "UnusedRaiiCheck.h"
#include "UnusedReturnValueCheck.h"
#include "UseAfterMoveCheck.h"
Expand Down Expand Up @@ -235,6 +236,8 @@ class BugproneModule : public ClangTidyModule {
"bugprone-unique-ptr-array-mismatch");
CheckFactories.registerCheck<UnsafeFunctionsCheck>(
"bugprone-unsafe-functions");
CheckFactories.registerCheck<UnusedLocalNonTrivialVariableCheck>(
"bugprone-unused-local-non-trivial-variable");
CheckFactories.registerCheck<UnusedRaiiCheck>("bugprone-unused-raii");
CheckFactories.registerCheck<UnusedReturnValueCheck>(
"bugprone-unused-return-value");
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ add_clang_library(clangTidyBugproneModule
UnhandledSelfAssignmentCheck.cpp
UniquePtrArrayMismatchCheck.cpp
UnsafeFunctionsCheck.cpp
UnusedLocalNonTrivialVariableCheck.cpp
UnusedRaiiCheck.cpp
UnusedReturnValueCheck.cpp
UseAfterMoveCheck.cpp
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
//===--- UnusedLocalNonTrivialVariableCheck.cpp - clang-tidy --------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "UnusedLocalNonTrivialVariableCheck.h"
#include "../utils/Matchers.h"
#include "../utils/OptionsUtils.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTTypeTraits.h"
#include "clang/AST/Type.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/ASTMatchers/ASTMatchersMacros.h"

using namespace clang::ast_matchers;
using namespace clang::tidy::matchers;

namespace clang::tidy::bugprone {

namespace {
static constexpr StringRef DefaultIncludeTypeRegex =
"::std::.*mutex;::std::future;::std::basic_string;::std::basic_regex;"
"::std::basic_istringstream;::std::basic_stringstream;::std::bitset;"
"::std::filesystem::path";

AST_MATCHER(VarDecl, isLocalVarDecl) { return Node.isLocalVarDecl(); }
AST_MATCHER(VarDecl, isReferenced) { return Node.isReferenced(); }
AST_MATCHER(Type, isReferenceType) { return Node.isReferenceType(); }
AST_MATCHER(QualType, isTrivial) {
return Node.isTrivialType(Finder->getASTContext()) ||
Node.isTriviallyCopyableType(Finder->getASTContext());
}
} // namespace

UnusedLocalNonTrivialVariableCheck::UnusedLocalNonTrivialVariableCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
IncludeTypes(utils::options::parseStringList(
Options.get("IncludeTypes", DefaultIncludeTypeRegex))),
ExcludeTypes(
utils::options::parseStringList(Options.get("ExcludeTypes", ""))) {}

void UnusedLocalNonTrivialVariableCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "IncludeTypes",
utils::options::serializeStringList(IncludeTypes));
Options.store(Opts, "ExcludeTypes",
utils::options::serializeStringList(ExcludeTypes));
}

void UnusedLocalNonTrivialVariableCheck::registerMatchers(MatchFinder *Finder) {
if (IncludeTypes.empty())
return;

Finder->addMatcher(
varDecl(isLocalVarDecl(), unless(isReferenced()),
unless(isExceptionVariable()), hasLocalStorage(), isDefinition(),
unless(hasType(isReferenceType())), unless(hasType(isTrivial())),
hasType(hasUnqualifiedDesugaredType(
anyOf(recordType(hasDeclaration(namedDecl(
matchesAnyListedName(IncludeTypes),
unless(matchesAnyListedName(ExcludeTypes))))),
templateSpecializationType(hasDeclaration(namedDecl(
matchesAnyListedName(IncludeTypes),
unless(matchesAnyListedName(ExcludeTypes)))))))))
.bind("var"),
this);
}

void UnusedLocalNonTrivialVariableCheck::check(
const MatchFinder::MatchResult &Result) {
const auto *MatchedDecl = Result.Nodes.getNodeAs<VarDecl>("var");
diag(MatchedDecl->getLocation(), "unused local variable %0 of type %1")
<< MatchedDecl << MatchedDecl->getType();
}

bool UnusedLocalNonTrivialVariableCheck::isLanguageVersionSupported(
const LangOptions &LangOpts) const {
return LangOpts.CPlusPlus;
}

std::optional<TraversalKind>
UnusedLocalNonTrivialVariableCheck::getCheckTraversalKind() const {
return TK_IgnoreUnlessSpelledInSource;
}

} // namespace clang::tidy::bugprone
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
//===--- UnusedLocalNonTrivialVariableCheck.h - clang-tidy ------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_UNUSEDLOCALNONTRIVIALVARIABLECHECK_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_UNUSEDLOCALNONTRIVIALVARIABLECHECK_H

#include "../ClangTidyCheck.h"

namespace clang::tidy::bugprone {

/// Warns when a local non trivial variable is unused within a function. By
/// default std::.*mutex and std::future are included.
///
/// The check supports these options:
/// - 'IncludeTypes': a semicolon-separated list of regular expressions
/// matching types to ensure must be used.
/// - 'ExcludeTypes': a semicolon-separated list of regular expressions
/// matching types that are excluded from the
/// 'IncludeTypes' matches.
///
/// For the user-facing documentation see:
/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone/unused-local-non-trivial-variable.html
class UnusedLocalNonTrivialVariableCheck : public ClangTidyCheck {
public:
UnusedLocalNonTrivialVariableCheck(StringRef Name, ClangTidyContext *Context);
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override;
std::optional<TraversalKind> getCheckTraversalKind() const override;

private:
const std::vector<StringRef> IncludeTypes;
const std::vector<StringRef> ExcludeTypes;
};

} // namespace clang::tidy::bugprone

#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_UNUSEDLOCALNONTRIVIALVARIABLECHECK_H
Loading