Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
6faf17b
[ThinLTO]Supports declaration import for global variables in distribu…
mingmingl-llvm Dec 3, 2024
b2dd4fa
[NFC]Update a ThinLTO test case (#117584)
mingmingl-llvm Dec 3, 2024
b80a157
AMDGPU: Add codegen support for gfx950 v_ashr_pk_i8/u8_i32 (#118304)
arsenm Dec 3, 2024
0a96161
[lldb] Simplify DumpValueObjectOptions::PointerDepth (NFC) (#117504)
kastiglione Dec 3, 2024
897dbde
[gn] port 51003076ebc1
nico Dec 3, 2024
a2cb208
[RISCV] Fix a typo in a deinterleave test
preames Dec 3, 2024
f71ea4b
[SLP][REVEC] reorderNodeWithReuses should not be called if all users …
HanKuanChen Dec 3, 2024
c3536b2
[WebAssembly] Define call-indirect-overlong and bulk-memory-opt featu…
sunfishcode Dec 3, 2024
7907292
[DAG] Apply Disjoint flag. (#118045)
fengfeng09 Dec 3, 2024
814ed93
[clang] constexpr built-in elementwise bitreverse function. (#118177)
c8ef Dec 3, 2024
1724188
[ObjectYAML][ELF] Take alignment into account when generating notes (…
igorkudrin Dec 3, 2024
fb14012
[ORC] Fix typo in comment. NFC.
lhames Dec 3, 2024
9ea993f
[Clang] Recover GLTemplateParameterList for generic lambdas in Rebuil…
zyn0217 Dec 3, 2024
eb3f1ae
[TTI][RISCV] Implement cost of some intrinsics with LMUL (#117874)
LiqinWeng Dec 3, 2024
9597971
Revert "[ObjectYAML][ELF] Take alignment into account when generating…
igorkudrin Dec 3, 2024
fc9052e
[clang][bytecode] Check __builtin_memcpy for null pointers (#118313)
tbaederr Dec 3, 2024
2af2634
[RISCV] Use vcompress in deinterleave2 intrinsic lowering (#118325)
preames Dec 3, 2024
2f5bfb4
[llvm-objdump] Default to --mattr=+all for AArch64be and AArch64_32 (…
hstk30-hw Dec 3, 2024
877b934
[CompilerRT] Remove sanitizer support for i386 watchsim (#117013)
cyndyishida Dec 3, 2024
295d6b1
[InstCombine] Fold `(X * (Y << K)) u>> K -> X * Y` when highbits are …
dtcxzyw Dec 3, 2024
6ef4990
Re-apply "[ORC] Track all dependencies on symbols that aren't..." wit…
lhames Dec 3, 2024
aba6bb0
[ORC][JITLink] Add jitlink::Scope::SideEffectsOnly, use it in ORC Pla…
lhames Dec 3, 2024
28e2a89
Revert "[ORC][JITLink] Add jitlink::Scope::SideEffectsOnly, use it in…
lhames Dec 3, 2024
dac9736
[clang][bytecode][NFC] Diagnose no-constexpr memcpy/strlen versions (…
tbaederr Dec 3, 2024
de415fb
[InstCombine][FP] Fix nnan preservation for transform fcmp + sel => f…
rajatbajpai Dec 3, 2024
4516263
[GlobalISel] Combine [s,z]ext of undef into 0 (#117439)
tschuett Dec 3, 2024
7895513
[clang][bytecode] Handle memmove like memcpy (#118431)
tbaederr Dec 3, 2024
e776484
[InstructionCost] Optimize operator==
MaskRay Dec 3, 2024
83cbb17
[AMDGPU] Refine AMDGPUAtomicOptimizerImpl class. NFC. (#118302)
jayfoad Dec 3, 2024
9692242
[RISCV][GISel] Support f64->f32 fptrunc and f32->f64 fpext without D …
topperc Dec 3, 2024
d097070
Re-apply "[ORC][JITLink] Add jitlink::Scope::SideEffectsOnly" with fi…
lhames Dec 3, 2024
c1ad064
[InstCombine] Fold `icmp spred (and X, highmask), C1` into `icmp spre…
dtcxzyw Dec 3, 2024
46446bb
[clang][bytecode][NFC] Diagnose non-constexpr builtin strcmp calls (#…
tbaederr Dec 3, 2024
e30d304
[MemCpyOpt] Introduce test for PR101930 (NFC)
antoniofrighetto Dec 3, 2024
1d6ab18
[MemCpyOpt] Drop dead `memmove` calls on `memset`'d source data
antoniofrighetto Dec 3, 2024
5b0f4f2
[BasicAA] Treat returns_twice functions as clobbering unescaped objec…
nikic Dec 3, 2024
a871124
[flang][hlfir] optimize hlfir.eval_in_mem bufferization (#118069)
jeanPerier Dec 3, 2024
cd7e653
[flang] optimize array function calls using hlfir.eval_in_mem (#118070)
jeanPerier Dec 3, 2024
fed3a9b
[mlir] Add ScalableVectorType and FixedVectorType (#87986)
banach-space Dec 3, 2024
59bb9b9
[lldb] Expose discontinuous functions through SBFunction::GetRanges (…
labath Dec 3, 2024
78e35e4
[ValueTracking] Fix typo in `isKnownNegative` and `MaskedValueIsZero`…
dtcxzyw Dec 3, 2024
dd2b2b8
[clang][HLSL] Add GroupMemoryBarrierWithGroupSync intrinsic (#111883)
adam-yang Dec 3, 2024
89a0ee8
[clang][bytecode] Handle __builtin_wcslen (#118446)
tbaederr Dec 3, 2024
ba14dac
[lldb] Use the function block as a source for function ranges (#117996)
labath Dec 3, 2024
2526d5b
Revert "[lldb] Use the function block as a source for function ranges…
labath Dec 3, 2024
bfb2620
LV/test: clean up a test and regen with UTC (#118394)
artagnon Dec 3, 2024
4849d59
[clang] Warn [[clang::lifetimebound]] misusages on types (#118281)
emaxx-google Dec 3, 2024
0f4dc42
[clang][bytecode] Initialize elements in __builtin_elementwise_popcou…
tbaederr Dec 3, 2024
4dafb09
Revert "Add symbol visibility macros to abi-breaking.h.cmake" (#118464)
juliannagele Dec 3, 2024
7d72525
[AArch64] Fix STG instruction being moved past memcpy (#117191)
ostannard Dec 3, 2024
9c5a84b
[InstCombine] Support nusw in icmp of gep with base
nikic Dec 3, 2024
bdc6faf
[InstCombine] Support nusw in icmp of two geps with same base
nikic Dec 3, 2024
3f39c5d
[clang][bytecode] Reject memcpy dummy pointers after null check (#118…
tbaederr Dec 3, 2024
51b74bb
Reapply "[lldb] Use the function block as a source for function range…
labath Dec 3, 2024
9a4c5a5
Revert "Re-apply [lldb] Do not use LC_FUNCTION_STARTS data to determi…
Michael137 Dec 3, 2024
f4ce7e0
[MLIR][TOSA] Update PowOp output name from z to output (#118407)
Jerry-Ge Dec 3, 2024
356df2d
Revert "[clang] Warn [[clang::lifetimebound]] misusages on types (#11…
hokein Dec 3, 2024
6292327
[lld] Convert CODE_OWNERS.txt to Maintainers.md (#118084)
DavidSpickett Dec 3, 2024
aec9ecb
[github] Change "code owners" note to refer to "maintainers" (#118087)
DavidSpickett Dec 3, 2024
b2df007
[FastISel] Support unreachable with NoTrapAfterNoReturn (#118296)
nikic Dec 3, 2024
61c2ac0
Revert "[clang][bytecode] Handle __builtin_wcslen (#118446)"
tbaederr Dec 3, 2024
8075445
[LoopVectorize] Add tests for dereferenceable loads in more loops (#1…
david-arm Dec 3, 2024
5f99eb9
[SPIR-V] Fixup storage class for global private (#118318)
Keenuts Dec 3, 2024
4a6ecd3
Add support for SPIR-V extension: SPV_INTEL_media_block_io (#118024)
vmaksimo Dec 3, 2024
a639312
[X86] Fix typo of gracemont (#118486)
phoebewang Dec 3, 2024
81d82ca
[flang] Treat pre-processed input as fixed (#117563)
macurtis-amd Dec 3, 2024
f335364
[InstCombine] Support gep nuw in icmp folds (#118472)
nikic Dec 3, 2024
51a895a
IR: introduce struct with CmpInst::Predicate and samesign (#116867)
artagnon Dec 3, 2024
ff0babc
[clang][bytecode] Fix discarded pointer subtractions (#118477)
tbaederr Dec 3, 2024
2a0ee09
IVDesc: strip redundant arg in getOpcode call (NFC) (#118476)
artagnon Dec 3, 2024
e1cb316
Reapply "[clang] Fix name lookup for dependent bases" (#118003)
vbe-sc Dec 3, 2024
7802fb5
[clang][bytecode] Fix `__extension__` handling for vector operators (…
tbaederr Dec 3, 2024
8c749ff
[lldb] Fix "exact match" debug_names type queries (#118465)
labath Dec 3, 2024
57907c1
[clang-tidy] ignore `[[clang::lifetimebound]]` param in return-const-…
HerrCai0907 Dec 3, 2024
c7e1468
[SPIR-V] Add XFAIL to the broken test (#118487)
VyacheslavLevytskyy Dec 3, 2024
a7fda0e
[VPlan] Introduce VPScalarPHIRecipe, use for can & EVL IV codegen (NF…
fhahn Dec 3, 2024
10223c7
[ConstraintElim] Use nusw flag for GEP decomposition
nikic Dec 3, 2024
db4cbe5
[SPIR-V] Fix generation of invalid SPIR-V in cases of of bitcasts bet…
VyacheslavLevytskyy Dec 3, 2024
4e6f812
[mlir][llvm] Align linkage enum order with LLVM (NFC) (#118484)
xlauko Dec 3, 2024
874b4fb
[SPIR-V] Fix emission of debug and annotation instructions and add SP…
VyacheslavLevytskyy Dec 3, 2024
af35e21
[flang] Update CommandTest for AIX (NFC) (#118403)
kkwli Dec 3, 2024
9ad09b2
[AMDGPU] Refine AMDGPUCodeGenPrepareImpl class. NFC. (#118461)
jayfoad Dec 3, 2024
c7babfa
[Offload] Find libc relative to DeviceRTL path (#118497)
jplehr Dec 3, 2024
866b9f4
[SystemZ] Add realistic cost estimates for vector reduction intrinsic…
dominik-steenken Dec 3, 2024
17cfd01
[AMDGPU][Doc] Add `gfx950` to `gfx9-4-generic` in the document
shiltian Dec 3, 2024
c9fbabf
[ASTMatcher] Fix redundant macro expansion checks in getExpansionLocO…
mandymimi Dec 3, 2024
8da4903
Reland of #108413: [Offload] Introduce offload-tblgen and initial new…
callumfare Dec 3, 2024
5024926
MLRegAlloc: Do not use float to count number of used registers [NFC] …
arsenm Dec 3, 2024
af31aa4
[LV] Pre-commit tests for fixed width VF fully unrolled loop cost mod…
igogo-x86 Dec 3, 2024
1f20eee
[SPIR-V] Emit OpConstant instead of OpConstantNull to conform to NonS…
VyacheslavLevytskyy Dec 3, 2024
68112f0
libc: fixup include path and bazel stale comments (#118510)
nickdesaulniers Dec 3, 2024
56ab56c
[clang-format] Add support for `.cjs` as JavaScript file extension (#…
d3x0r Dec 3, 2024
5ae613c
[NFC] Remove trailing white spaces in `clang/include/clang/Driver/Opt…
shiltian Dec 3, 2024
afe75b4
[mlir python] Add nanobind support for standalone dialects. (#117922)
hawkinsp Dec 3, 2024
04996a2
[ELF] Rename target-specific RelExpr enumerators
MaskRay Dec 3, 2024
61bf308
Revert "[mlir python] Add nanobind support for standalone dialects." …
makslevental Dec 3, 2024
95a4d30
[NFC] Remove trailing white spaces in `clang/docs/ReleaseNotes.rst`
shiltian Dec 3, 2024
eb257fe
[OpenACC] Enable 3 more clauses for combined constructs.
erichkeane Dec 3, 2024
d1f4f63
[SystemZ] Use nop mnemonics for disassembly
uweigand Dec 3, 2024
ce416a0
[Github] fix libc documentation path (#118514)
nickdesaulniers Dec 3, 2024
f44bee7
[lldb] Fix the DWARF index cache when index is partial. (#118390)
clayborg Dec 3, 2024
e8b9e13
[bazel] update config.h.cmake
durin42 Dec 3, 2024
2a1a024
Make SBMemoryRegionInfoList iterable with Python SWIG (#117358)
lukejriddle Dec 3, 2024
935bbbb
[PPC] Remove missed cases of ppc-merge-string-pool (#117626)
syzaara Dec 3, 2024
0ca8a59
[lldb][NFC] Remove unused field Platform::m_remote_url (#118411)
bulbazord Dec 3, 2024
0c6457b
[LLVM][TableGen] Refine overloaded intrinsic suffix check (#117957)
masonremy Dec 3, 2024
deed1b0
[SystemZ] Fix address parsing in HLASM mode
uweigand Dec 3, 2024
9791f25
[clang][sema] Add support and documentation for `__has_extension(c_fi…
AidanGoldfarb Dec 3, 2024
acf3b1a
Reland [NFC] Move DroppedVariableStats to its own file and redesign i…
rastogishubham Dec 3, 2024
4dd5ac9
[RISCV] Improve coverage for spread(N) shuffles
preames Dec 3, 2024
b8805c8
[RISCV] Clang-format a few lines to remove diff in a nearby patch
preames Dec 3, 2024
4b9bf66
[gn build] Port acf3b1aa932b
llvmgnsyncbot Dec 3, 2024
25b1896
Fix test for bots where -std=c99 is the default
AaronBallman Dec 3, 2024
f715124
[lldb-dap] Fix the vscode-uninstall command
JDevlieghere Dec 3, 2024
0ccd18e
Typo fix; NFC
AaronBallman Dec 3, 2024
3845624
[lldb] For a host socket, add a method to print the listening address…
ashgti Dec 3, 2024
fc11b67
[LLVM][Maintainers] Update LLVM maintainers for OpenMP runtime (#118521)
nawrinsu Dec 3, 2024
cd04653
[libc][math][c23] Add sinf16 C23 math function (#116674)
wldfngrs Dec 3, 2024
2d57333
[flang] Fix crash in HLFIR generation (#118399)
klausler Dec 3, 2024
d6cd214
[ThinLTO][LowerTypeTests] Don't compute address taken set unless CFI …
teresajohnson Dec 3, 2024
fdd09e9
[ASTMatchers] AST matcher support for ObjC pointers (#117021)
t-rasmud Dec 3, 2024
e0ae779
[libc] delete hdrgen (#117220)
nickdesaulniers Dec 3, 2024
a0c4f85
[libc] Change ctype to be encoding independent (#110574)
michaelrj-google Dec 3, 2024
249755c
Reland "Add a pass to collect dropped var stats for MIR" (#117044)
rastogishubham Dec 3, 2024
5155322
Revert "Reland of #108413: [Offload] Introduce offload-tblgen and ini…
jplehr Dec 3, 2024
d8b5af4
Revert "Reland "Add a pass to collect dropped var stats for MIR" (#11…
rastogishubham Dec 3, 2024
80987ef
Revert "Reland [NFC] Move DroppedVariableStats to its own file and re…
rastogishubham Dec 3, 2024
9bf6365
[llvm] Remove `br i1 undef` from some regression tests [NFC] (#118419)
leewei05 Dec 3, 2024
fef54d0
AMDGPU/GlobalISel: Add skeletons for new register bank select passes …
petar-avramovic Dec 3, 2024
45ff287
[ConstraintSystem] Fix signed overflow in negate.
fhahn Dec 3, 2024
69e9ceb
[gn build] Port 80987ef4b609
llvmgnsyncbot Dec 3, 2024
7417ba6
[gn build] Port fef54d0393fd
llvmgnsyncbot Dec 3, 2024
b5b15c1
[ast matcher][NFC] make dump_ast_matchers.py run in any path (#117942)
HerrCai0907 Dec 3, 2024
d5956fb
[BOLT][AArch64] Add support for short LLD thunks/veneers (#118422)
maksfb Dec 3, 2024
a9bf16d
[StaticAnalyzer] Migrate away from PointerUnion::{is,get} (NFC) (#118…
kazutakahirata Dec 3, 2024
c806042
[libc++] Drop dependency on __functional/operations.h from <atomic> (…
ldionne Dec 3, 2024
5522d24
[flang][cuda] Allow AbstractResult to run in gpu.module (#118529)
clementval Dec 3, 2024
0c8928d
Reland "[NFC] Move DroppedVariableStats to its own file and redesign …
rastogishubham Dec 3, 2024
1e7171f
[AArch64] Add tablegen patterns for concat(extract-high, extract-high…
davemgreen Dec 3, 2024
e2472d3
Rework attr-target-x86 test (#117091)
MatzeB Dec 3, 2024
b206ba1
[gn build] Port 0c8928d456ac
llvmgnsyncbot Dec 3, 2024
f2fa9ac
[nfc][MSan] Change for-loop to ArgNo instead of drop_begin (#117553)
k-kashapov Dec 3, 2024
c7d3859
[ast matcher] add `ExportDecl` in dynamically matchers (#118258)
HerrCai0907 Dec 3, 2024
ea6cdb9
allow prefer 256 bit attribute target (#117092)
MatzeB Dec 3, 2024
c8b7ec2
Define a diagnostic group for missing variadic macro arguments (#116855)
ahatanak Dec 3, 2024
1afb81d
[StructuralHash] Global Variable (#118412)
kyulee-com Dec 4, 2024
a201ba1
[mlir][Vector] Add support for 0-d shapes in extract-shape_cast folde…
Groverkss Dec 4, 2024
e9dc6c5
CodeGen: Don't assert when printing null GlobalAddress operands (#115…
arsenm Dec 4, 2024
35cce40
[WebAssembly] Support the new "Lime1" CPU (#112035)
sunfishcode Dec 4, 2024
410cbe3
[AMDGPU] Use COV6 by default (#118515)
shiltian Dec 4, 2024
259bdc0
Revert "Reland "[NFC] Move DroppedVariableStats to its own file and r…
rastogishubham Dec 4, 2024
67d8e17
[gn build] Port 259bdc0033d1
llvmgnsyncbot Dec 4, 2024
14a259f
GlobalOpt: Use the correct address space when creating a "*.init" glo…
resistor Dec 4, 2024
68bcba6
Revert "[AMDGPU] Use COV6 by default (#118515)"
shiltian Dec 4, 2024
6a0d6fc
Revert "[StructuralHash] Global Variable (#118412)"
kyulee-com Dec 4, 2024
46de3a7
[HLSL] get inout/out ABI for array parameters working (#111047)
spall Dec 4, 2024
f6f16b5
[bazel] update for a0c4f854cad2b97e44a1b58dc1fd982e1c4d60f3
durin42 Dec 4, 2024
caa8aa5
[SelectionDAG] Rename CallOptions::IsSExt to IsSigned. NFC (#118574)
topperc Dec 4, 2024
3dc9755
[libc] Fix the GPU build when building inside the NATIVE project (#11…
jhuber6 Dec 4, 2024
e08e5e2
[mlir][transforms] Use `isExternal` instead of `isDeclaration` for `F…
CoTinker Dec 4, 2024
a93b77c
[memprof] Fix IndexedMemProfRecord::clear (#118533)
kazutakahirata Dec 4, 2024
c1afcaf
[RISCV] Match deinterleave(4,8) shuffles to SHL/TRUNC when legal (#11…
preames Dec 4, 2024
f947d5a
[RISCV] Reduce redundancy in vnsrl tests
preames Dec 4, 2024
95566af
[Clang][AST] Fix MS Mangle concept uneval context template instantiat…
MaxEW707 Dec 4, 2024
982575f
[lld-link] Add context-aware diagnostic functions (#118430)
MaskRay Dec 4, 2024
442ee78
[lldb-dap] Fix Markdown tables in README.md
JDevlieghere Dec 4, 2024
3e11ae6
[ORC] Merge ostream operators for SymbolStringPtrs into SymbolStringP…
lhames Dec 4, 2024
932c524
[CodeGen] Fix warning after #115531
MaskRay Dec 4, 2024
bc66e9a
[lld-link] Replace message(...) with Msg(ctx)
MaskRay Dec 4, 2024
4f41862
Reapply "[StructuralHash] Global Variable (#118412)"
kyulee-com Dec 4, 2024
109e4a1
[RISCV] Handle zeroinitializer of vector tuple Type (#113995)
4vtomat Dec 4, 2024
9c9d4b9
[ORC] Move ostream operator for SymbolStringPtrBase into OrcShared.
lhames Dec 4, 2024
5e7c88b
[gn build] Port 9c9d4b9e73c1
llvmgnsyncbot Dec 4, 2024
b076fbb
[TargetLowering] Use Type* instead of EVT in shouldSignExtendTypeInLi…
topperc Dec 4, 2024
7be3326
[clangd] Re-land "support outgoing calls in call hierarchy" (#117673)
HighCommander4 Dec 4, 2024
52aff97
[lld][wasm] Clear lazyBitcodeFiles while resetting context (#118440)
anutosh491 Dec 4, 2024
1534f45
[lld-link] Replace warn(...) with Warn(ctx)
MaskRay Dec 4, 2024
59bc03c
[lld-link] Simplify warnUnusable. NFC
MaskRay Dec 4, 2024
92ed7e2
[CodeGen][PM] Use errs() instead of dbgs() in printer passes (#118469)
optimisan Dec 4, 2024
ff281f7
[PGO] Add option to always instrumenting loop entries (#116789)
ronryvchin Dec 4, 2024
5cd3e97
[RISCV] Mark vmvNr.v as implicitly using vtype (#118414)
lukel97 Dec 4, 2024
94d6b1c
[clangd] Fix warnings
kazutakahirata Dec 4, 2024
154c7c0
[Clang] Don't add top-level const qualifiers to captured function typ…
zyn0217 Dec 4, 2024
b1a48af
[DAG] SimplifyDemandedVectorElts - add handling for INT<->FP conversi…
RKSimon Dec 4, 2024
455b4fd
[AMDGPU] Emit amdgcn.if.break in the same BB as amdgcn.loop (#118081)
mariusz-sikora-at-amd Dec 4, 2024
2a30bfc
[mlir] Improve error message when number of operands and types differ…
zero9178 Dec 4, 2024
4df18ab
[mlir] Specify deps via `LLVM_LINK_COMPONENTS` (#118542)
kwk Dec 4, 2024
3b0cb89
[clang-repl][CMake][MSVC] Use LINKER: instead of `-Wl` (#118518)
Maetveis Dec 4, 2024
d9b4bdb
[CodeGen][NewPM] Port LiveDebugVariables to NPM (#115468)
optimisan Dec 4, 2024
2137ded
[OpenMP] Add Maintainers.md file
DavidSpickett Dec 4, 2024
bba2507
[compiler-rt][MSVC][CMake] Wrap Linker flags for ICX (#118496)
Maetveis Dec 4, 2024
19f895e
[AutoBump] Merge with bba2507c (Dec 04)
jorickert Mar 17, 2025
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
  •  
  •  
  •  
7 changes: 3 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@
# to receive an approval from a "code owner" in particular -- any LLVM project
# member can approve pull requests.
#
# Note that GitHub's concept of "code owner" is independent from LLVM's own
# "code owner" concept, they merely happen to share terminology. See
# https://llvm.org/docs/DeveloperPolicy.html#code-owners, as well as the
# CODE_OWNERS.txt files in the respective subproject directories.
# This is independent of LLVM's own "maintainer" concept.
# See https://llvm.org/docs/DeveloperPolicy.html#maintainers as well as the
# Maintainers.* files in the the respective subproject directories.

/libcxx/ @llvm/reviewers-libcxx
/libcxxabi/ @llvm/reviewers-libcxxabi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ jobs:
cmake -B libc-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" -DLLVM_ENABLE_SPHINX=ON ./runtimes
TZ=UTC ninja -C libc-build docs-libc-html
mkdir built-docs/libc
cp -r libc-build/docs/* built-docs/libc/
cp -r libc-build/libc/docs/* built-docs/libc/
- name: Build LLD docs
if: steps.docs-changed-subprojects.outputs.lld_any_changed == 'true'
run: |
Expand Down
11 changes: 6 additions & 5 deletions bolt/lib/Passes/VeneerElimination.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,17 @@ Error VeneerElimination::runOnFunctions(BinaryContext &BC) {
if (BF.isIgnored())
continue;

MCInst &FirstInstruction = *(BF.begin()->begin());
const MCSymbol *VeneerTargetSymbol = 0;
uint64_t TargetAddress;
if (BC.MIB->matchAbsLongVeneer(BF, TargetAddress)) {
if (BC.MIB->isTailCall(FirstInstruction)) {
VeneerTargetSymbol = BC.MIB->getTargetSymbol(FirstInstruction);
} else if (BC.MIB->matchAbsLongVeneer(BF, TargetAddress)) {
if (BinaryFunction *TargetBF =
BC.getBinaryFunctionAtAddress(TargetAddress))
VeneerTargetSymbol = TargetBF->getSymbol();
} else {
MCInst &FirstInstruction = *(BF.begin()->begin());
if (BC.MIB->hasAnnotation(FirstInstruction, "AArch64Veneer"))
VeneerTargetSymbol = BC.MIB->getTargetSymbol(FirstInstruction, 1);
} else if (BC.MIB->hasAnnotation(FirstInstruction, "AArch64Veneer")) {
VeneerTargetSymbol = BC.MIB->getTargetSymbol(FirstInstruction, 1);
}

if (!VeneerTargetSymbol)
Expand Down
59 changes: 41 additions & 18 deletions bolt/test/AArch64/veneer-lld-abs.s
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## Check that llvm-bolt correctly recognizes long absolute thunks generated
## by LLD.
## Check that llvm-bolt correctly recognizes veneers/thunks for absolute code
## generated by LLD.

# RUN: llvm-mc -filetype=obj -triple aarch64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags -fno-PIC -no-pie %t.o -o %t.exe -nostdlib \
Expand All @@ -12,40 +12,63 @@

.text
.balign 4
.global foo
.type foo, %function
foo:
adrp x1, foo
.global far_function
.type far_function, %function
far_function:
ret
.size foo, .-foo
.size far_function, .-far_function

.global near_function
.type near_function, %function
near_function:
ret
.size near_function, .-near_function

## Force relocations against .text.
.reloc 0, R_AARCH64_NONE

.section ".mytext", "ax"
.balign 4

.global __AArch64AbsLongThunk_foo
.type __AArch64AbsLongThunk_foo, %function
__AArch64AbsLongThunk_foo:
## This version of a thunk is always generated by LLD for function calls
## spanning more than 256MB.
.global __AArch64AbsLongThunk_far_function
.type __AArch64AbsLongThunk_far_function, %function
__AArch64AbsLongThunk_far_function:
ldr x16, .L1
br x16
# CHECK-INPUT-LABEL: <__AArch64AbsLongThunk_foo>:
# CHECK-INPUT-LABEL: <__AArch64AbsLongThunk_far_function>:
# CHECK-INPUT-NEXT: ldr
# CHECK-INPUT-NEXT: br
.L1:
.quad foo
.size __AArch64AbsLongThunk_foo, .-__AArch64AbsLongThunk_foo
.quad far_function
.size __AArch64AbsLongThunk_far_function, .-__AArch64AbsLongThunk_far_function

## If a callee is closer than 256MB away, LLD may generate a thunk with a direct
## jump to the callee. Note, that the name might still include "AbsLong".
.global __AArch64AbsLongThunk_near_function
.type __AArch64AbsLongThunk_near_function, %function
__AArch64AbsLongThunk_near_function:
b near_function
# CHECK-INPUT-LABEL: <__AArch64AbsLongThunk_near_function>:
# CHECK-INPUT-NEXT: b {{.*}} <near_function>
.size __AArch64AbsLongThunk_near_function, .-__AArch64AbsLongThunk_near_function

## Check that the thunk was removed from .text and _start() calls foo()
## Check that thunks were removed from .text, and _start calls functions
## directly.

# CHECK-OUTPUT-NOT: __AArch64AbsLongThunk_foo
# CHECK-OUTPUT-NOT: __AArch64AbsLongThunk_{{.*}}

.global _start
.type _start, %function
_start:
# CHECK-INPUT-LABEL: <_start>:
# CHECK-OUTPUT-LABEL: <_start>:
bl __AArch64AbsLongThunk_foo
# CHECK-INPUT-NEXT: bl {{.*}} <__AArch64AbsLongThunk_foo>
# CHECK-OUTPUT-NEXT: bl {{.*}} <foo>
bl __AArch64AbsLongThunk_far_function
bl __AArch64AbsLongThunk_near_function
# CHECK-INPUT-NEXT: bl {{.*}} <__AArch64AbsLongThunk_far_function>
# CHECK-INPUT-NEXT: bl {{.*}} <__AArch64AbsLongThunk_near_function>
# CHECK-OUTPUT-NEXT: bl {{.*}} <far_function>
# CHECK-OUTPUT-NEXT: bl {{.*}} <near_function>
ret
.size _start, .-_start
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//

#include "ReturnConstRefFromParameterCheck.h"
#include "clang/AST/Attrs.inc"
#include "clang/AST/Expr.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/ASTMatchers/ASTMatchers.h"
Expand All @@ -15,14 +16,23 @@ using namespace clang::ast_matchers;

namespace clang::tidy::bugprone {

namespace {

AST_MATCHER(ParmVarDecl, hasLifetimeBoundAttr) {
return Node.hasAttr<LifetimeBoundAttr>();
}

} // namespace

void ReturnConstRefFromParameterCheck::registerMatchers(MatchFinder *Finder) {
const auto DRef = ignoringParens(
declRefExpr(
to(parmVarDecl(hasType(hasCanonicalType(
qualType(lValueReferenceType(pointee(
qualType(isConstQualified()))))
.bind("type"))),
hasDeclContext(functionDecl().bind("owner")))
hasDeclContext(functionDecl().bind("owner")),
unless(hasLifetimeBoundAttr()))
.bind("param")))
.bind("dref"));
const auto Func =
Expand Down
8 changes: 8 additions & 0 deletions clang-tools-extra/clangd/ClangdLSPServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1415,6 +1415,12 @@ void ClangdLSPServer::onInlayHint(const InlayHintsParams &Params,
std::move(Reply));
}

void ClangdLSPServer::onCallHierarchyOutgoingCalls(
const CallHierarchyOutgoingCallsParams &Params,
Callback<std::vector<CallHierarchyOutgoingCall>> Reply) {
Server->outgoingCalls(Params.item, std::move(Reply));
}

void ClangdLSPServer::applyConfiguration(
const ConfigurationSettings &Settings) {
// Per-file update to the compilation database.
Expand Down Expand Up @@ -1693,6 +1699,8 @@ void ClangdLSPServer::bindMethods(LSPBinder &Bind,
Bind.method("typeHierarchy/subtypes", this, &ClangdLSPServer::onSubTypes);
Bind.method("textDocument/prepareCallHierarchy", this, &ClangdLSPServer::onPrepareCallHierarchy);
Bind.method("callHierarchy/incomingCalls", this, &ClangdLSPServer::onCallHierarchyIncomingCalls);
if (Opts.EnableOutgoingCalls)
Bind.method("callHierarchy/outgoingCalls", this, &ClangdLSPServer::onCallHierarchyOutgoingCalls);
Bind.method("textDocument/selectionRange", this, &ClangdLSPServer::onSelectionRange);
Bind.method("textDocument/documentLink", this, &ClangdLSPServer::onDocumentLink);
Bind.method("textDocument/semanticTokens/full", this, &ClangdLSPServer::onSemanticTokens);
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clangd/ClangdLSPServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ class ClangdLSPServer : private ClangdServer::Callbacks,
void onCallHierarchyIncomingCalls(
const CallHierarchyIncomingCallsParams &,
Callback<std::vector<CallHierarchyIncomingCall>>);
void onCallHierarchyOutgoingCalls(
const CallHierarchyOutgoingCallsParams &,
Callback<std::vector<CallHierarchyOutgoingCall>>);
void onClangdInlayHints(const InlayHintsParams &,
Callback<llvm::json::Value>);
void onInlayHint(const InlayHintsParams &, Callback<std::vector<InlayHint>>);
Expand Down
14 changes: 13 additions & 1 deletion clang-tools-extra/clangd/ClangdServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,9 @@ ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB,
const ThreadsafeFS &TFS, const Options &Opts,
Callbacks *Callbacks)
: FeatureModules(Opts.FeatureModules), CDB(CDB), TFS(TFS),
DynamicIdx(Opts.BuildDynamicSymbolIndex ? new FileIndex() : nullptr),
DynamicIdx(Opts.BuildDynamicSymbolIndex
? new FileIndex(Opts.EnableOutgoingCalls)
: nullptr),
ModulesManager(Opts.ModulesManager),
ClangTidyProvider(Opts.ClangTidyProvider),
UseDirtyHeaders(Opts.UseDirtyHeaders),
Expand Down Expand Up @@ -256,6 +258,7 @@ ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB,
Callbacks->onBackgroundIndexProgress(S);
};
BGOpts.ContextProvider = Opts.ContextProvider;
BGOpts.SupportContainedRefs = Opts.EnableOutgoingCalls;
BackgroundIdx = std::make_unique<BackgroundIndex>(
TFS, CDB,
BackgroundIndexStorage::createDiskBackedStorageFactory(
Expand Down Expand Up @@ -912,6 +915,15 @@ void ClangdServer::inlayHints(PathRef File, std::optional<Range> RestrictRange,
WorkScheduler->runWithAST("InlayHints", File, std::move(Action), Transient);
}

void ClangdServer::outgoingCalls(
const CallHierarchyItem &Item,
Callback<std::vector<CallHierarchyOutgoingCall>> CB) {
WorkScheduler->run("Outgoing Calls", "",
[CB = std::move(CB), Item, this]() mutable {
CB(clangd::outgoingCalls(Item, Index));
});
}

void ClangdServer::onFileEvent(const DidChangeWatchedFilesParams &Params) {
// FIXME: Do nothing for now. This will be used for indexing and potentially
// invalidating other caches.
Expand Down
9 changes: 9 additions & 0 deletions clang-tools-extra/clangd/ClangdServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ class ClangdServer {
/// Cached preambles are potentially large. If false, store them on disk.
bool StorePreamblesInMemory = true;

/// Call hierarchy's outgoing calls feature requires additional index
/// serving structures which increase memory usage. If false, these are
/// not created and the feature is not enabled.
bool EnableOutgoingCalls = true;

/// This throttler controls which preambles may be built at a given time.
clangd::PreambleThrottler *PreambleThrottler = nullptr;

Expand Down Expand Up @@ -292,6 +297,10 @@ class ClangdServer {
void incomingCalls(const CallHierarchyItem &Item,
Callback<std::vector<CallHierarchyIncomingCall>>);

/// Resolve outgoing calls for a given call hierarchy item.
void outgoingCalls(const CallHierarchyItem &Item,
Callback<std::vector<CallHierarchyOutgoingCall>>);

/// Resolve inlay hints for a given document.
void inlayHints(PathRef File, std::optional<Range> RestrictRange,
Callback<std::vector<InlayHint>>);
Expand Down
61 changes: 61 additions & 0 deletions clang-tools-extra/clangd/XRefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1702,6 +1702,7 @@ declToHierarchyItem(const NamedDecl &ND, llvm::StringRef TUPath) {

HierarchyItem HI;
HI.name = printName(Ctx, ND);
// FIXME: Populate HI.detail the way we do in symbolToHierarchyItem?
HI.kind = SK;
HI.range = Range{sourceLocToPosition(SM, DeclRange->getBegin()),
sourceLocToPosition(SM, DeclRange->getEnd())};
Expand Down Expand Up @@ -1753,6 +1754,7 @@ static std::optional<HierarchyItem> symbolToHierarchyItem(const Symbol &S,
}
HierarchyItem HI;
HI.name = std::string(S.Name);
HI.detail = (S.Scope + S.Name).str();
HI.kind = indexSymbolKindToSymbolKind(S.SymInfo.Kind);
HI.selectionRange = Loc->range;
// FIXME: Populate 'range' correctly
Expand Down Expand Up @@ -2319,6 +2321,65 @@ incomingCalls(const CallHierarchyItem &Item, const SymbolIndex *Index) {
return Results;
}

std::vector<CallHierarchyOutgoingCall>
outgoingCalls(const CallHierarchyItem &Item, const SymbolIndex *Index) {
std::vector<CallHierarchyOutgoingCall> Results;
if (!Index || Item.data.empty())
return Results;
auto ID = SymbolID::fromStr(Item.data);
if (!ID) {
elog("outgoingCalls failed to find symbol: {0}", ID.takeError());
return Results;
}
// In this function, we find outgoing calls based on the index only.
ContainedRefsRequest Request;
Request.ID = *ID;
// Initially store the ranges in a map keyed by SymbolID of the callee.
// This allows us to group different calls to the same function
// into the same CallHierarchyOutgoingCall.
llvm::DenseMap<SymbolID, std::vector<Range>> CallsOut;
// We can populate the ranges based on a refs request only. As we do so, we
// also accumulate the callee IDs into a lookup request.
LookupRequest CallsOutLookup;
Index->containedRefs(Request, [&](const auto &R) {
auto Loc = indexToLSPLocation(R.Location, Item.uri.file());
if (!Loc) {
elog("outgoingCalls failed to convert location: {0}", Loc.takeError());
return;
}
auto It = CallsOut.try_emplace(R.Symbol, std::vector<Range>{}).first;
It->second.push_back(Loc->range);

CallsOutLookup.IDs.insert(R.Symbol);
});
// Perform the lookup request and combine its results with CallsOut to
// get complete CallHierarchyOutgoingCall objects.
Index->lookup(CallsOutLookup, [&](const Symbol &Callee) {
// The containedRefs request should only return symbols which are
// function-like, i.e. symbols for which references to them can be "calls".
using SK = index::SymbolKind;
auto Kind = Callee.SymInfo.Kind;
assert(Kind == SK::Function || Kind == SK::InstanceMethod ||
Kind == SK::ClassMethod || Kind == SK::StaticMethod ||
Kind == SK::Constructor || Kind == SK::Destructor ||
Kind == SK::ConversionFunction);
(void)Kind;
(void)SK::Function;

auto It = CallsOut.find(Callee.ID);
assert(It != CallsOut.end());
if (auto CHI = symbolToCallHierarchyItem(Callee, Item.uri.file()))
Results.push_back(
CallHierarchyOutgoingCall{std::move(*CHI), std::move(It->second)});
});
// Sort results by name of the callee.
llvm::sort(Results, [](const CallHierarchyOutgoingCall &A,
const CallHierarchyOutgoingCall &B) {
return A.to.name < B.to.name;
});
return Results;
}

llvm::DenseSet<const Decl *> getNonLocalDeclRefs(ParsedAST &AST,
const FunctionDecl *FD) {
if (!FD->hasBody())
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clangd/XRefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ prepareCallHierarchy(ParsedAST &AST, Position Pos, PathRef TUPath);
std::vector<CallHierarchyIncomingCall>
incomingCalls(const CallHierarchyItem &Item, const SymbolIndex *Index);

std::vector<CallHierarchyOutgoingCall>
outgoingCalls(const CallHierarchyItem &Item, const SymbolIndex *Index);

/// Returns all decls that are referenced in the \p FD except local symbols.
llvm::DenseSet<const Decl *> getNonLocalDeclRefs(ParsedAST &AST,
const FunctionDecl *FD);
Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clangd/index/Background.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ BackgroundIndex::BackgroundIndex(
: SwapIndex(std::make_unique<MemIndex>()), TFS(TFS), CDB(CDB),
IndexingPriority(Opts.IndexingPriority),
ContextProvider(std::move(Opts.ContextProvider)),
IndexedSymbols(IndexContents::All),
IndexedSymbols(IndexContents::All, Opts.SupportContainedRefs),
Rebuilder(this, &IndexedSymbols, Opts.ThreadPoolSize),
IndexStorageFactory(std::move(IndexStorageFactory)),
Queue(std::move(Opts.OnProgress)),
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/clangd/index/Background.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ class BackgroundIndex : public SwapIndex {
// file. Called with the empty string for other tasks.
// (When called, the context from BackgroundIndex construction is active).
std::function<Context(PathRef)> ContextProvider = nullptr;
// Whether the index needs to support the containedRefs() operation.
// May use extra memory.
bool SupportContainedRefs = true;
};

/// Creates a new background index and starts its threads.
Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clangd/index/BackgroundRebuild.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//===-- BackgroundRebuild.cpp - when to rebuild thei background index -----===//
//===-- BackgroundRebuild.cpp - when to rebuild the background index ------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
Expand Down
Loading