Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
76c69de
[CUDA/HIP] Do not check function calls in discarded statement (#194606)
NewSigma May 8, 2026
a33ba5f
[libc] Include CPU model in overlay CI sccache key (#196477)
kaladron May 8, 2026
77b7183
[Runtimes] Fix /clang: prefix warning for GNU-like clang on Windows (…
wenju-he May 8, 2026
0ebfe12
[libc++] Recognize _BitInt(N) as signed/unsigned integer type (#185027)
xroche May 8, 2026
8b9cfea
[RISCV] Add support for Ziccid 1.0 (#196459)
ChunyuLiao May 8, 2026
59aaa53
[AArch64] Reflect cost of integer sub-reductions. (#194594)
sdesmalen-arm May 8, 2026
dabb079
AMDGPU/GlobalISel: Implement RegBankLegalizeRules for amdgcn_log, amd…
anjenner May 8, 2026
d791e3a
[AArch64][SME] Elide private ZA setup when possible (#196090)
MacDue May 8, 2026
5ff13af
[libc] implement fwide (#196157)
michaelrj-google May 8, 2026
3531440
[Dexter][NFC] Add split step-data collection methods for DAP (#196350)
SLTozer May 8, 2026
0168948
[libclc] Use spirv[64]-mesa-mesa3d triple in README.md (#196483)
kwk May 8, 2026
2423265
[lldb-dap] Fix build when using precompiled header and Xcode generato…
da-viper May 8, 2026
589f419
[X86][GlobalISel] Added support for FNEG (#167919)
JaydeepChauhan14 May 8, 2026
11e06ca
[DAG] canCreateUndefOrPoison - poison generating flags / out of range…
RKSimon May 8, 2026
d1ac3df
[DAG] canCreateUndefOrPoison - ISD::AssertSext/Zext/Align/NoFPClass o…
RKSimon May 8, 2026
218b7b4
[X86][GlobalISel] Support globals in pic mode (#170038)
e-kud May 8, 2026
0041fa4
[llvm][tools] Extend llvm-objdump to support nested OffloadBinaries (…
adurang May 8, 2026
9698c4d
[lldb][test] Move DAP processes to own group to avoid random SIGHUPs …
Teemperor May 8, 2026
88bb0e6
[AArch64] Use EXT for byte shuffles with leading zeros (#193466)
bojle May 8, 2026
ca7fe08
[llvm][OpenMP][SPIRV] Fix assertion for GPU reductions (#194879)
adurang May 8, 2026
0bdf71d
Revert "[lldb] Real-time console pane for output in lldb tui" (#196507)
DavidSpickett May 8, 2026
2e2d90b
[libc++] Introduce implicit and explicit ABI annotations (#193045)
philnik777 May 8, 2026
4899e71
[AMDGPU] Increment VA_VDST twice for each VOP3PX2 instruction (#196353)
jayfoad May 8, 2026
d5f0b9e
[LLVM][LICM] Skip unrelated accesses when looking for hoist/sink conf…
paulwalker-arm May 8, 2026
7f2a665
[libc][math] Fix -Wshadow warnings in FMod.h (#196346)
nico May 8, 2026
27c5421
[OpenMP] Fix set-but-unused-var warning in omptest (#196069)
jplehr May 8, 2026
51e82b8
[BOLT][AArch64] Add support for LDR relaxation on LDRSWl (#196051)
chenshanzhi May 8, 2026
1bba0bf
Exclude unsupported compiler-rt tests on z/OS. (#194437)
sujianIBM May 8, 2026
1b38e21
Syscall migrations of stdio and unistd (#196403)
kaladron May 8, 2026
39dc4b0
[clang][OpenMP][SPIRV] Use the right calling convention for reduction…
adurang May 8, 2026
03bd38f
[llvm-otool] Add -m flag and archive(member) input syntax (#194234)
rjmansfield May 8, 2026
c48b74f
[clang] Deduce _BitInt(N) template parameter as size_t (#195534)
eisenwave May 8, 2026
b206f70
Revert "[Clang] disallow selectany on non-global-variable declaration…
a-tarasyuk May 8, 2026
546aef6
[LLVM] Add `Type::getTruncatedType()` and use it in Intrinsics.cpp (#…
jurahul May 8, 2026
aa5d182
[AMDGPU] Make VALU instructions defining SGPR non-ignorable (#195270)
IgWod May 8, 2026
11e91bd
[mlir][core] in -mlir-print-ir-*, dump the pass options as well (#195…
j2kun May 8, 2026
a058bae
[clang-format][NFC] Format with the new formatter (#196523)
sstwcw May 8, 2026
30778f8
[X86] Add test coverage showing failure to fold freeze(fnearbyint(x))…
RKSimon May 8, 2026
6b4f024
[SLP] Account for GEP pointer-chain cost when root scalars feed load/…
alexey-bataev May 8, 2026
6d9c57b
[LLVM][InstSimplify] Refactor simplifyBinaryIntrinsic to remove Call …
paulwalker-arm May 8, 2026
b1b1e19
[Bazel] Fixes 1b38e21 (#196524)
forking-google-bazel-bot[bot] May 8, 2026
6ef9671
[libclc] Canonicalize 'clspv' to the 'spirv-unknown-vulkan' triple (#…
jhuber6 May 8, 2026
944cc03
[AArch64] Add sqneg tablegen patterns (#196265)
davemgreen May 8, 2026
854197d
[llvm-objcopy] Add a missing dependency (#196531)
kikairoya May 8, 2026
8ece18d
[LLVM] Remove FFI forwarding prefix for liboffload (#196518)
jhuber6 May 8, 2026
90a2a8e
[HLSL] Add type traits for ConstantBuffers templates (#195154)
s-perron May 8, 2026
fb04e8f
[clang] Improved diagnostics for explicit specialization/instantiatio…
StefanPaulet May 8, 2026
52fbf34
[Clang] Fix stack-use-after-return in TryArrayCopy by allocating Opaq…
TPPPP72 May 8, 2026
b14eb2f
[mlir] Fix C++ name hiding bug in PDLPatternMatch for Op classes (#19…
jumerckx May 8, 2026
787048a
[Verifier] Use worklist to verify metadata (#196461)
boomanaiden154 May 8, 2026
b9d50a8
[Clang][Hexagon] Add H2 as recognized OS in target triple (#195621)
quic-k May 8, 2026
f15adb3
[SLP][X86] Forward gather VL to getShuffleCost for broadcast-of-load
alexey-bataev May 8, 2026
2de9250
[libc][math] Fix a -Wshadow warning in add_sub.h (#196337)
nico May 8, 2026
e59fe34
[lldb][windows] do not open a new windows when running a shell comman…
charles-zablit May 8, 2026
d88ddad
[SPIR-V] Fix dangling MachineFunction pointers in finalizeLowering (#…
aobolensk May 8, 2026
23cd556
[llvm][Instrumentor] Fix expected error message (#196540)
kevinsala May 8, 2026
0f23bff
Symbol names on arm64 can have an extra char on front of name (#194937)
perry-ca May 8, 2026
14a290a
[mlir][vector] Implement IndexedAccessOpInterface for load, store, et…
krzysz00 May 8, 2026
b42a213
[lldb][windows] drain the ConPTY on process exit (#196371)
charles-zablit May 8, 2026
f68d44d
[clang][modules] Deserialize submodules lazily (#194968)
jansvoboda11 May 8, 2026
180409d
[lldb] Add --changed option to `settings show` (#196390)
JDevlieghere May 8, 2026
cd2b1a1
[X86] Remove tests for non-existant intrinsics. NFC (#196237)
topperc May 8, 2026
435957a
[flang][docs] Removed HighLevelFIR transition plan section (#196227)
eugeneepshteyn May 8, 2026
ee44ba8
Revert "[lldb] Do not refcount breakpoints in lldb-server" (#196561)
labath May 8, 2026
7c7f5be
[CodeGen][AMDGPU] Move boilerplate unit test code to base class (NFC)…
lucas-rami May 8, 2026
4771770
[DAG] canCreateUndefOrPoison - ISD::FCEIL/FFLOOR/FTRUNC/FRINT/FNEARBY…
RKSimon May 8, 2026
003846b
[libc] Fix op_tests Memcmp guard to require SSE4.1 (#196572)
kaladron May 8, 2026
64f9bb5
[Object][Wasm] Fix off-by-one in data segment name index validation (…
sjg-388 May 8, 2026
6c083a6
[AMDGPU] Add VOP3P encoding to gfx13 (#196252)
mariusz-sikora-at-amd May 8, 2026
6c5f5c1
[Clang][Modules] Fix -Wunused-variable (#196577)
boomanaiden154 May 8, 2026
2b97000
[AArch64][GlobalISel] Legalize F64 to BF16 fptruncates (#196077)
davemgreen May 8, 2026
a7591ef
[SLP][NFC]Add a test with the revectorization of the struct-returning…
alexey-bataev May 8, 2026
62fd4ff
[AMDGPU] Add missing CMake link component (#196579)
lucas-rami May 8, 2026
b0c6df7
[SLP] Vectorize struct-returning intrinsics
alexey-bataev May 8, 2026
17a0494
[PowerPC][NFC]Refactor EmitInstrWithCustomInserter (#196114)
lei137 May 8, 2026
e6efa1a
[AMDGPU] Pre-commit unit test for RP tracking `reset`/`advance` incon…
lucas-rami May 8, 2026
edd7810
Revert "[SLP] Vectorize struct-returning intrinsics"
alexey-bataev May 8, 2026
a714b73
[OFFLOAD][L0] Fix incorrect values in the Level Zero cached header (#…
adurang May 8, 2026
980a461
clang: Consolidate -aux-triple handling (#196551)
arsenm May 8, 2026
23be203
[flang][OpenACC] support collapse on unstructured acc.loop (#196174)
eugeneepshteyn May 8, 2026
0f3d9ce
[flang][OpenMP] Fix component-level initializer in declare reduction …
MattPD May 8, 2026
0e4477b
[compiler-rt][profile][NFC] Introduce INSTR_PROF_INSTRUMENT_GPU_FUNC …
yxsamliu May 8, 2026
f10f4e8
[AMDGPU] Add subtarget features for MAD NC and 64-bit MIN/MAX instruc…
mariusz-sikora-at-amd May 8, 2026
f80aa05
[InstCombine][NFC] Replace buildAssumeFromKnowledge with CreateAlignm…
philnik777 May 8, 2026
4d90a0f
[DWARFLinker] Emit .debug_names entries for DW_TAG_template_alias (#1…
JDevlieghere May 8, 2026
f6c8904
[lldb] Fix TestPtrauthBRKc47xX16Invalid.py (#196408)
bulbazord May 8, 2026
328ddd9
[lldb] Remove `__iter/len__` from `SBTypeEnumMember` (#196610)
Nerixyz May 8, 2026
eefbaf0
[CIR] Implement CoawaitExpr for ComplexType (#194027)
AmrDeveloper May 8, 2026
c8408b3
[cir] fix IR dump comments from #195198 (#196605)
j2kun May 8, 2026
b84f58e
[VPlan] Unify inner and outer loop paths (NFCI). (#192868)
fhahn May 8, 2026
1ab839d
[gn] port 2e2d90b98661 (#196618)
nico May 8, 2026
62efd9d
[gn build] Port 3fe311f215d0 (#196619)
nico May 8, 2026
c26716f
[gn build] Port c507e2024c9a (#196620)
nico May 8, 2026
e9a914a
[gn build] Port e6efa1a4c9f6 (#196621)
nico May 8, 2026
792610e
[gn build] Port ebb9a79cd370 (#196622)
nico May 8, 2026
cd1ed45
[gn] port 7e74c78ea342 (#196624)
nico May 8, 2026
1ae2255
[clang][deps] Use `ModuleDepCollector` for Make output (#182063)
jansvoboda11 May 8, 2026
0a2f943
[libc++] Remove _LIBCPP_HIDE_FROM_ABI from <__utility/pair.h> (#196508)
philnik777 May 8, 2026
0236ad5
[mlir][core] Restore dropped printIR behavior. (#196628)
cathyzhyi May 8, 2026
588fa29
[VPlan] Fix cyclic phi type inference in early outer loop plans. (#19…
fhahn May 8, 2026
0c0126d
[DWARFLinker] Deduplicate .debug_frame CIEs across LinkContexts (#195…
JDevlieghere May 8, 2026
7b5bb30
AMDGPU/GlobalISel: RegBankLegalize rules for cluster_load_b32/b64/b12…
vangthao95 May 8, 2026
aa7cb8e
AMDGPU/GlobalISel: RegBankLegalize rules for cvt fp8 e5m3 intrinsics …
vangthao95 May 8, 2026
7748bf5
[libc] Skip targets with unavailable __ONLY flags (#196637)
kaladron May 8, 2026
a47d363
[DWARFLinker] Don't duplicate classes with in-class static decls (#19…
JDevlieghere May 8, 2026
b1b3b43
[libc] Disable -march=native in CI to fix sccache poisoning (#196560)
kaladron May 8, 2026
14ac9df
[lldb] Add lldb.summary and lldb.synthetic decorators (#195351)
kastiglione May 8, 2026
59152f4
[X86] combine-add.ll - regenerate to show missing add asm comments (#…
RKSimon May 8, 2026
d063eeb
[lld][WebAssembly] Remove the experimental warning for PIC/dynamic li…
sbc100 May 8, 2026
4b248f2
[flang][cuda] Widen stream argument to i64 in stream intrinsic loweri…
wangzpgi May 8, 2026
dc93944
[mlir][AMDGPU] Add, unify verification of memref index counts (#196657)
krzysz00 May 8, 2026
38d7928
[lldb] Handle SIGINT via the MainLoop signal thread (on POSIX) (#195959)
JDevlieghere May 8, 2026
25295bc
[BOLT][NFCI] Consolidate DataReader::setEntryCounts (#196411)
aaupov May 8, 2026
dbbe548
[DirectX] Not print invalid root signature definitions. (#196444)
joaosaffran May 8, 2026
f03da66
[clang][deps] Move `ScanningOutputFormat` out of the library (#196631)
jansvoboda11 May 8, 2026
54ea7c5
[RISCV] Use the nhs.lea.h/w/d instead of nhs.lea.h/w/d.ze with Sh1Add…
topperc May 8, 2026
bc654b4
Revert "[BOLT] Fix EH data encoding checks in relocateEHFrameSection …
yozhu May 9, 2026
c7120bb
[mlir][tensor] Enhance pattern to fold extract_slice(insert_slice) (#…
CoTinker May 9, 2026
d2db5bb
[CodeGen] Use unique_ptr for FunctionInfo to prevent memory leaks (#1…
vitalybuka May 9, 2026
74e07e1
[CIR][RISCV] Support zksh builtin codegen (#196463)
jacquesguan May 9, 2026
5f18584
[lldb] Fix CommandObjects that don't set a return status (#196588)
JDevlieghere May 9, 2026
e4d5880
[AMDGPU] Support atomic load and store for vector float types (v2f16,…
harrisonGPU May 9, 2026
0ad1bc9
Revert "[lldb] Handle SIGINT via the MainLoop signal thread (on POSIX…
JDevlieghere May 9, 2026
6f2df1c
[Clang] Do not eat SFINAE diagnostics for explicit template arguments…
zyn0217 May 9, 2026
c71e991
[Utils] Fix duplicate DomTree updates in SplitIndirectBrCriticalEdges…
zhaomaosu May 9, 2026
66d4162
[CIR][CUDA][NVPTX] Set ptx_kernel calling convention on CUDA kernels …
RiverDave May 9, 2026
6da957d
[DAGTypeLegalizer] Add missing BR_CC handler for soft-promoted half o…
tonykuttai May 9, 2026
8e36604
[RISCV][GISel] Add test coverage for the srliw+shXadd patterns. NFC (…
topperc May 9, 2026
d1f0d1b
[clang][AMDGPU] Reject malformed target IDs with empty components (#1…
edwardnvv57k May 9, 2026
89f9ebd
[AArch64][GlobalISel] Enable BF16 legalization for fadd and friends. …
davemgreen May 9, 2026
d55e108
[AArch64][NFC] Remove unused TRI member from class (#184363)
LumioseSil May 9, 2026
e361f28
[ObjectYAML][NFC] Extract BBAddrMap YAML types into shared namespace …
HaohaiWen May 9, 2026
7c9f1d2
[clang] Update `cxx_dr_status.html` (#196702)
Endilll May 9, 2026
d3a4bb0
[clang-tidy] Avoid `use-nodiscard` false positives for class template…
unterumarmung May 9, 2026
ebf6a41
[CI] Ignore TidyFastChecks.inc for formatter CI. NFC. (#196682)
zeyi2 May 9, 2026
5022a16
[clang-tidy] Migrate explicit-constructor check from google to misc a…
maochuanjun May 9, 2026
e78381d
[AArch64][GlobalISel] Promote BF16 G_FCMP (#196093)
davemgreen May 9, 2026
062ddf5
[RISCV][NFC] Rename `Zvvmm` instruction file to `Zvvm` (#196692)
imkiva May 9, 2026
ae3d770
[BPF] Support Stack Arguments (#189060)
yonghong-song May 9, 2026
a2942d4
[VectorCombine] foldShuffleChainsToReduce - add support for partial v…
AbdallahRashed May 9, 2026
6004c17
[clang-tidy] Correct `std::has_one_bit` to `std::has_single_bit` in `…
flovent May 9, 2026
c2f7e98
[SelectionDAG] Don't convert sextload to zextload through a multi-use…
el-ev May 9, 2026
2caea40
[libc++] LWG4324: `unique_ptr<void>::operator*` is not SFINAE-friendl…
frederick-vs-ja May 9, 2026
cb5d076
[clang-format] Add BreakFunctionDeclarationParameters option. (#196567)
stativ May 9, 2026
615a7e0
[mlir][SPIR-V] Convert math.fpowi to spirv.CL.pown (#196701)
aobolensk May 9, 2026
2d8bcb5
[VPlan] Lift isUsedByLoadStoreAddr into vputils, operate on VPValue(N…
fhahn May 9, 2026
ee29cb1
clang: Fix using -march=amdgcn in some r600 run lines (#196745)
arsenm May 9, 2026
900dd1d
clang/AMDGPU: Use all_equal instead of building a temporary set (#196…
arsenm May 9, 2026
492d774
[mlir][SPIR-V] Support spirv.selection_control attribute on scf.if (#…
aobolensk May 9, 2026
7c0ae9c
[SLP][NFC]Add a test with scalable vector type in struct-returning in…
alexey-bataev May 9, 2026
45e5bfb
[SLP][NFC]Add a test with struct-returning intrinsics in different ba…
alexey-bataev May 9, 2026
6c979bb
[X86] Hoist ReservedIdentifiers to MCAsmInfo and shrink setup cost. N…
MaskRay May 9, 2026
e07d245
[MCParser] .incbin: Don't retain the buffer, don't require NUL termin…
MaskRay May 9, 2026
254259b
Revert "Avoid assert in substqualifier (#182707)" (#196755)
ojhunt May 9, 2026
5d03bee
[DAG] canCreateUndefOrPoison - out of range vector insert/extract ele…
RKSimon May 9, 2026
4eedcd8
[clang][NFC] Actually add the testcase for #195416 (#196759)
ojhunt May 9, 2026
e6c316e
[Docs] Match body/toctree ordering on Reference and UserGuides (#195542)
nigham May 9, 2026
3b4499c
[clangd] Add InsertReplaceEdit for code completion (#187623)
argothiel May 10, 2026
cabe3fa
Revert "[clang-format][NFC] Format with the new formatter" (#196771)
sstwcw May 10, 2026
46ef11b
[ELF] Fix --reproduce non-determinism with parallel input loading (#1…
MaskRay May 10, 2026
f87250e
[Clang] Make matrix type trivially copyable (#193634)
joaosaffran May 10, 2026
525fab5
[ADT] Decouple xxhash.h from ADT. NFC (#196774)
MaskRay May 10, 2026
71d78b2
[Hashing] Replace CityHash mixers with xxh3 (#194567)
MaskRay May 10, 2026
29e545d
[MC] Remove deprecated lookupTarget overload (#196778)
boomanaiden154 May 10, 2026
a1d21cc
[libc] Add barebones dl_iterate_phdr implementation (#194196)
boomanaiden154 May 10, 2026
3054691
[ADT] Remove xxHash64 ArrayRef/StringRef overloads. NFC (#196781)
MaskRay May 10, 2026
7e2821e
[Clang] Transform lambda's constraints when instantiating parameter m…
zyn0217 May 10, 2026
3be2eaa
[cmake] use target names instead of legacy variables (#185463)
planetmarshall May 10, 2026
1558618
[clang-tidy] Remove hicpp module [1/4] (#194516)
zeyi2 May 10, 2026
9076fff
[DAG][GISel] Rename CTTZ_ZERO_UNDEF/CTLZ_ZERO_UNDEF/CTTZ_ELTS_ZERO_UN…
RKSimon May 10, 2026
d6f6cda
[SPIR-V] Fix inttoptr type deduction with ptr.annotation (#189219)
michalpaszkowski May 10, 2026
c522ad0
[clang-tidy] Fix FP in readability-container-size-empty with compairi…
vbvictor May 10, 2026
79fa36f
[lldb][Windows] Invalidate cached register values on thread stop (#19…
ayushsahay1837 May 10, 2026
2b26355
Revert "[VectorCombine] foldShuffleChainsToReduce - add support for p…
RKSimon May 10, 2026
3de25f5
[LifetimeSafety] Warn on incorrectly placed `[[clang::lifetimebound]]…
NeKon69 May 10, 2026
e7ea212
[libc] Fix -Wshadow warnings in freetrie.h (#196529)
nico May 10, 2026
b2f37f4
clang-format: ensure ternary operands are aligned (#196697)
zeule May 10, 2026
0b98750
[gn] Make ClangDependencyScanningTests depend on Testing/Support (#19…
nico May 10, 2026
7456636
[flang][OpenMP] Consistent names for non-executable directives, NFC (…
kparzysz May 10, 2026
6983aa7
[AArch64] Improve post-inc stores of SIMD/FP values (#151372)
guy-david May 10, 2026
2162c16
[clang-tidy] Rename hicpp-multiway-paths-covered to bugprone-unhandle…
raindelight May 10, 2026
c74ecc9
[IRBuilder] Split CreateAssumption to one with bundle and one with co…
andjo403 May 10, 2026
d0d40cf
[clang-tidy] Reland "An option for conditional skipping overloaded fu…
irishrover May 10, 2026
9c95f37
[CIR][AArch64] Lower NEON vuzp intrinsics (#195591)
E00N777 May 10, 2026
8730fb7
[llvm][RISCV] Optimize fneg for fixed vectors (#194555)
4vtomat May 10, 2026
7cc1f32
[llvm][RISCV] Optimize fabs for fixed vectors (#194554)
4vtomat May 10, 2026
ea4e329
[llvm][RISCV] Optimize fcopysign for fixed vectors (#193802)
4vtomat May 10, 2026
dc2f9fe
[InstCombine] Fold constant byte stores to integer stores (#196740)
pedroclobo May 10, 2026
285ac8c
[libcxx] Switch to check-runtimes for generic-llvm-libc (#196780)
boomanaiden154 May 10, 2026
2f4c387
Move KCFI type ID hash helpers out of LLVMSupport (#196784)
MaskRay May 10, 2026
10f9417
[Coverage] Fix assertion failure when a -isystem header invokes a use…
MaskRay May 10, 2026
dd23e41
[clang-tidy][NFC] Move `ClassifiedToken` to cpp file (#196820)
davidstone May 10, 2026
865465d
[Bazel] Fixes 2f4c387 (#196822)
forking-google-bazel-bot[bot] May 10, 2026
93c1336
[libc] Move a few -Wshadow warnings in __support/File (#196810)
nico May 10, 2026
2893aa5
[libc][math] Fix -Wshadow warnings in cos.h (#196342)
nico May 10, 2026
8996639
[AArch64] New pass for code layout optimizations. (#184434)
ayasin-a May 10, 2026
a8868e6
[mlir][spirv] Remove stale NV CooperativeMatrix attributes (#196639)
IgWod May 10, 2026
a85e494
[mlir][spirv] Enforce execution scope for group operations in ODS (#1…
IgWod May 10, 2026
5a1635c
[LV] Add tests for load/store scalarization and ptrcasts (NFC) (#196839)
fhahn May 10, 2026
d565d51
[LV] Add missing cost tests for various unary and binary ops (NFC) (#…
fhahn May 10, 2026
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
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .github/workflows/libc-fullbuild-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
uses: hendrikmuhs/ccache-action@33522472633dbd32578e909b315f5ee43ba878ce # v1.2.22
with:
max-size: 1G
key: libc_fullbuild_${{ matrix.c_compiler }}
key: libc_fullbuild_v2_${{ matrix.c_compiler }}
variant: sccache

- name: Set reusable strings
Expand All @@ -145,7 +145,8 @@ jobs:
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DCMAKE_C_COMPILER_LAUNCHER=sccache
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
-DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }}"
-DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }}
-DLIBC_COMPILE_OPTIONS_NATIVE=''"
if [[ "${{ matrix.include_scudo }}" == "ON" || "${{ matrix.build_fuzzing_tests }}" == "ON" ]]; then
export RUNTIMES="$RUNTIMES;compiler-rt"
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/libc-overlay-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
uses: hendrikmuhs/ccache-action@33522472633dbd32578e909b315f5ee43ba878ce # v1.2.22
with:
max-size: 1G
key: libc_overlay_build_${{ matrix.os }}_${{ matrix.compiler.c_compiler }}
key: libc_overlay_build_v2_${{ matrix.os }}_${{ matrix.compiler.c_compiler }}
variant: sccache

# MPFR is required by some of the mathlib tests.
Expand Down Expand Up @@ -97,6 +97,7 @@ jobs:
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
-DCMAKE_POLICY_DEFAULT_CMP0141=NEW
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded
-DLIBC_COMPILE_OPTIONS_NATIVE=""
-DLLVM_ENABLE_RUNTIMES=libc
-G Ninja
-S ${{ github.workspace }}/runtimes
Expand Down
7 changes: 1 addition & 6 deletions bolt/include/bolt/Core/MCPlusBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -861,12 +861,7 @@ class MCPlusBuilder {
return false;
}

virtual bool isLDRWl(const MCInst &Inst) const {
llvm_unreachable("not implemented");
return false;
}

virtual bool isLDRXl(const MCInst &Inst) const {
virtual bool isLoadLiteralGPR(const MCInst &Inst) const {
llvm_unreachable("not implemented");
return false;
}
Expand Down
9 changes: 3 additions & 6 deletions bolt/include/bolt/Profile/DataReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,6 @@ struct FuncBranchData {
ContainerTy Data;
ContainerTy EntryData;

/// Total execution count for the function.
int64_t ExecutionCount{0};

/// Total entry count from external code for the function.
uint64_t ExternEntryCount{0};

/// Indicate if the data was used.
bool Used{false};

Expand All @@ -115,6 +109,9 @@ struct FuncBranchData {
/// by counting the number of executed branches for each BranchInfo
uint64_t getNumExecutedBranches() const;

/// Set entry counts derived from EntryData to \p BF.
void setEntryCounts(BinaryFunction &BF) const;

/// Aggregation helpers
DenseMap<uint64_t, DenseMap<uint64_t, size_t>> IntraIndex;
DenseMap<uint64_t, DenseMap<Location, size_t>> InterIndex;
Expand Down
2 changes: 1 addition & 1 deletion bolt/lib/Passes/AArch64RelaxationPass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void AArch64RelaxationPass::runOnFunction(BinaryFunction &BF) {
bool IsADR = BC.MIB->isADR(Inst);

// TODO: Handle other types of LDR (literal, PC-relative) instructions.
if (!IsADR && !BC.MIB->isLDRXl(Inst) && !BC.MIB->isLDRWl(Inst))
if (!IsADR && !BC.MIB->isLoadLiteralGPR(Inst))
continue;

const MCSymbol *Symbol = BC.MIB->getTargetSymbol(Inst, IsADR ? 0 : 1);
Expand Down
44 changes: 26 additions & 18 deletions bolt/lib/Profile/DataReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,6 @@ void FuncBranchData::appendFrom(const FuncBranchData &FBD, uint64_t Offset) {
}
}
llvm::stable_sort(Data);
ExecutionCount += FBD.ExecutionCount;
ExternEntryCount += FBD.ExternEntryCount;
for (auto I = FBD.EntryData.begin(), E = FBD.EntryData.end(); I != E; ++I) {
assert(I->To.Name == FBD.Name);
auto NewElmt = EntryData.insert(EntryData.end(), *I);
Expand All @@ -104,6 +102,23 @@ uint64_t FuncBranchData::getNumExecutedBranches() const {
return ExecutedBranches;
}

void FuncBranchData::setEntryCounts(BinaryFunction &BF) const {
uint64_t ExecCount = 0;
uint64_t ExternEntryCount = 0;
// If destination is the function start - update execution count.
// NB: the data is skewed since we cannot tell tail recursion from
// branches to the function start.
for (const BranchInfo &BI : EntryData) {
if (BI.To.Offset != 0)
continue;
ExecCount += BI.Branches;
if (!BI.From.IsSymbol)
ExternEntryCount += BI.Branches;
}
BF.setExecutionCount(ExecCount);
BF.setExternEntryCount(ExternEntryCount);
}

void BasicSampleInfo::mergeWith(const BasicSampleInfo &SI) { Hits += SI.Hits; }

void BasicSampleInfo::print(raw_ostream &OS) const {
Expand Down Expand Up @@ -240,8 +255,7 @@ Error DataReader::preprocessProfile(BinaryContext &BC) {
}
if (FuncBranchData *FuncData = getBranchDataForNames(Function.getNames())) {
setBranchData(Function, FuncData);
Function.ExecutionCount = FuncData->ExecutionCount;
Function.ExternEntryCount = FuncData->ExternEntryCount;
FuncData->setEntryCounts(Function);
FuncData->Used = true;
}
}
Expand Down Expand Up @@ -333,6 +347,10 @@ std::error_code DataReader::parseInput() {
}

void DataReader::readProfile(BinaryFunction &BF) {
// Set entry counts for the common case.
if (FuncBranchData *FBD = getBranchData(BF))
FBD->setEntryCounts(BF);

if (BF.empty())
return;

Expand All @@ -351,6 +369,10 @@ void DataReader::readProfile(BinaryFunction &BF) {
if (!FBD)
return;

// Re-set entry counts in case FBD was swapped (LTO) or merged
// (fetchProfileForOtherEntryPoints).
FBD->setEntryCounts(BF);

// Assign basic block counts to function entry points. These only include
// counts for outside entries.
//
Expand Down Expand Up @@ -397,8 +419,6 @@ void DataReader::matchProfileData(BinaryFunction &BF) {
if (BF.ProfileMatchRatio == 1.0f) {
if (fetchProfileForOtherEntryPoints(BF)) {
BF.ProfileMatchRatio = evaluateProfileData(BF, *FBD);
BF.ExecutionCount = FBD->ExecutionCount;
BF.ExternEntryCount = FBD->ExternEntryCount;
BF.RawSampleCount = FBD->getNumExecutedBranches();
}
return;
Expand Down Expand Up @@ -428,8 +448,6 @@ void DataReader::matchProfileData(BinaryFunction &BF) {
// Update function profile data with the new set.
setBranchData(BF, NewBranchData);
NewBranchData->Used = true;
BF.ExecutionCount = NewBranchData->ExecutionCount;
BF.ExternEntryCount = NewBranchData->ExternEntryCount;
BF.ProfileMatchRatio = 1.0f;
break;
}
Expand Down Expand Up @@ -1168,16 +1186,6 @@ std::error_code DataReader::parse() {
I = GetOrCreateFuncEntry(BI.To.Name);
I->second.EntryData.emplace_back(std::move(BI));
}

// If destination is the function start - update execution count.
// NB: the data is skewed since we cannot tell tail recursion from
// branches to the function start.
if (BI.To.IsSymbol && BI.To.Offset == 0) {
I = GetOrCreateFuncEntry(BI.To.Name);
I->second.ExecutionCount += BI.Branches;
if (!BI.From.IsSymbol)
I->second.ExternEntryCount += BI.Branches;
}
}

while (hasMemData()) {
Expand Down
11 changes: 7 additions & 4 deletions bolt/lib/Rewrite/RewriteInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2162,10 +2162,13 @@ void RewriteInstance::relocateEHFrameSection() {
return;

// Only fix references that are relative to other locations.
if ((DwarfType & 0xf0) != dwarf::DW_EH_PE_pcrel &&
(DwarfType & 0xf0) != dwarf::DW_EH_PE_textrel &&
(DwarfType & 0xf0) != dwarf::DW_EH_PE_funcrel &&
(DwarfType & 0xf0) != dwarf::DW_EH_PE_datarel)
if (!(DwarfType & dwarf::DW_EH_PE_pcrel) &&
!(DwarfType & dwarf::DW_EH_PE_textrel) &&
!(DwarfType & dwarf::DW_EH_PE_funcrel) &&
!(DwarfType & dwarf::DW_EH_PE_datarel))
return;

if (!(DwarfType & dwarf::DW_EH_PE_sdata4))
return;

uint32_t RelType;
Expand Down
50 changes: 33 additions & 17 deletions bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -715,12 +715,10 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
return Inst.getOpcode() == AArch64::ADDXri;
}

bool isLDRWl(const MCInst &Inst) const override {
return Inst.getOpcode() == AArch64::LDRWl;
}

bool isLDRXl(const MCInst &Inst) const override {
return Inst.getOpcode() == AArch64::LDRXl;
bool isLoadLiteralGPR(const MCInst &Inst) const override {
unsigned OpCode = Inst.getOpcode();
return OpCode == AArch64::LDRWl || OpCode == AArch64::LDRXl ||
OpCode == AArch64::LDRSWl;
}

MCPhysReg getADRReg(const MCInst &Inst) const {
Expand All @@ -744,16 +742,36 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {

InstructionListType createAdrpLdr(const MCInst &LDRInst,
MCContext *Ctx) const override {
assert((isLDRXl(LDRInst) || isLDRWl(LDRInst)) &&
"LDR (literal, 32 or 64-bit integer load) instruction expected");
assert(isLoadLiteralGPR(LDRInst) &&
"LDR (literal) or LDRSW (literal) expected");
assert(LDRInst.getOperand(0).isReg() &&
"unexpected operand in LDR instruction");
const MCPhysReg DataReg = LDRInst.getOperand(0).getReg();
const MCPhysReg AddrReg =
isLDRXl(LDRInst) ? DataReg
: (MCPhysReg)RegInfo->getMatchingSuperReg(
DataReg, AArch64::sub_32,
&RegInfo->getRegClass(AArch64::GPR64RegClassID));
MCPhysReg AddrReg;
unsigned OpCode;
uint32_t RelType;
switch (LDRInst.getOpcode()) {
case AArch64::LDRWl:
AddrReg = (MCPhysReg)RegInfo->getMatchingSuperReg(
DataReg, AArch64::sub_32,
&RegInfo->getRegClass(AArch64::GPR64RegClassID));
OpCode = AArch64::LDRWui;
RelType = ELF::R_AARCH64_LDST32_ABS_LO12_NC;
break;
case AArch64::LDRXl:
AddrReg = DataReg;
OpCode = AArch64::LDRXui;
RelType = ELF::R_AARCH64_LDST64_ABS_LO12_NC;
break;
case AArch64::LDRSWl:
AddrReg = DataReg;
OpCode = AArch64::LDRSWui;
RelType = ELF::R_AARCH64_LDST64_ABS_LO12_NC;
break;
default:
llvm_unreachable("LDR (literal) or LDRSW (literal) expected");
}

const MCSymbol *Target = getTargetSymbol(LDRInst, 1);
assert(Target && "missing target symbol in LDR instruction");

Expand All @@ -764,15 +782,13 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
Insts[0].addOperand(MCOperand::createImm(0));
setOperandToSymbolRef(Insts[0], /* OpNum */ 1, Target, 0, Ctx,
ELF::R_AARCH64_NONE);
Insts[1].setOpcode(isLDRXl(LDRInst) ? AArch64::LDRXui : AArch64::LDRWui);
Insts[1].setOpcode(OpCode);
Insts[1].clear();
Insts[1].addOperand(MCOperand::createReg(DataReg));
Insts[1].addOperand(MCOperand::createReg(AddrReg));
Insts[1].addOperand(MCOperand::createImm(0));
Insts[1].addOperand(MCOperand::createImm(0));
setOperandToSymbolRef(Insts[1], /* OpNum */ 2, Target, 0, Ctx,
isLDRXl(LDRInst) ? ELF::R_AARCH64_LDST64_ABS_LO12_NC
: ELF::R_AARCH64_LDST32_ABS_LO12_NC);
setOperandToSymbolRef(Insts[1], /* OpNum */ 2, Target, 0, Ctx, RelType);
return Insts;
}

Expand Down
23 changes: 23 additions & 0 deletions bolt/test/AArch64/ldr-relaxation.s
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,29 @@ _start:
ret
.cfi_endproc
.size _start, .-_start
.endif

## Check LDR relaxation works on LDRSW (literal)

# RUN: llvm-mc -filetype=obj -triple aarch64-unknown-unknown \
# RUN: --defsym RELAX_SIMPLE_LDRSW=1 %s -o %t.o
# RUN: %clang %cflags %t.o -o %t.so -Wl,-q
# RUN: llvm-bolt %t.so -o %t.bolt
# RUN: llvm-objdump -d %t.bolt | FileCheck %s --check-prefix=RELAX_LDRSW

# RELAX_LDRSW: adrp
# RELAX_LDRSW-NEXT: ldrsw

.ifdef RELAX_SIMPLE_LDRSW
.text
.global _start
.type _start, %function
_start:
.cfi_startproc
ldrsw x0, _foo
ret
.cfi_endproc
.size _start, .-_start
.endif

.section .text_cold
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
#include "UncheckedStringToNumberConversionCheck.h"
#include "UndefinedMemoryManipulationCheck.h"
#include "UndelegatedConstructorCheck.h"
#include "UnhandledCodePathsCheck.h"
#include "UnhandledExceptionAtNewCheck.h"
#include "UnhandledSelfAssignmentCheck.h"
#include "UnintendedCharOstreamOutputCheck.h"
Expand Down Expand Up @@ -307,6 +308,8 @@ class BugproneModule : public ClangTidyModule {
"bugprone-undefined-memory-manipulation");
CheckFactories.registerCheck<UndelegatedConstructorCheck>(
"bugprone-undelegated-constructor");
CheckFactories.registerCheck<UnhandledCodePathsCheck>(
"bugprone-unhandled-code-paths");
CheckFactories.registerCheck<UnhandledSelfAssignmentCheck>(
"bugprone-unhandled-self-assignment");
CheckFactories.registerCheck<UnhandledExceptionAtNewCheck>(
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 @@ -107,6 +107,7 @@ add_clang_library(clangTidyBugproneModule STATIC
UncheckedStringToNumberConversionCheck.cpp
UndefinedMemoryManipulationCheck.cpp
UndelegatedConstructorCheck.cpp
UnhandledCodePathsCheck.cpp
UnhandledExceptionAtNewCheck.cpp
UnhandledSelfAssignmentCheck.cpp
UniquePtrArrayMismatchCheck.cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,20 @@
//
//===----------------------------------------------------------------------===//

#include "MultiwayPathsCoveredCheck.h"
#include "UnhandledCodePathsCheck.h"
#include "clang/AST/ASTContext.h"

#include <limits>

using namespace clang::ast_matchers;

namespace clang::tidy::hicpp {
namespace clang::tidy::bugprone {

void MultiwayPathsCoveredCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
void UnhandledCodePathsCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "WarnOnMissingElse", WarnOnMissingElse);
}

void MultiwayPathsCoveredCheck::registerMatchers(MatchFinder *Finder) {
void UnhandledCodePathsCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
switchStmt(
hasCondition(expr(
Expand Down Expand Up @@ -87,7 +86,7 @@ static std::size_t getNumberOfPossibleValues(QualType T,
return 1;
}

void MultiwayPathsCoveredCheck::check(const MatchFinder::MatchResult &Result) {
void UnhandledCodePathsCheck::check(const MatchFinder::MatchResult &Result) {
if (const auto *ElseIfWithoutElse =
Result.Nodes.getNodeAs<IfStmt>("else-if")) {
diag(ElseIfWithoutElse->getBeginLoc(),
Expand Down Expand Up @@ -123,8 +122,8 @@ void MultiwayPathsCoveredCheck::check(const MatchFinder::MatchResult &Result) {
llvm_unreachable("matched a case, that was not explicitly handled");
}

void MultiwayPathsCoveredCheck::handleSwitchWithDefault(
const SwitchStmt *Switch, std::size_t CaseCount) {
void UnhandledCodePathsCheck::handleSwitchWithDefault(const SwitchStmt *Switch,
std::size_t CaseCount) {
assert(CaseCount > 0 && "Switch statement with supposedly one default "
"branch did not contain any case labels");
if (CaseCount == 1 || CaseCount == 2)
Expand All @@ -134,7 +133,7 @@ void MultiwayPathsCoveredCheck::handleSwitchWithDefault(
: "switch could be better written as an if/else statement");
}

void MultiwayPathsCoveredCheck::handleSwitchWithoutDefault(
void UnhandledCodePathsCheck::handleSwitchWithoutDefault(
const SwitchStmt *Switch, std::size_t CaseCount,
const MatchFinder::MatchResult &Result) {
// The matcher only works because some nodes are explicitly matched and
Expand Down Expand Up @@ -172,4 +171,4 @@ void MultiwayPathsCoveredCheck::handleSwitchWithoutDefault(
CaseCount == 1 ? "switch with only one case; use an if statement"
: "potential uncovered code path; add a default label");
}
} // namespace clang::tidy::hicpp
} // namespace clang::tidy::bugprone
Loading