[libc] Make BigInt trivially constructible (#206277)
This makes BigInt trivially constructible and additionally fixes the
failures caused by the upcoming change in constexpr functions.
[lldb][CMake] Extend liblldb interposition fix to lldb-dap and lldb-mcp (#207251)
liblldb statically absorbs the lldbHost and lldbUtility archives (and
every plugin). A tool that links the shared liblldb while also linking
those same archives statically ends up with two copies of that object
code. On ELF, if the tool re-exports the archive symbols in its own
.dynsym, the dynamic linker can bind liblldb's internal references to
the tool's copy instead of liblldb's own, breaking shared-state
assumptions such as the HostInfo singletons.
106644f6c835 fixed this for the lldb driver with --exclude-libs,ALL, but
lldb-dap and lldb-mcp have the same setup and were left exposed. Factor
the logic into a shared lldb_prevent_liblldb_symbol_interposition helper
and call it from all three tools.
[clang] Defer consteval DMI checks for aggregate init
Clang currently checks immediate invocations in rebuilt default member initializers in isolation. For aggregate initialization, that can reject a valid initializer when the default member initializer reads an earlier field through the implicit this object. At that point Sema has not installed the aggregate object for constant evaluation yet, so evaluating the consteval call alone fails with a missing-this diagnostic even though evaluating the enclosing aggregate initializer would succeed.
Track immediate invocations from rebuilt default member initializers that fail only because this is unavailable, and defer diagnosing them until the enclosing full expression is complete. The enclosing initializer is then constant-evaluated with the aggregate object available; if that succeeds, the delayed invocation is accepted, and if it still fails, the normal consteval diagnostic is emitted. Also put parenthesized aggregate initialization on the same default-initializer rebuild path as braced aggregate initialization.
Update cxx2b-consteval-propagate.cpp to accept aggregate initialization from constant earlier fields, keep a runtime-dependent negative case, and cover GH207064's constructor-wrapper reproducer.
[HLSL][NFC] Update test check to be more specific (#207232)
If the repo path contains "main", the test was matching it against the
ModuleID in the output because it contains a path to the test file, and
the follow-up checks were failing.
Based on feedback in
https://github.com/llvm/llvm-project/pull/206596#discussion_r3510725223.
[clang] fix crash-on-invalid with deduction guides
Fix crash when a template template parameter specialization is used as a deduced type.
This is a regression since Clang 22, and this will be backported, so no release
notes.
Fixes #203261
Put TextEncoding class in clang namespace to prevent naming conflicts (#207247)
Put TextEncoding class in the clang namespace to prevent naming conflicts
[flang][OpenMP] Semantic checks for metadirective loop nests
A loop-associated metadirective variant (`do`, `simd`, ...) is only
resolved during lowering, so it is never checked as a loop construct
during semantic analysis. A malformed or non-canonical associated nest
therefore reaches lowering, which assumes a canonical nest.
This patch validates the nest that follows such a variant (the next
executable construct) during semantics, reusing the diagnostics of a real
loop-associated construct. Each applicable variant is checked against it:
* Canonical loop: the affected loop must be a canonical DO loop, so a
`DO WHILE`, a pre-6.0 `DO CONCURRENT`, or a `DO` without loop control
is rejected.
* Nest depth: `collapse(n)` and `ordered(n)` must not exceed the depth
of the associated loop nest.
* Rectangularity: loops that must be rectangular (e.g. under `tile`) may
not have bounds that depend on an outer loop's variable.
[13 lines not shown]
[InstCombine] Sink instructions across assumes (#205314)
Not sinking across assumes causes InstCombine to not reach a fixpoint
when assumes can be dropped due to the load (usually nonnull assumes).
Sinking the instructions causes the assume to not be dropped anymore,
but I don't think that's a big problem.
[clang] accept member specializations declared in class scope
Explicit specializations are not restricted to namespace scope since CWG727 was
accepted as a DR.
Also fixes a crash upon error recovery in this case which was a recent
unreleased regression.
Fixes #206866
[mlir-c] Fix memory leak in ConversionTarget dynamic legality test
mlirFreezeRewritePattern moves contents out of the RewritePatternSet
but does not free the container (set is passed by value in the C API).
Add mlirRewritePatternSetDestroy after freezing to fix LeakSanitizer
failures on Linux.
Update transformations sensitive to signaling NaNs
Previously exception handling behavior was uses as an indicator of sNaN
support. With introducing a special function attribute `signaling_nans`
the checks for sNaN support must be changed to use the function
attribute rather than the exception behavior.
[flang][cuda] Guard descriptor I/O ticket when building thin I/O (#206865)
The work queue system is also used in the assignment and could lead to
unresolved function when building non relocatable code for the gpu using
the CUDA thin I/O. Just add a guard to keep descriptor I/O out of the
CUDA thin I/O build.
[Dexter] Update lldb-based dexter-tests to use script-mode (#204367)
This patch replaces uses of heuristic-mode Dexter in the dexter-tests
suite with uses of the script-mode, for tests that use DAP (via
lldb-dap). The updates are largely straightforward but occasionally
non-trivial, and in some cases some slight modifications have been made
to keep the "spirit" of the test intact.
[lldb] Synthesize data symbols for WebAssembly from DWARF (#207235)
The Wasm "name" section names functions but not data, so data symbols
such as C++ vtables have no entry in the symbol table. The Itanium C++
runtime resolves a dynamic type by looking up the symbol at an object's
vtable pointer and reading its "vtable for X" name. With no such symbol,
dynamic type resolution fails and falls back to the static type.
The vtable's address and mangled name are available in the DWARF as a
DW_TAG_variable with a DW_OP_addr location and a DW_AT_linkage_name.
Extend SymbolFileWasm::AddSymbols to synthesize a data symbol for every
global variable of that shape, so its address resolves back to the
mangled name such as "vtable for X". The size is computed by Symtab to
from the gap to the next symbol.
Assisted-by: Claude
[VPlan] Also expand pointer-typed SCEVAddExpr in VPSCEVExpander. (#206366)
Generalize the SCEVAddExpr handling in VPSCEVExpander::tryToExpand to
also expand pointer-typed adds. The pointer base and the offset are
expanded separately, matching IR SCEVExpander.
PR: https://github.com/llvm/llvm-project/pull/206366
[SBVec] Implement topDown/botUp vectorizers in unison
This patch introduces the `top-down-vec` pass to the Sandbox Vectorizer,
adding the ability to traverse use-def chains top-down to discover and
collect vectorization opportunities. Furthermore, this patch unifies
the two vectorizers into a single implementation to minimize code
duplication.
Co-authored-by: Cursor <cursoragent at cursor.com>
[libc++][NFC] Move the lower_bound/upper_bound benchmark to the sorting directory (#207215)
These algorithms are not under [nonmodifying], they are under [sorting]
in the Standard.