LLVM/project 5706ee3llvm/include/llvm/Object BBAddrMap.h, llvm/lib/Object ELF.cpp BBAddrMap.cpp

[Object] Extract format-agnostic BBAddrMap decoder (#188435)

[Object] Extract format-agnostic BBAddrMap decoder

This is part of patches to port BBAddrMap to COFF.

Move format-agnostic BBAddrMap decode logic out of ELF.cpp into
BBAddrMap.cpp, and expose a shared decodeBBAddrMapPayload helper in
BBAddrMap.h.

Keep ELF-specific steps (section decompression and relocation
translation) in ELF.cpp, and delegate payload decoding to the
shared helper.

Error messages in the decoder are updated to use the generic
"BB address map" instead of the ELF-specific "SHT_LLVM_BB_ADDR_MAP"
since the decoder is now shared across object formats.

This refactor prepares follow-up work to let COFF and ELF share
the same BBAddrMap decoding logic.
DeltaFile
+76-247llvm/lib/Object/ELF.cpp
+215-0llvm/lib/Object/BBAddrMap.cpp
+39-26llvm/unittests/Object/ELFObjectFileTest.cpp
+32-0llvm/include/llvm/Object/BBAddrMap.h
+3-3llvm/test/tools/llvm-readobj/ELF/bb-addr-map-feature-warning.test
+2-2llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test
+367-2785 files not shown
+374-28411 files

LLVM/project d458f34clang-tools-extra/clang-tidy/bugprone IncorrectEnableIfCheck.cpp, clang-tools-extra/docs ReleaseNotes.rst

 [clang-tidy] Fix `bugprone-incorrect-enable-if` inserting duplicate `typename` (#190899)

This PR resolves one of our FIXME's. Pre-C++20, this check turns
```cpp
typename std::enable_if<...>
```
into
```cpp
typename typename std::enable_if<...>::type
```
instead of 
```cpp
typename std::enable_if<...>::type
```
DeltaFile
+4-5clang-tools-extra/clang-tidy/bugprone/IncorrectEnableIfCheck.cpp
+6-0clang-tools-extra/test/clang-tidy/checkers/bugprone/incorrect-enable-if.cpp
+6-0clang-tools-extra/docs/ReleaseNotes.rst
+16-53 files

LLVM/project 2c0102clldb/examples/python/templates scripted_process.py, lldb/test/API/functionalities/scripted_frame_provider test_frame_providers.py TestScriptedFrameProvider.py

[lldb] Fix ScriptedFrame thread member init assignment (#191297)

This patch fixes a typo in the `ScriptedFrame` base class initializer
where we used a thread id with `GetThreadByIndexID` instead of the
thread index.

This could lead to issues where derived classes wouldn't be initialized
properly, which could cause crashes down the line.

The patch addresses the issue by calling `GetThreadByID` with the thread
id.

rdar://174432881

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+59-0lldb/test/API/functionalities/scripted_frame_provider/test_frame_providers.py
+47-0lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+30-0lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+1-1lldb/examples/python/templates/scripted_process.py
+137-14 files

LLVM/project 81fee9emlir/include/mlir/Dialect/XeGPU/uArch IntelGpuXe2.h

[MLIR][XeGPU] Add uArch defintion for CRI - Crescent Island (#191024)

XeGPU lowering relies on uArch definition and lowering fails if a chip
does not have uArch definition entry.
Add preliminary uArch definition for CRI.
This is a place holder for now and current defintion is identical to
BMG.
DeltaFile
+30-0mlir/include/mlir/Dialect/XeGPU/uArch/IntelGpuXe2.h
+30-01 files

LLVM/project 8ed9a04mlir/test/Integration/Dialect/XeVM/GPU gpu_printf.mlir

[MLIR][XeVM] Re-enable gpu.printf test. (#191056)

https://github.com/llvm/llvm-project/pull/188517 fixed regression.
DeltaFile
+1-9mlir/test/Integration/Dialect/XeVM/GPU/gpu_printf.mlir
+1-91 files

LLVM/project 25e64fdllvm/test/CodeGen/WebAssembly/GlobalISel/instructions rotl.mir rotr.mir, llvm/test/CodeGen/WebAssembly/GlobalISel/legalizer add.mir

[WebAssembly][GlobalISel] Add legalization & selection of most integer ops (#190234)

Allows many ops/instructions working solely on integers to be fully
selected (legalize, regbankselect, isel).

Split from #157161
DeltaFile
+291-0llvm/test/CodeGen/WebAssembly/GlobalISel/instructions/rotl.mir
+291-0llvm/test/CodeGen/WebAssembly/GlobalISel/instructions/rotr.mir
+221-0llvm/test/CodeGen/WebAssembly/GlobalISel/instructions/fshl.ll
+201-0llvm/test/CodeGen/WebAssembly/GlobalISel/instructions/fshr.ll
+0-200llvm/test/CodeGen/WebAssembly/GlobalISel/legalizer/add.mir
+183-0llvm/test/CodeGen/WebAssembly/GlobalISel/instructions/ashr.ll
+1,187-20039 files not shown
+3,923-57945 files

LLVM/project 47678c6clang/test/CodeGen/X86 pr190962.ll, llvm/lib/Target/X86 X86InstrInfo.cpp X86InstrInfo.h

Revert "[X86][APX] Add copy instruction to LiveInterval of SrcReg (#191102) (#191330)

This reverts commit 16f02c0940d6ee783c38ca27b44fc158d77e7567.

This caused a bot failure when building with expensive checks.


https://ci.swift.org/job/llvm.org/job/clang-stage1-RA-expensive/job/main/409/testReport/junit/Clang/CodeGen_X86/pr190962_ll/

The test case included in the original commit fails with:

```
| *** Bad machine code: Two-address instruction operands must be identical ***
| - function:    foo
| - basic block: %bb.0  (0x7fc688853c40) [0B;192B)
| - instruction: 128B   %10:gr64 = IMUL64rm %33:gr64(tied-def 0), %fixed-stack.1, 1, $noreg, 0, $noreg, implicit-def dead $eflags :: (load (s64) from %fixed-stack.1, align 16)
| - operand 1:   %33:gr64(tied-def 0)
| fatal error: error in backend: Found 1 machine code errors.
```

    [2 lines not shown]
DeltaFile
+0-65clang/test/CodeGen/X86/pr190962.ll
+8-19llvm/lib/Target/X86/X86InstrInfo.cpp
+1-2llvm/lib/Target/X86/X86InstrInfo.h
+1-1llvm/lib/Target/X86/X86FastISel.cpp
+10-874 files

LLVM/project e03817fllvm/unittests/Support ErrorTest.cpp

[LLVM][Support] Fix leak in ErrorTest.cpp (#191326)

The leak is from #188718
DeltaFile
+1-2llvm/unittests/Support/ErrorTest.cpp
+1-21 files

LLVM/project 5531990llvm/tools/llvm-profgen CMakeLists.txt

[llvm-profgen] Link with BinaryFormat for #190862 (#191324)
DeltaFile
+1-0llvm/tools/llvm-profgen/CMakeLists.txt
+1-01 files

LLVM/project f7fb8f4llvm/lib/Target/RISCV RISCVInstrInfoP.td, llvm/test/CodeGen/RISCV rv64p.ll rv32p.ll

[RISCV][P-ext] Add mul*.h00 and mul*.w00 patterns. (#191313)

The instructions take the low halfword/word from each input, extends
them and multiplies to produce a word/dword result.

We can use these instead of plain MUL if it would allow us to avoid
a sext/zext for at least one of the operands.

Tests were written by Claude Sonnet 4.5.
DeltaFile
+94-3llvm/test/CodeGen/RISCV/rv64p.ll
+94-3llvm/test/CodeGen/RISCV/rv32p.ll
+24-0llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+212-63 files

LLVM/project 23cb39autils/bazel/llvm-project-overlay/llvm/unittests BUILD.bazel

[bazel] Remove unused deps from llvm/unittests (#191237)

I'm testing out dwyu, this is a first pass on removing some of the
things it has found
DeltaFile
+0-23utils/bazel/llvm-project-overlay/llvm/unittests/BUILD.bazel
+0-231 files

LLVM/project 58d8ee8clang/include/clang/ScalableStaticAnalysisFramework/Analyses/EntityPointerLevel EntityPointerLevel.h, clang/lib/Analysis UnsafeBufferUsage.cpp

address comments
DeltaFile
+13-14clang/lib/ScalableStaticAnalysisFramework/Analyses/SSAFAnalysesCommon.h
+3-21clang/lib/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageExtractor.cpp
+4-6clang/include/clang/ScalableStaticAnalysisFramework/Analyses/EntityPointerLevel/EntityPointerLevel.h
+6-0clang/lib/Analysis/UnsafeBufferUsage.cpp
+26-414 files

LLVM/project eb6075elibc/src CMakeLists.txt, libc/src/semaphore posix_semaphore.h CMakeLists.txt

[libc][semaphore] Add internal unnamed semaphore implementation (#190851)

Implements the first part for #190847

Add internal unnamed semaphore lifetime support, particularly:

`sem_init`:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_init.html#
`sem_destroy`:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_destroy.html#
`sem_getvalue`:
https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_getvalue.html#
DeltaFile
+59-0libc/src/semaphore/posix_semaphore.h
+25-0libc/test/src/semaphore/semaphore_test.cpp
+11-0libc/test/src/semaphore/CMakeLists.txt
+8-0libc/src/semaphore/CMakeLists.txt
+1-0libc/src/CMakeLists.txt
+1-0libc/test/src/CMakeLists.txt
+105-06 files

LLVM/project 7cec394llvm/unittests/Support ErrorTest.cpp

Fix leak in ErrorTest.cpp

The leak is from #188718
DeltaFile
+1-2llvm/unittests/Support/ErrorTest.cpp
+1-21 files

LLVM/project 80ae4e5llvm/tools/llvm-profgen ProfiledBinary.cpp ProfiledBinary.h

[llvm-profgen] Read build ID from binary for perfscript address filtering (#190862)

For shared libraries (.so), read the binary's build ID during load()
using object::getBuildID() and store it as FilterBuildID. Main
executables keep FilterBuildID empty, matching the convention that
their perfscript addresses have no buildid prefix.

This enables automatic build ID-based filtering of perfscript
addresses in [buildid:]0xaddr format without requiring a CLI option.
DeltaFile
+17-0llvm/tools/llvm-profgen/ProfiledBinary.cpp
+14-0llvm/tools/llvm-profgen/ProfiledBinary.h
+31-02 files

LLVM/project 1035389bolt/lib/Profile DataAggregator.cpp CMakeLists.txt, bolt/test/X86 pre-aggregated-perf-shlib.test

[BOLT] Use identify_magic for shared library detection (#190902)

Replace the fragile filename-based check (ends_with(".so")) with
identify_magic()/file_magic::elf_shared_object to reliably detect
shared libraries when filtering pre-aggregated profile data by
build ID.

Test Plan: pre-aggregated-perf-shlib.test
DeltaFile
+75-0bolt/test/X86/pre-aggregated-perf-shlib.test
+5-1bolt/lib/Profile/DataAggregator.cpp
+1-0bolt/lib/Profile/CMakeLists.txt
+81-13 files

LLVM/project e300318orc-rt/include/orc-rt Session.h, orc-rt/unittests SessionTest.cpp

[orc-rt] Add Session::attach convenience overload. (#191199)

This overload enables one-line attach in the common case where the
ControllerAccess implementation does not require any configuration after
construction.
DeltaFile
+12-0orc-rt/include/orc-rt/Session.h
+3-6orc-rt/unittests/SessionTest.cpp
+15-62 files

LLVM/project c1b169bclang/lib/Headers/hlsl hlsl_alias_intrinsics.h, llvm/test/tools/llvm-mca/RISCV/SiFiveX390 vector-fp.s

rebase

Created using spr 1.3.4
DeltaFile
+0-4,851llvm/test/tools/llvm-mca/RISCV/SiFiveX390/vector-fp.s
+4,526-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/arithmetic.test
+4-3,871clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h
+3,706-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/fp.test
+3,126-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/vlseg-vsseg.test
+2,878-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/bitwise.test
+14,240-8,722930 files not shown
+63,964-31,550936 files

LLVM/project 494f43dclang/lib/Headers/hlsl hlsl_alias_intrinsics.h, llvm/test/tools/llvm-mca/RISCV/SiFiveX390 vector-fp.s

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.4

[skip ci]
DeltaFile
+0-4,851llvm/test/tools/llvm-mca/RISCV/SiFiveX390/vector-fp.s
+4,526-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/arithmetic.test
+4-3,871clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h
+3,706-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/fp.test
+3,126-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/vlseg-vsseg.test
+2,878-0llvm/test/tools/llvm-mca/RISCV/SiFiveX390/rvv/bitwise.test
+14,240-8,722930 files not shown
+63,964-31,550936 files

LLVM/project fda5671llvm/docs CompileCudaWithLLVM.rst

[Docs, CUDA] Update cuda compilation docs (#191271)
DeltaFile
+29-24llvm/docs/CompileCudaWithLLVM.rst
+29-241 files

LLVM/project 5f27de8clang/lib/CIR/CodeGen CIRGenDecl.cpp CIRGenFunction.cpp, clang/lib/CIR/Dialect/Transforms LoweringPrepare.cpp

[CIR] Implement variable size array cleanup (#191247)

This implements partial array destruction for variable sized arrays. The
cir.array.dtor operation already had support for variable length, so
this change only needs to add the variable handling in
`emitArrayDestroy` and `emitArrayLength`.

Assisted-by: Cursor / claude-4.6-opus-high
DeltaFile
+499-0clang/test/CIR/CodeGen/partial-array-cleanup.cpp
+27-32clang/lib/CIR/CodeGen/CIRGenDecl.cpp
+34-4clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+0-2clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
+560-384 files

LLVM/project 67ff769clang/include/clang/Basic DiagnosticLexKinds.td, clang/include/clang/Lex HeaderSearch.h

[clang][modules] Add warning for symlinks to modular headers (#188059)

Symlinks that are not covered by a module that point to a header owned
by a module create situations where if a header is owned by a module
depends on which headers were included prior.

This adds a diagnostic for such cases when they can be detected, and
informs the user to use a textual forwarding header instead.

This bypasses Clang's FileManager and VFS as they don't know about
symlinks. The diagnostic is worded as "may" because of this.
DeltaFile
+130-38clang/lib/Lex/HeaderSearch.cpp
+98-0clang/test/Modules/symlink-to-modular-header.c
+11-0clang/lib/Lex/ModuleMap.cpp
+11-0clang/include/clang/Lex/HeaderSearch.h
+7-0clang/include/clang/Basic/DiagnosticLexKinds.td
+257-385 files

LLVM/project 6b2c2fellvm/utils/lit/lit TestTimes.py, llvm/utils/lit/tests malformed-test-times.py

[llvm-lit] Ignore malformed `.lit_test_times` entries

When running `llvm-lit`, I sometimes hit a traceback, because a
`.lit_test_times.txt` file has got corrupted (not sure how).
However, it's non-obvious what the issue is (you just get a traceback),
so I've fixed this as follows:

`read_test_times()` currently assumes every line in .lit_test_times.txt
contains a floating-point time followed by a test path. If the file
contains a blank line, a line without a path, or a non-numeric time,
lit raises during discovery instead of skipping the bad entry.

Fix this by parsing each line defensively. Split once, ignore lines
that do not produce both fields, and ignore entries whose time cannot
be parsed as a float. This keeps the existing behavior for valid lines
while making malformed timing files non-fatal.

Add a new `malformed-test-times.py` regression test and a checked-in
lit_test_times fixture containing both valid and malformed entries. The

    [3 lines not shown]
DeltaFile
+12-0llvm/utils/lit/tests/malformed-test-times.py
+8-2llvm/utils/lit/lit/TestTimes.py
+7-0llvm/utils/lit/tests/Inputs/malformed-test-times/lit.cfg
+5-0llvm/utils/lit/tests/Inputs/malformed-test-times/lit_test_times
+1-0llvm/utils/lit/tests/Inputs/malformed-test-times/b.txt
+1-0llvm/utils/lit/tests/Inputs/malformed-test-times/a.txt
+34-26 files

LLVM/project 92d3a1dllvm/test/Transforms/SLPVectorizer/RISCV revec-strided-load.ll

[NFC][SLP] Add tests for revectorization of strided loads (#191293)

Demonstrates bug in SLP when handling re-vectorization, see #191292
DeltaFile
+116-0llvm/test/Transforms/SLPVectorizer/RISCV/revec-strided-load.ll
+116-01 files

LLVM/project 47107a7clang/lib/CodeGen/TargetBuiltins ARM.cpp, clang/lib/Sema SemaARM.cpp

[AArch64][clang] Fix `__arm_atomic_store_with_stshh` ordering and lowering

`__builtin_arm_atomic_store_with_stshh` must satisfy two constraints:
  - preserve release/seq_cst ordering in LLVM IR
  - keep `stshh` immediately adjacent to the final store in codegen

The original target-intrinsic lowering preserved the final `stshh` + store
sequence, but it did not model ordering strongly enough in LLVM IR, so the
optimizer could sink earlier stores across the builtin.

Fix this by inserting a `release` or `seq_cst` fence before the intrinsic
call. This preserves ordering in optimized IR while still letting the
backend emit the required final instruction sequence. This means we now
get a `dmb ish` instruction before the `stshh` instruction.

Also relax Sema for the builtin to accept storing 8/16/32/64-bit
floating-point and pointer values in addition to integers, and update
the diagnostic text accordingly.


    [5 lines not shown]
DeltaFile
+38-0clang/test/CodeGen/AArch64/pcdphint-atomic-store.c
+37-0clang/test/CodeGen/AArch64/pcdphint-atomic-store-order.c
+28-5clang/lib/CodeGen/TargetBuiltins/ARM.cpp
+13-5clang/test/Sema/AArch64/pcdphint-atomic-store.c
+13-0llvm/test/CodeGen/AArch64/pcdphint-atomic-store.ll
+4-1clang/lib/Sema/SemaARM.cpp
+133-111 files not shown
+134-127 files

LLVM/project e38801bclang/lib/Driver ModulesDriver.cpp, clang/test/Driver modules-driver-clang-modules-only.cpp modules-driver-manifest-input-args.cpp

Reapply "[clang][ModulesDriver] Add support for Clang modules to -fmodules-driver" (#191258)

This relands #187606 (reverted with #191122).

In the initial PR, the Clang module precompile jobs were created as
`CC1Command` objects instead of regular `Command` objects, which
introduced a memory leak.
(See discussion in https://reviews.llvm.org/D74447)

This has been fixed in this reland.
DeltaFile
+127-0clang/test/Driver/modules-driver-clang-modules-only.cpp
+57-27clang/lib/Driver/ModulesDriver.cpp
+7-9clang/test/Driver/modules-driver-manifest-input-args.cpp
+191-363 files

LLVM/project 3c5e03bllvm/test/CodeGen/SystemZ zos-symbol-2.ll

Extend test
DeltaFile
+24-10llvm/test/CodeGen/SystemZ/zos-symbol-2.ll
+24-101 files

LLVM/project 4a5e9fallvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV rv64p.ll rv32p.ll

[RISCV][P-ext] Recognize (select (X >u ((1 << C) - 1), sext(X >s -1), trunc(X)) as usati (#190810)

Where the result is a type with C bits. The unsigned compare on the
select treats negative values as large positive values so any value
that isn't in the range [0, (1 << C) - 1] will use the True operand
of the select. The sext(X >s -1) creates all ones for positive values
of X and 0 for negative values of X.

This pattern appears in the picojpeg workload of embench-iot with
an i8 result type.

Assisted-by: Claude Sonnet 4.5
DeltaFile
+230-0llvm/test/CodeGen/RISCV/rv64p.ll
+95-0llvm/test/CodeGen/RISCV/rv32p.ll
+68-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+393-03 files

LLVM/project 7b73b23clang/include/clang/AST ASTContext.h, clang/lib/AST ASTContext.cpp Type.cpp

[clang] implement CWG2064: ignore value dependence for decltype

The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.

Readds a few test cases from da98651

Fixes #8740
Fixes #61818
Fixes #190388
DeltaFile
+473-44clang/lib/AST/ASTContext.cpp
+78-12clang/test/SemaTemplate/instantiation-dependence.cpp
+41-7clang/include/clang/AST/ASTContext.h
+44-0clang/test/SemaTemplate/injected-class-name.cpp
+28-16clang/lib/Sema/SemaTemplate.cpp
+25-16clang/lib/AST/Type.cpp
+689-9521 files not shown
+836-13227 files

LLVM/project e8e8552llvm/include/llvm/Analysis BlockFrequencyInfoImpl.h BranchProbabilityInfo.h, llvm/include/llvm/CodeGen MachineBranchProbabilityInfo.h

[Analysis][NFC] Remove BPI::getEdgeProbability(iterator) (#191286)

Now that successor iterators are Use iterators, it is no longer cheap to
get the successor index. Replace uses with the variant that takes the
successor index, which in all cases is easily available.

This is primarily cleanup after the somewhat recent successor changes.
There's also a minor (barely measurable) performance improvement here.
DeltaFile
+12-12llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
+5-5llvm/lib/CodeGen/MachineBranchProbabilityInfo.cpp
+3-5llvm/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
+0-6llvm/lib/Analysis/BranchProbabilityInfo.cpp
+0-3llvm/include/llvm/Analysis/BranchProbabilityInfo.h
+1-1llvm/lib/CodeGen/MIRSampleProfile.cpp
+21-326 files