Commit Graph

562720 Commits

Author SHA1 Message Date
lntue
c4a0d71386 [libc] Fix ifdef in compiler.h. (#172324) 2025-12-15 16:11:30 +00:00
Krzysztof Drewniak
e7dd7b81ac [AMDGPU] tensor_{load_to/store_from}_lds => ..._d2 simplification (#171540)
This commit adds the rewrite

```
llvm.amdgcn.tensor.{load.to/store.from}.lds(
  <4 x i32> %d0, <8 x i32> %d1, <4 x i32> zeroinitializer,
  <4 x i32> zeroinitializer, i32 [cachepolicy])
=>
llvm.amdgcn.tensor.{load.to/store.from}.lds.d2(
  <4 x i32> %$d0, <8 x i32> %d1, i32 [cachepolicy])
```

This is justifed because, when the short encoding that uses the NULL
SGPR for registers 2 and 3 is used, the hardware acts as if those
registers were 0, including in the gather mode.

It is always safe not to run this transformation.

(Note: tests were LLM'd and then tweaked.)
2025-12-15 08:11:03 -08:00
Simon Pilgrim
b368357438 [X86] combineStore - attempt to store i256/i512 types as v4i64/v8i64 vectors (#172288)
If the larger than legal scalar integer is freely foldable to a vector
type, or is likely to be custom lowered to an operation using vectors,
attempt to convert to a vector store.

This doesn't appear to be worth it for i128 types which can more easily
convert between types with extra insert_subvector steps etc.
2025-12-15 16:08:40 +00:00
Dominik Kaszewski
ddd7e4bb2d Fix typo in readability-identifier-naming docs (#172319)
Found in #171686, can be merged first.
2025-12-15 19:04:42 +03:00
Mehdi Amini
efd9dc83f2 Revert "[APFloat] Add exp function for APFloat::IEEESsingle using expf implementation from LLVM libc. (#143959)" (#172325)
This reverts commit 4190d57682.

See https://lab.llvm.org/buildbot/#/builders/181/builds/33524

```
                 from /home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/lib/Support/APFloat.cpp:32:
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/math/asin_utils.h:548:1:   in ‘constexpr’ expansion of ‘__llvm_libc::fputil::DyadicFloat<128>(__llvm_libc::Sign::POS, -127, __llvm_libc::BigInt<128, false, long unsigned int>(__llvm_libc::operator""_u128(((const char*)"0x80000000\'00000000\'00000000\'00000000"))))’
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/FPUtil/dyadic_float.h:109:5:   in ‘constexpr’ expansion of ‘((__llvm_libc::fputil::DyadicFloat<128>*)this)->__llvm_libc::fputil::DyadicFloat<128>::normalize()’
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/FPUtil/dyadic_float.h:118:16:   in ‘constexpr’ expansion of ‘((__llvm_libc::fputil::DyadicFloat<128>*)this)->__llvm_libc::fputil::DyadicFloat<128>::mantissa.__llvm_libc::BigInt<128, false, long unsigned int>::operator<<=(((size_t)shift_length))’
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/big_int.h:829:52:   in ‘constexpr’ expansion of ‘__llvm_libc::multiword::shift<__llvm_libc::multiword::LEFT, false, long unsigned int, 2>(((__llvm_libc::BigInt<128, false, long unsigned int>*)this)->__llvm_libc::BigInt<128, false, long unsigned int>::val, s)’
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/big_int.h:264:35: error: ‘constexpr __llvm_libc::cpp::enable_if_t<((((sizeof (To) == sizeof (From)) && __llvm_libc::cpp::is_trivially_constructible<To>::value) && __llvm_libc::cpp::is_trivially_copyable<T>::value) && __llvm_libc::cpp::is_trivially_copyable<From>::value), To> __llvm_libc::cpp::bit_cast(const From&) [with To = __int128 unsigned; From = __llvm_libc::cpp::array<long unsigned int, 2>; __llvm_libc::cpp::enable_if_t<((((sizeof (To) == sizeof (From)) && __llvm_libc::cpp::is_trivially_constructible<To>::value) && __llvm_libc::cpp::is_trivially_copyable<T>::value) && __llvm_libc::cpp::is_trivially_copyable<From>::value), To> = __int128 unsigned]’ called in a constant expression
  264 |     auto tmp = cpp::bit_cast<type>(array);
      |                ~~~~~~~~~~~~~~~~~~~^~~~~~~
                 from /home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/lib/Support/APFloat.cpp:32:
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/CPP/bit.h:48:1: note: ‘constexpr __llvm_libc::cpp::enable_if_t<((((sizeof (To) == sizeof (From)) && __llvm_libc::cpp::is_trivially_constructible<To>::value) && __llvm_libc::cpp::is_trivially_copyable<T>::value) && __llvm_libc::cpp::is_trivially_copyable<From>::value), To> __llvm_libc::cpp::bit_cast(const From&) [with To = __int128 unsigned; From = __llvm_libc::cpp::array<long unsigned int, 2>; __llvm_libc::cpp::enable_if_t<((((sizeof (To) == sizeof (From)) && __llvm_libc::cpp::is_trivially_constructible<To>::value) && __llvm_libc::cpp::is_trivially_copyable<T>::value) && __llvm_libc::cpp::is_trivially_copyable<From>::value), To> = __int128 unsigned]’ is not usable as a ‘constexpr’ function because:
   48 | bit_cast(const From &from) {
      | ^~~~~~~~
/home/buildbot/buildbot-root/cross-project-tests-sie-ubuntu/llvm-project/llvm/../libc/src/__support/CPP/bit.h:56:28: error: call to non-‘constexpr’ function ‘void __llvm_libc::cpp::inline_copy(const char*, char*) [with unsigned int N = 16]’
   56 |   inline_copy<sizeof(From)>(src, dst);
```
2025-12-15 16:57:37 +01:00
Farzon Lotfi
f0c9acc330 [SPIRV][HLSL] Add FixedVector GEP legalization (#171682)
fixes #170241

PR #169090 updated vector swizzle elements individually for HLSL This is
because rawbuffer writes via rawBufferStore can cause datarace in
concurrent writing the way vectors are written all at once. This means
we needed individual writes per element. So that means we need to be
able to GEP into an element of a vector.

The SPIRV backend did not support this pattern. SPIRV assumes Composite
types (ie Vectors, Structs, and Arrays) only for Ptr legalization in
it's store transformations via transformStore.

Fixing things at the point of ptr legalziation for the store would be
too late because we would have lost critical ptr type information still
available in LLVM IR. Instead what we needed to do is teach the
walkLogicalAccessChain used by buildLogicalAccessChainFromGEP to
converts a byte-offset GEP on an i8-pointer into a logical SPIR-V
composite access chain.

In short:

The fundamental issue is that walkLogicalAccessChain currently refuses
to handle vector-based logical GEPs, but Clang’s new HLSL path produces
exactly that pattern:
- you have a logical i8* GEP that represents indexing into the elements
of a <4 x i32>.

We need to teach walkLogicalAccessChain to treat a FixedVectorType
similarly to an array of its element type. So in walkLogicalAccessChain
replace the “give up on vector” part with logic that:
- Interprets the byte Offset as indexing into the vector elements.
- Uses the vector’s element type and number of elements.
2025-12-15 10:57:29 -05:00
Mehdi Amini
84d1de29d9 Fix build when the build directory isn't just immediately nested in the source dir
The include path here tried to recover the root source directory by assuming
a build directory immediately nested there.
2025-12-15 07:39:01 -08:00
lntue
4190d57682 [APFloat] Add exp function for APFloat::IEEESsingle using expf implementation from LLVM libc. (#143959)
Discourse RFC:
https://discourse.llvm.org/t/rfc-make-clang-builtin-math-functions-constexpr-with-llvm-libc-to-support-c-23-constexpr-math-functions/86450

- The implementation in LLVM libc is header-only.
- expf implementation in LLVM libc is correctly rounded for all rounding
modes.
- LLVM libc implementation will round to the floating point
environment's rounding mode.
- No cmake build dependency between LLVM and LLVM libc, only requires
LLVM libc source presents in llvm-project/libc folder.
2025-12-15 10:21:45 -05:00
Farzon Lotfi
491e001627 [HLSL][Matrix] Add Matrix Bool and represent them as i32 elements (#171051)
fixes #171049
fixes #171050

- Allow Bools for matrix type when in HLSL mode
- use ConvertTypeForMem to figure out the bool size
- Add Bool matrix types to hlsl_basic_types.h

---------

Co-authored-by: Helena Kotas <hekotas@microsoft.com>
2025-12-15 10:21:32 -05:00
Benjamin Maxwell
1847a4efae [SDAG] Fix incorrect usage of VECREDUCE_ADD (#171459)
The mask needs to be extended to `i32` before reducing or the reduction
can incorrectly optimized to a VECREDUCE_XOR.
2025-12-15 15:01:31 +00:00
Brandon Wu
b5968780ba [llvm][RISCV] Add frm range check for xsfvfnrclipxfqf (#172135) 2025-12-15 23:00:54 +08:00
Brandon Wu
ef927ae263 [llvm][RISCV] Support mulh for P extension codegen (#171581)
For mulh pattern with operands that are both signed or unsigned,
combination is performed automatically. However for mulh with operands
which are signed and unsigned respectively we need to combine them
manually same approach as what we've done for PASUB*.

Note: This is first patch for mulh which only handle basic high part
multiplication, there will be followup patches to handle rest of mulh
related instructions.
2025-12-15 22:55:26 +08:00
Nikita Popov
8975eb3274 [FuzzerMutate] Allow implicit truncation
If the fixed value 42 does not fit the integer type, truncate it.
2025-12-15 15:44:04 +01:00
Nikita Popov
1154ed8f3c [SandboxIRTest] Use larger integer type
Use i32 instead of i1 so that the value fits. Possibly there was
some confusion with the condition argument of the select here.
2025-12-15 15:44:04 +01:00
Nikita Popov
015ab4e2e4 [Reassociate] Allow implicit truncation when converting adds to mul
It's okay if the number of adds overflows. Explicitly allow implicit
truncation.
2025-12-15 15:44:03 +01:00
Nikita Popov
42a47bf18a [WPD] Avoid implicit truncation when creating full set
Use the bit mask for the type instead of `~0`, so that we don't
rely on implicit truncation of the top bits.
2025-12-15 15:44:03 +01:00
Nikita Popov
818c9138f9 [SimplifyCFG] Use getSigned() for signed value
Base is a sized quantity derived via getSExtValue(), so we should
use getSigned().
2025-12-15 15:44:03 +01:00
Nikita Popov
3f82a8a784 [ExpandFp] Use getSignMask() (NFC)
This was using getSigned() with an unsigned (not sign extended)
argument. Using plain get() would be correct here. We can go
one step further and use getSignMask() to avoid the issue entirely.
2025-12-15 15:44:03 +01:00
Bala_Bhuvan_Varma
0b2fe07e6b [VectorCombine] Prevent redundant cost computation for repeated operand pairs in foldShuffleOfIntrinsics (#171965)
This pr resolves [#170867](https://github.com/llvm/llvm-project/issues/170867)

Existing code recomputes the cost for creating a shuffle instruction even for the
repeating Intrinsic operand pairs. This will result in higher newCost.
Hence the runtime will decide not to fold.

The change proposed in this pr will address this issue. When calculating
the newCost we are skipping the cost calculation of an operand pair if
it was already considered. And when creating the transformed code, we
are reusing the already created shuffle instruction for repeated operand
pair.
2025-12-15 14:42:41 +00:00
Alex Voicu
0fff58a50f [NFC][SPIRV] Re-work extension parsing (#171826)
This changes the extension parsing mechanism underpinning `--spirv-ext`
to be more explicit about what it is doing and not rely on a sort. More
specifically, we partition extensions into enabled (prefixed with `+`)
and others, and then individually handle the resulting ranges.
2025-12-15 14:40:14 +00:00
Leandro Lupori
de776fb60a [OpenMP] Fix libarcher tests on Ubuntu 22.04 (#170671)
When llvm-symbolizer is not found on PATH TSan uses system's addr2line
instead. On Ubuntu 22.04 addr2line can't handle DWARF v5, which results
in failures in some libarcher tests.

This PR adds the directory of the just built LLVM binaries to PATH, to
make llvm-symbolizer available to TSan.

The changes were tested on an AArch64 machine, on which
task-taskgroup-unrelated.c was flaky. Moving the test code to a separate
function, executed 10 times, solved the issue.

Fixes #170138
2025-12-15 11:25:54 -03:00
Shilei Tian
df14096e00 [NFC][AMDGPU] Refactor the multiclass for WMMA_F8F6F4 instructions (#172245) 2025-12-15 09:16:26 -05:00
Erich Keane
2e2e48f171 [OpenMP][CIR] Add basic infrastructure for CIR lowering (#171902)
This patch adds the basic infrastructure for lowering an OpenMP
directive, which should enable someone to take over the OpenMP lowering
in the future. It adds the lowering entry points to CIR in the same way
as OpenACC.

Note that this does nothing with any of the directives, which will
happen in a followup patch. No infrastructure for clauses is added
either, but that will come in a followup patch as well.
2025-12-15 06:07:37 -08:00
David Spickett
f5a198b8aa [lldb][test] Xfail 3 backtrace related tests on Windows on Arm (#172300)
Since we updated our buildbot setup, these have been failing. Ignore
them until we have time to find the real problem, which is something to
do with failing to backtrace, or missing debug info when we do.
2025-12-15 14:04:02 +00:00
Simon Pilgrim
a68fde5780 [DAG] foldAddToAvg - optimize nested m_Reassociatable matchers (#171681)
The use of nested m_Reassociatable matchers by #169644 can result in
high compile times as the inner m_Reassociatable call is being repeated
a lot while the outer call is trying to match. Place the inner
m_ReassociatableAnd at the beginning of the pattern so it is not
repeatedly matched in recursion.
2025-12-15 13:41:02 +00:00
Leandro Lupori
a93214c582 Build and ship OpenMP with LLVM releases (#160581)
Fixes #135021

Suggested-by: Kawashima Takahiro <t-kawashima@fujitsu.com>
2025-12-15 10:40:01 -03:00
Paul Walker
7fefee3a82 [LLVM][CodeGen][AArch64] Add NEON lowering for vector.(de)interleave intrinsics. (#169700) 2025-12-15 13:34:42 +00:00
Midhunesh
ee5b9cd59d [llvm-symbolizer] Recognize and symbolize archive members (#150401)
This PR adds support for selecting specific archive members in
llvm-symbolizer using the `archive.a(member.o)` syntax, with
architecture-aware member selection.

  **Key features:**
1. **Archive member selection syntax**: Specify archive members using
`archive.a(member.o)` format
2. **Architecture selection via `--default-arch` flag**: Select the
appropriate member when multiple members have the same name but
different architectures
3. **Architecture selection via `:arch` suffix**: Alternative syntax
`archive.a(member.o):arch` for specifying architecture

This functionality is primarily designed for AIX big archives, which can
contain multiple members with the same name but different architectures
(32-bit and 64-bit). However, the implementation works with all archive
formats (GNU, BSD, Darwin, big archive) and handles same-named members
created with llvm-ar q.

---------

Co-authored-by: Midhunesh <midhuensh.p@ibm.com>
2025-12-15 18:55:36 +05:30
Krzysztof Parzyszek
6e01ea4bab [flang][OpenMP] Generalize checks of loop construct structure (#170735)
For an OpenMP loop construct, count how many loops will effectively be
contained in its associated block. For constructs that are loop-nest
associated this number should be 1. Report cases where this number is
different.

Take into account that the block associated with a loop construct can
contain compiler directives.
2025-12-15 07:20:05 -06:00
Orlando Cazalet-Hyams
792704038a [DebugInfo][DWARF] Use DW_AT_call_target_clobbered for exprs with volatile regs (#172167)
Without this patch DW_AT_call_target is used for all indirect call address
location expressions. The DWARF spec says:

    For indirect calls or jumps where the address is not computable without use
    of registers or memory locations that might be clobbered by the call the
    DW_AT_call_target_clobbered attribute is used instead of the
    DW_AT_call_target attribute.

This patch implements that behaviour.
2025-12-15 12:54:18 +00:00
Nathan Corbyn
2f9bf3f292 [GlobalISel](NFC) Refactor construction of LLTs in LegalizerHelper (#170664)
I spotted a number of places where we're duplicating logic provided by
the `LLT` class inline in `LegalizerHelper`. This PR tidies up these
spots.
2025-12-15 12:26:27 +00:00
int-zjt
72f3995363 [CodeExtractor] Optimize PHI incoming value removal using removeIncomingValueIf() (NFC) (#171956) 2025-12-15 20:00:54 +08:00
int-zjt
c9c46a0820 [CloneFunction] Optimize PHI incoming value removal using reverse iteration (NFC) (#171955) 2025-12-15 20:00:25 +08:00
David Spickett
9f176e30e6 [libcxx][docs] Fix boostrapping build configure command (#172015)
If I take the command from the page and add my triple like so:

$ cmake -G Ninja -S llvm -B build \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLLVM_ENABLE_PROJECTS="clang" \ # Configure
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt" \
        -DLLVM_RUNTIME_TARGETS="aarch64-unknown-linux-gnu"
CMake Warning:
  Ignoring extra path from command line:

   " "
<...>
-- Build files have been written to:
/home/david.spickett/llvm-project/build -bash:
-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind;compiler-rt: command
not found

As the comment is after the backslash, it's considered part of the next
line. This comments out the ENABLE_RUNTIMES line and makes the
RUNTIME_TARGETS line look like another command.

To fix this, put the comment before the configure command.

I also moved the other inline comments (which are fine) closer to the
text since they don't have to line up with the configure one anymore.
2025-12-15 11:55:03 +00:00
Nashe Mncube
b225907804 [AArch64]Enable aggressive interleaving for A320 (#169825)
This patch makes use of aggressive interleaving options for the A320
subtarget. This is done by adding a new local parameter to the
AArch64Subtarget class. With this enabled we see an aggregate uplift of
0.7% on internal benchmark suites with up to 51% uplift on individual
benchmark workloads.
2025-12-15 11:45:06 +00:00
David Spickett
10767aad89 [llvm][examples] Disable some JIT examples when threading is disabled (#172282)
This fixes an error on our Armv8 bot:
```
<...>/RemoteJITUtils.cpp:132:24: error: use of undeclared identifier 'DynamicThreadPoolTaskDispatcher'
  132 |       std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

These examples require LLVM_ENABLE_THREADS to be ON, and cannot run
otherwise. As a comment says elsewhere:
```
  // Out of process mode using SimpleRemoteEPC depends on threads.
```
2025-12-15 11:40:27 +00:00
Jay Foad
515c3bdda0 [AMDGPU] Stop handling soft waitcnts in pseudoToMCOpcode. NFC. (#172278)
Since #87539 all soft waitcnts should have been promoted by
SIInsertWaitcnts.
2025-12-15 11:33:55 +00:00
Nikolas Klauser
57aab63417 [libc++] Fix std::for_each(associative-container) not using std:invoke and projections (#171984)
#164405 added specializations of `for_each` that didn't do the ranges
call shenanigans, but instead just did what the classic algorithms have
to do. This updates the calls to work for the ranges overloads as well.
2025-12-15 12:05:59 +01:00
Srinivasa Ravi
7d0865122e [clang][NVPTX] Add support for mixed-precision FP arithmetic (#168359)
This change adds support for mixed precision floating point 
arithmetic for `f16` and `bf16` where the following patterns:
```
%fh = fpext half %h to float
%resfh = fp-operation(%fh, ...)
...
%fb = fpext bfloat %b to float
%resfb = fp-operation(%fb, ...)

where the fp-operation can be any of:
- fadd
- fsub
- llvm.fma.f32
- llvm.nvvm.add(/fma).*
```
are lowered to the corresponding mixed precision instructions which 
combine the conversion and operation into one instruction from 
`sm_100` onwards.

This also adds the following intrinsics to complete support for 
all variants of the floating point `add/fma` operations in order 
to support the corresponding mixed-precision instructions:
- `llvm.nvvm.add.(rn/rz/rm/rp){.ftz}.sat.f`
- `llvm.nvvm.fma.(rn/rz/rm/rp){.ftz}.sat.f`

We lower `fneg` followed by one of the above addition
intrinsics to the corresponding `sub` instruction.

Tests are added in `fp-arith-sat.ll` , `fp-fold-sub.ll`, and
`bultins-nvptx.c`
for the newly added intrinsics and builtins, and in
`mixed-precision-fp.ll`
for the mixed precision instructions.

PTX spec reference for mixed precision instructions:
https://docs.nvidia.com/cuda/parallel-thread-execution/#mixed-precision-floating-point-instructions
2025-12-15 16:28:23 +05:30
Ramkumar Ramachandra
0636225b93 [VPlan] Directly unroll VectorPointerRecipe (#168886)
In an effort to get rid of VPUnrollPartAccessor and directly unroll
recipes, start by directly unrolling VectorPointerRecipe, allowing for
VPlan-based simplifications and simplification of the corresponding
execute.
2025-12-15 10:54:06 +00:00
Ivan Butygin
b3ec8be22b [mlir][gpu] Expose some utility functions from gpu-to-binary infra (#172205)
For people who do not want to use a single monolithic pass.
2025-12-15 13:39:19 +03:00
Andrei Topala
4e95718a2a [libc++] Remove unused __parent_pointer alias from __tree and map (#172185)
The `__parent_pointer` type alias was marked to be removed in
d163ab3323.
At that time, <map> still had uses of `__parent_pointer` as a local
variable type in operator[] and at()

Those uses were removed in 4a2dd31f16,
which refactored `__find_equal` to return a pair instead of using an out
parameter

However, the typedef in <map> and the alias in __tree were left behind

This patch removes the unused typedef from <map> and the
`__parent_pointer` alias from __tree

Signed-off-by: Krechals <topala.andrei@gmail.com>
2025-12-15 11:32:03 +01:00
Ahmed Nour
ed79fd714f [Clang][x86]: allow PCLMULQDQ intrinsics to be used in constexpr (#169214)
Resolves #168741
2025-12-15 10:27:17 +00:00
Petar Avramovic
f024026a21 AMDGPU/GlobalISel: Regbanklegalize for G_CONCAT_VECTORS (#171471)
RegBankLegalize using trivial mapping helper, assigns same reg bank
to all operands, vgpr or sgpr.
Uncovers multiple codegen and regbank combiner regressions related to
looking through sgpr to vgpr copies.
Skip regbankselect-concat-vector.mir since agprs are not yet supported.
2025-12-15 10:37:40 +01:00
Ingo Müller
f3e508ceec [mlir:bazel] Fix missing dependency introduced in #171727. (#172267)
That PR added an include to `LLVMOps.td` without adding a target
providing that file. Curiously, this does not break the official builds
but it *does* break my bazel build.

Signed-off-by: Ingo Müller <ingomueller@google.com>
2025-12-15 09:33:47 +00:00
Michael Buch
90783f5c4a [lldb][AppleObjCDeclVendor] Fix format specifiers when printing log (#172263)
This was causing a crash when enabling the expression log:
```
4   LLDB                          	       0x1376d68d0 llvm::formatv_object_base::parseFormatString(llvm::StringRef, unsigned long, bool) + 532
5   LLDB                          	       0x13776d838 llvm::formatv_object_base::format(llvm::raw_ostream&) const + 84
6   LLDB                          	       0x13776d7d4 llvm::raw_ostream::operator<<(llvm::formatv_object_base const&) + 36
7   LLDB                          	       0x1375f4980 lldb_private::Log::Format(llvm::StringRef, llvm::StringRef, llvm::formatv_object_base const&) + 164
8   LLDB                          	       0x12f7b39f0 lldb_private::AppleObjCExternalASTSource::CompleteType(clang::TagDecl*) + 416
9   LLDB                          	       0x12fa038dc lldb_private::ClangASTSource::FindExternalLexicalDecls(clang::DeclContext const*, llvm::function_ref<bool (clang::Decl::Kind)>, llvm::SmallVectorImpl<clang::Decl*>&) + 1132
10  LLDB                          	       0x135d94838 clang::ExternalASTSource::FindExternalLexicalDecls(clang::DeclContext const*, llvm::SmallVectorImpl<clang::Decl*>&) + 92
11  LLDB                          	       0x135d94690 clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const + 204
12  LLDB                          	       0x135d95ca0 clang::DeclContext::buildLookup() + 308
13  LLDB                          	       0x135d964b8 clang::DeclContext::lookupImpl(clang::DeclarationName, clang::DeclContext const*) const + 824
14  LLDB                          	       0x135d96168 clang::DeclContext::lookup(clang::DeclarationName) const + 124
15  LLDB                          	       0x134f093d4 clang::Sema::CheckImplicitSpecialMemberDeclaration(clang::Scope*, clang::FunctionDecl*) + 128
16  LLDB                          	       0x134efb488 clang::Sema::DeclareImplicitDestructor(clang::CXXRecordDecl*) + 932
17  LLDB                          	       0x1352ddf24 clang::Sema::LookupSpecialMember(clang::CXXRecordDecl*, clang::CXXSpecialMemberKind, bool, bool, bool, bool, bool)::$_0::operator()() const + 36
```
2025-12-15 09:28:19 +00:00
Fabrice de Gans
96881c1226 llvm: Export IndexedCodeGenDataLazyLoading (#169563)
This is needed so the llvm-cgdata tool properly builds with
`LLVM_BUILD_LLVM_DYLIB` so LLVM can be built as a DLL on Windows.

This effort is tracked in #109483.
2025-12-15 04:25:30 -05:00
Duncan Ogilvie
5785b4a4fb Add .gitignore file in .cache/clangd/index (#170003)
This solves a common issue where users have to manually add the
`.cache/clangd/index/` folder to their `.gitignore`. I got this idea
from [ruff](https://github.com/astral-sh/ruff), which creates
`.ruff_cache/.gitignore` and it would greatly improve the user
experience for everyone without requiring per-computer configurations
and without any significant cost.
2025-12-15 10:18:46 +01:00
Younan Zhang
a5bfe8e5c3 [Clang] Recompute the value category when rebuilding SubstNonTypeTemplateParmExpr (#172251)
In concept checking, we need to transform SubstNTTPExpr when evaluating
constraints.

The value category is initially computed during parameter mapping,
possibly with a dependent expression. However during instantiation, it
wasn't recomputed, and the stale category is propagated into parent
expressions. So we may end up with an 'out-of-thin-air' reference type,
which breaks the evaluation.

We now call BuildSubstNonTypeTemplateParmExpr in TreeTransform, in which
the value category is recomputed.

The issue was brought by both 078e99e and the concept normalization
patch, which are not released yet, so no release note.

Fixes https://github.com/llvm/llvm-project/issues/170856
2025-12-15 17:16:58 +08:00
Benjamin Maxwell
17f29c22ab [AArch64] Support lowering smaller than legal LOOP_DEP_MASKs to whilewr/rw (#171982)
This adds support for lowering smaller-than-legal masks such as:

```
<vscale x 8 x i1> @llvm.loop.dependence.war.mask.nxv8i1(ptr %a, ptr %b, i64 1)
```

To a whilewr + unpack. It also slightly simplifies the lowering.
2025-12-15 09:12:58 +00:00