LLVM/project 3bd0486llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp, llvm/test/CodeGen/X86 dagcombine-freeze-select-demanded-elts.ll

VSELECT support
DeltaFile
+55-0llvm/test/CodeGen/X86/dagcombine-freeze-select-demanded-elts.ll
+3-3llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+58-32 files

LLVM/project 79b7feflibcxx/include/__type_traits integral_constant.h is_constant_evaluated.h, libcxx/test/libcxx/type_traits nodiscard.verify.cpp

[libc++][type_traits] Applied `[[nodiscard]]` (#200760)

`[[nodiscard]]` should be applied to functions where discarding the
return value is most likely a correctness issue.

- https://libcxx.llvm.org/CodingGuidelines.html
- https://wg21.link/type.traits
DeltaFile
+33-0libcxx/test/libcxx/type_traits/nodiscard.verify.cpp
+1-1libcxx/include/__type_traits/integral_constant.h
+1-1libcxx/include/__type_traits/is_constant_evaluated.h
+1-1libcxx/include/__type_traits/is_within_lifetime.h
+1-1libcxx/test/std/utilities/meta/meta.const.eval/is_within_lifetime.compile.pass.cpp
+37-45 files

LLVM/project 1460e27libc/include wchar.yaml, libc/src/wchar swprintf.cpp swprintf.h

[libc] Add a placeholder for swprintf function (#200895)

Add a declaration and stub implementation for the `swprintf` function.
Only enable it when `LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS` is
specified to clarify that the implementation is not ready yet.

We're singling out `swprintf` among the other wide-character formatting
functions because it's used in libc++ to implement `std::to_wstring` for
floating point values
(https://github.com/llvm/llvm-project/blob/2a2e45257b8277ae6dbd3bce1627a9b07d1a301d/libcxx/src/string.cpp#L366),
and is the last remaining piece of functionality preventing us from
turning on wide character support in libc++ built against llvm-libc.
Adding the stub function would allow us to test the compilation with
`_LIBCPP_HAS_WIDE_CHARACTERS` enabled, and start keeping track of what
tests from libc++ test suite are working / not working yet.
DeltaFile
+36-0libc/src/wchar/swprintf.cpp
+28-0libc/test/src/wchar/swprintf_test.cpp
+28-0libc/src/wchar/swprintf.h
+15-0libc/src/wchar/CMakeLists.txt
+14-0libc/test/src/wchar/CMakeLists.txt
+9-0libc/include/wchar.yaml
+130-02 files not shown
+134-08 files

LLVM/project 1c4000dclang/include/clang/AST DeclTemplate.h, clang/lib/AST DeclTemplate.cpp

[clang] fix getTemplateInstantiationArgs

This implements a new strategy for collecting the template arguments, by
relying on the qualifiers and template parameter lists to navigate the template
context of out-of-line definitions.

This greatly simplifies the signature of that function, by removing a bunch
of workarounds, and simpliffying a couple that weren't removed yet.

Since this now relies on qualifiers and template parameter lists,
this patch expends most of its effort making sure these are placed,
transformed and propagated to template instantiations.

Also makes the explicit specialization AST nodes stop abusing the template
parameter lists by storing it's own template parameter list, creating a
dedicated field for them, similar to partial specializations.
DeltaFile
+194-429clang/lib/Sema/SemaTemplateInstantiate.cpp
+257-164clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+151-147clang/lib/Sema/SemaTemplate.cpp
+96-95clang/include/clang/AST/DeclTemplate.h
+59-129clang/lib/Sema/SemaConcept.cpp
+60-92clang/lib/AST/DeclTemplate.cpp
+817-1,05652 files not shown
+1,456-1,71658 files

LLVM/project cd328c7clang/include/clang/AST ExprCXX.h, clang/include/clang/Sema Sema.h

[clang] fix transformation of SubstNonTypeTemplateParmExpr nodes from type alias templates and concepts (#200850)

This makes sure SubstNonTypeTemplateParmExpr produced from
non-specialization decls (Type alias templates and concepts) are
correctly transformed.

This makes the SubstNonTypeTemplateParmExpr store the parameter type
directly, and uses that instead of relying on the AssociatedDecl.

Fixes #191738
Fixes #196375
DeltaFile
+38-52clang/lib/Sema/SemaTemplate.cpp
+18-28clang/lib/Sema/TreeTransform.h
+13-13clang/include/clang/AST/ExprCXX.h
+14-10clang/lib/Sema/SemaTemplateInstantiate.cpp
+9-10clang/include/clang/Sema/Sema.h
+0-12clang/lib/AST/ExprCXX.cpp
+92-12525 files not shown
+157-14631 files

LLVM/project 17e5d41llvm/test/CodeGen/AMDGPU dagcombine-freeze-bitcast-demanded-elts.ll

Add more tests
DeltaFile
+226-1llvm/test/CodeGen/AMDGPU/dagcombine-freeze-bitcast-demanded-elts.ll
+226-11 files

LLVM/project f8a5f67llvm/lib/Target/RISCV RISCVInstrInfoZicfiss.td RISCVFrameLowering.cpp, llvm/test/CodeGen/RISCV shadowcallstack.ll

[RISCV] Use sspush/sspopchk mnemonics for shadow stack codegen (#200182)

After PR #178609, SSPUSH/SSPOPCHK/C_SSPUSH became encodable under the
Zimop/Zcmop predicates alone (old Zicfiss requirement was relaxed to
Zimop).
Before that, the hw-shadow-stack codegen path introduced in PR #152251
needed PseudoMOP_* wrappers that expand to the base
MOP_RR_7/MOP_R_28/C_MOP_1, because the real SSPUSH/SSPOPCHK/C_SSPUSH
were gated by Zicfiss while the codegen path only required Zimop.
As a side effect, the assembler printed `mop.rr.7 zero, zero,
ra`/`mop.r.28 zero, ra` for hw-shadow-stack functions instead of the
proper `sspush ra`/`sspopchk ra` mnemonics from the CFI RISC-V spec
(while the disassembler already printed proper sspush/sspopchk.

With predicates now aligned, the pseudos are just plain wrappers with
identical predicates to the real instructions, so they became redundant.
This patch removes them and emits SSPUSH/SSPOPCHK/C_SSPUSH directly.
DeltaFile
+24-24llvm/test/CodeGen/RISCV/shadowcallstack.ll
+0-15llvm/lib/Target/RISCV/RISCVInstrInfoZicfiss.td
+3-3llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+27-423 files

LLVM/project b8aa19bllvm/lib/Object DXContainer.cpp, llvm/unittests/Object DXContainerTest.cpp

[Object][DirectX] Fix UB when parsing a DXContainer from a null buffer (#200865)

Adds an additional check that `Src != nullptr` before doing other
operations on it, which caused a UB in one test with #200413.
DeltaFile
+6-0llvm/unittests/Object/DXContainerTest.cpp
+1-1llvm/lib/Object/DXContainer.cpp
+7-12 files

LLVM/project 0597087lldb CMakeLists.txt, lldb/packages/Python/lldbsuite/test dotest.py

[lldb] Skip libc++ category tests on Darwin when no in-tree libc++ is built (#199262)

`canRunLibcxxTests()` previously short-circuited with "libc++ always
present" for all Darwin targets, meaning the "libc++" test category was
never skipped on macOS — even when `LLDB_HAS_LIBCXX` is `OFF` and no
`--libcxx-include-dir` / `--libcxx-library-dir` are passed to dotest.
The tests would silently run against the system libc++ instead of an
in-tree build, producing results inconsistent with what the suite is
designed to validate.

This fixes `canRunLibcxxTests()` to apply the same `libcxx_include_dir`
/ `libcxx_library_dir` guard on `Darwin` that `Linux` already uses. When
those dirs are absent (i.e. no in-tree libc++ was built), the function
returns `False` and `checkLibcxxSupport()` appends `libc++` to
`skip_categories` — skipping those tests exactly as Linux does.

On the CMake side, the `SEND_ERROR` for `LLDB_HAS_LIBCXX=OFF` is
downgraded to a `WARNING` so downstreams that intentionally skip the
runtimes build can keep `LLDB_INCLUDE_TESTS=ON` for the tests they

    [5 lines not shown]
DeltaFile
+9-7lldb/test/CMakeLists.txt
+6-1lldb/packages/Python/lldbsuite/test/dotest.py
+1-0lldb/CMakeLists.txt
+16-83 files

LLVM/project 94337fblldb/packages/Python/lldbsuite/test lldbtest.py

[lldb/test] Fix variant double-expansion in LLDBTestCaseFactory (#200943)

LLDBTestCaseFactory generates the actual test methods that get run: for
every `test*` method on a TestBase subclass, it stamps out one copy per
debug-info format (dwarf, dsym, ...) and, if a variant like
swift_clang's clang/noclang is registered, one copy per variant value on
top. When two test methods in the same class have names that share a
prefix and the longer one is declared first in the file, the shorter
method's expansion ends up re-stamping every copy already produced for
the longer one.

The variant-expansion helper decides what to copy by name-prefix match:
when processing `test_expr`, it grabs `test_expr`, `test_expr_dwarf`,
`test_expr_dsym`, ... and produces a clang/noclang suffix for each one.
The factory was handing it the full running dict of already-synthesized
methods, so by the time `test_expr`'s turn came, the dict also held
`test_expr_stripped_dwarf` and `test_expr_stripped_dsym` from
`test_expr_stripped`. Those names start with `test_expr_` too, so they
pick up a second clang/noclang suffix and inherit `test_expr`'s

    [29 lines not shown]
DeltaFile
+19-6lldb/packages/Python/lldbsuite/test/lldbtest.py
+19-61 files

LLVM/project 6bbbdballvm/lib/Target/AMDGPU GCNHazardRecognizer.cpp

[AMDGPU] Simplicy the logic in checkWMMACoexecutionHazards, NFC (#200717)
DeltaFile
+57-63llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+57-631 files

LLVM/project daac50bpolly/include/polly/Support VirtualInstruction.h

[Polly] Remove unused DenseMapInfo::getTombstoneKey (#200963)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+0-7polly/include/polly/Support/VirtualInstruction.h
+0-71 files

LLVM/project 0f25642clang/include/clang/AST ExprCXX.h, clang/include/clang/Sema Sema.h

[clang] fix transformation of SubstNonTypeTemplateParmExpr nodes from typealiases and concepts

This makes sure SubstNonTypeTemplateParmExpr produced from non-specialization
decls (Type alias templates and concepts) are correctly transformed.

This makes the SubstNonTypeTemplateParmExpr store the parameter type directly,
and uses that instead of relying on the AssociatedDecl.

Fixes #191738
Fixes #196375
DeltaFile
+38-52clang/lib/Sema/SemaTemplate.cpp
+18-28clang/lib/Sema/TreeTransform.h
+13-13clang/include/clang/AST/ExprCXX.h
+14-10clang/lib/Sema/SemaTemplateInstantiate.cpp
+9-10clang/include/clang/Sema/Sema.h
+0-12clang/lib/AST/ExprCXX.cpp
+92-12525 files not shown
+157-14631 files

LLVM/project 1123d2bllvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV clmulh.ll rv64i-demanded-bits.ll

[RISCV] Improve shrinkDemandedConstant. (#196585)

Teach shrinkDemandedConstant to restore a constant that can be
materialized as:
  lui a0, hi20
  addi(w) a0, a0, lo12
  slli a1, a0, 32
  add a0, a0, a1

or:
  lui a0, hi20
  addi(w) a0, a0, lo12
  pack a0, a0, a0

This fixes a regression between clang 18 and 19 on this test case
https://godbolt.org/z/Ma746a8xP
DeltaFile
+603-608llvm/test/CodeGen/RISCV/clmulh.ll
+79-17llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+94-0llvm/test/CodeGen/RISCV/rv64i-demanded-bits.ll
+85-0llvm/test/CodeGen/RISCV/imm.ll
+25-23llvm/test/CodeGen/RISCV/sextw-removal.ll
+38-2llvm/test/CodeGen/RISCV/rv64zbkb.ll
+924-6501 files not shown
+944-6507 files

LLVM/project 1d760d4clang/include/clang/AST OpenMPClause.h, clang/lib/Sema SemaOpenMP.cpp

[OpenMP] Introduce the ompx_name clause for kernel naming

This adds support for the ompx_name clause that allows users to specify
custom kernel names for OpenMP target offloading regions. The clause
accepts a string literal and overrides the default compiler-generated
kernel names.

Example usage:
  #pragma omp target ompx_name("my_kernel")
  { ... }

Kernel names need to be unique or they are diagnosed at compile or link
time as errors.

Co-Authored-By: Claude (claude-sonnet-4.5) <noreply at anthropic.com>
DeltaFile
+78-0offload/test/offloading/ompx_name.c
+62-0clang/test/OpenMP/ompx_name_messages_errors.cpp
+53-0clang/test/OpenMP/ompx_name_codegen.cpp
+40-0offload/test/offloading/ompx_name_duplicate_link.c
+36-0clang/lib/Sema/SemaOpenMP.cpp
+33-0clang/include/clang/AST/OpenMPClause.h
+302-014 files not shown
+415-920 files

LLVM/project e58e308clang/test/CodeGen builtins-nvptx.c, llvm/test/Assembler auto_upgrade_nvvm_intrinsics.ll

[NVPTX][clang] Remove nvvm scoped atomic intrinsics; use atomicrmw/cmpxchg (#200735)

The
`llvm.nvvm.atomic.{add,exch,max,min,inc,dec,and,or,xor,cas}.gen.{i,f}.{cta,sys}`
intrinsics are redundant; we can use atomicrmw / cmpxchg with a syncscope.

Moreover, the nvvm atomics are problematic because they don't have
unsigned min/max opcodes. Clang uses these intrinsics and currently emits
signed min/max for what should be unsigned operations!

Fix by doing the following.

 - Remove the nvvm intrinsics.
 - Auto-upgrade the removed intrinsics to atomicrmw/cmpxchg.
 - Make clang Clang emits atomicrmw/cmpxchg directly.
DeltaFile
+745-0llvm/test/CodeGen/NVPTX/atomicrmw-sm90.ll
+745-0llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+745-0llvm/test/CodeGen/NVPTX/atomicrmw-sm60.ll
+0-189llvm/test/CodeGen/NVPTX/atomics-with-scope.ll
+92-90clang/test/CodeGen/builtins-nvptx.c
+148-0llvm/test/Assembler/auto_upgrade_nvvm_intrinsics.ll
+2,475-2797 files not shown
+2,639-56313 files

LLVM/project ddcf2f8llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp

clang-format concat
DeltaFile
+2-2llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+2-21 files

LLVM/project 9bda223libc/src/__support/math atan2f128.h expm1.h

[libc] Renaming Float128 (DyadicFloat<128>) to DFloat128 (#200907)

This is to be able to use the `Float128` for emulated float128 type.
[#200565 ](https://github.com/llvm/llvm-project/pull/200565)
DeltaFile
+28-27libc/src/__support/math/atan2f128.h
+26-26libc/src/__support/math/expm1.h
+23-22libc/src/__support/math/range_reduction_double_common.h
+23-22libc/src/__support/math/asinpi.h
+22-22libc/src/__support/math/exp10.h
+21-21libc/src/__support/math/tan.h
+143-14019 files not shown
+343-33825 files

LLVM/project d7ee01cllvm/test/MC/Disassembler/AMDGPU gfx9_vop3.txt gfx12_dasm_vop3.txt

[AMDGPU] Fix disasm of i16 operands fp inline constants (#200944)
DeltaFile
+228-228llvm/test/MC/Disassembler/AMDGPU/gfx9_vop3.txt
+200-200llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_vop3.txt
+200-200llvm/test/MC/Disassembler/AMDGPU/gfx11_dasm_vop3.txt
+194-194llvm/test/MC/Disassembler/AMDGPU/gfx10_vop3.txt
+144-144llvm/test/MC/Disassembler/AMDGPU/gfx10_vop3c.txt
+128-128llvm/test/MC/Disassembler/AMDGPU/gfx8_vop3cx.txt
+1,094-1,09439 files not shown
+3,048-3,19945 files

LLVM/project b9d5c24llvm/utils/gn/secondary/clang/include/clang/Config BUILD.gn

[gn build] Port 7a907089 (#200953)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
+1-01 files

LLVM/project 334da51llvm/lib/Target/AMDGPU AMDGPUCoExecSchedStrategy.cpp, llvm/test/CodeGen/AMDGPU coexec-sched-barrier-latency.mir

[AMDGPU] Add some DAG mutations to CoexecSched

Change-Id: Id86bbdb427b23f68d39ceee196e4232e91974186
DeltaFile
+171-0llvm/test/CodeGen/AMDGPU/coexec-sched-barrier-latency.mir
+6-1llvm/lib/Target/AMDGPU/AMDGPUCoExecSchedStrategy.cpp
+177-12 files

LLVM/project f254ae6libc/cmake/modules CheckCompilerFeatures.cmake LLVMLibCCompileOptionRules.cmake, libc/cmake/modules/compiler_features check_stdc_fenv_access.cpp

[libc] Add FENV_ACCESS pragma with CMake compiler feature detection (#200268)

Related to https://github.com/llvm/llvm-project/pull/199009

Added compiler feature detection for _STDC FENV_ACCESS_ pragma. It is
used to conditionally add function-scoped `#pragma STDC FENV_ACCESS ON`
to `libc/src/__support/FPUtil/FEnvAccess.h`, whenever functions from the
`<fenv.h>` header are called and the target supports the pragma.
DeltaFile
+28-4libc/src/__support/FPUtil/FEnvImpl.h
+10-3libc/cmake/modules/CheckCompilerFeatures.cmake
+2-2libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
+2-2libc/cmake/modules/LLVMLibCTestRules.cmake
+2-0libc/cmake/modules/compiler_features/check_stdc_fenv_access.cpp
+44-115 files

LLVM/project 9e29f7dllvm/include/llvm/Target TargetSelectionDAG.td, llvm/lib/Target/X86 X86InstrSSE.td X86InstrAVX512.td

[X86] Remove extra MOV after widening atomic store (#197619)

This change adds patterns to optimize out an extra MOV present after
widening the atomic store. Covers `<2 x i8>` (SSE4.1+), `<2 x i16>`,
`<4 x i8>`, `<2 x i32>`, `<2 x float>`, `<4 x i16>`,
`<2 x ptr addrspace(270)>`.

Store-side counterpart to #148898. Stacked on top of #197618; and below
of #197860.
DeltaFile
+47-64llvm/test/CodeGen/X86/atomic-load-store.ll
+30-24llvm/test/CodeGen/X86/atomic-unordered.ll
+35-0llvm/include/llvm/Target/TargetSelectionDAG.td
+10-10llvm/lib/Target/X86/X86InstrSSE.td
+6-6llvm/lib/Target/X86/X86InstrAVX512.td
+1-1llvm/lib/Target/X86/X86ISelLowering.cpp
+129-1056 files

LLVM/project 4b91251mlir/include/mlir/IR TypeRange.h Remarks.h, mlir/lib/TableGen Constraint.cpp

[mlir] Remove unused DenseMapInfo::getTombstoneKey (#200633)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+0-17mlir/include/mlir/IR/TypeRange.h
+2-14mlir/include/mlir/IR/Remarks.h
+0-16mlir/include/mlir/IR/Value.h
+2-11mlir/lib/TableGen/Constraint.cpp
+0-12mlir/include/mlir/IR/Attributes.h
+0-8mlir/include/mlir/IR/OperationSupport.h
+4-7831 files not shown
+13-19137 files

LLVM/project 67139a2flang/include/flang/Lower IterationSpace.h, flang/include/flang/Lower/Support Utils.h

[flang] Remove unused DenseMapInfo::getTombstoneKey (#200632)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+2-6flang/lib/Lower/Support/Utils.cpp
+0-6flang/include/flang/Lower/Support/Utils.h
+0-6flang/include/flang/Semantics/symbol.h
+0-3flang/include/flang/Lower/IterationSpace.h
+2-214 files

LLVM/project 333bc30lldb/include/lldb/Symbol Symbol.h

[lldb] Add static_assert to catch increases to size of Symbol (#200919)
DeltaFile
+10-0lldb/include/lldb/Symbol/Symbol.h
+10-01 files

LLVM/project 7ccb0edlld/wasm Writer.cpp Config.h

[lld][WebAssembly] Refine type used for internal TLS-related symbols. NFC (#200899)

I noticed this while reviewing #200855.
DeltaFile
+3-6lld/wasm/Writer.cpp
+4-4lld/wasm/Config.h
+7-102 files

LLVM/project f0d3a8fbolt/include/bolt/Passes DataflowAnalysis.h SplitFunctions.h, bolt/include/bolt/Profile DataReader.h

[BOLT] Remove unused DenseMapInfo::getTombstoneKey (#200637)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+0-5bolt/include/bolt/Passes/DataflowAnalysis.h
+0-4bolt/include/bolt/Profile/DataReader.h
+0-3bolt/include/bolt/Passes/SplitFunctions.h
+0-123 files

LLVM/project 54796f2lldb/include/lldb/Core Highlighter.h, lldb/include/lldb/Host HostThread.h

[lldb] Remove unused DenseMapInfo::getTombstoneKey (#200635)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+2-12lldb/include/lldb/Symbol/SymbolContext.h
+3-3lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+0-5lldb/include/lldb/Utility/UUID.h
+0-4lldb/include/lldb/Host/HostThread.h
+0-4lldb/include/lldb/Utility/ConstString.h
+0-3lldb/include/lldb/Core/Highlighter.h
+5-314 files not shown
+6-4010 files

LLVM/project fbcf6bblld/COFF Chunks.h, lld/MachO ConcatOutputSection.h

[lld] Remove unused DenseMapInfo::getTombstoneKey (#200636)

#200595 changed DenseMap to no longer create tombstone buckets, so
DenseMapInfo<T>::getTombstoneKey() is never called. Remove dead
definitions and dead tombstone branches.
DeltaFile
+1-6lld/MachO/ConcatOutputSection.h
+1-6lld/wasm/SyntheticSections.h
+0-3lld/COFF/Chunks.h
+2-153 files