LLVM/project 065c4d4 — compiler-rt/lib/sanitizer_common/tests CMakeLists.txt sanitizer_new_handler_test.cpp

[test][sanitizer_common] Add unit tests for operator new failure handling (#226832)

Test `RunNewHandlerChain`, `NewImplThrowing`, `NewImplNothrow` and
`InvokeOnExhausted` with fake allocation and exhaustion callbacks. The
tests cover handler retries, chain exhaustion, exceptions thrown by a
`std::new_handler`, and the `allocator_may_return_null` exhaustion
policy for throwing and nothrow `operator new`. Sanitizers that adopt
the framework then only need to test their own wiring.

The tests build only where the header includes `<new>` and supports
exceptions, which excludes Windows.

Assisted-by: Claude Opus 5.5
DeltaFile
+202-0compiler-rt/lib/sanitizer_common/tests/sanitizer_new_handler_test.cpp
+1-0compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt
+203-02 files

LLVM/project 55c45c2 — mlir/lib/Dialect/Vector/Transforms VectorUnroll.cpp, mlir/test/Dialect/Vector vector-transfer-unroll.mlir vector-unroll-options.mlir

[mlir][vector] Do not unroll ops masked by vector.mask (#230461)
DeltaFile
+28-0mlir/test/Dialect/Vector/vector-unroll-options.mlir
+24-0mlir/test/Dialect/Vector/vector-transfer-unroll.mlir
+7-0mlir/lib/Dialect/Vector/Transforms/VectorUnroll.cpp
+59-03 files

LLVM/project ee7d9f3 — lldb/include/lldb/Interpreter ScriptedInstanceRegistry.h, lldb/source/Commands CommandObjectScripting.cpp

[lldb] Add `scripting extension list --instances` (#226043)

There is currently no way to tell which scripted extensions are alive in
a debug session, or which script file a given extension class came from.

This patch addresses that by resolving, for each extension object, the
file of the module that defines its class, and attributing it to the
object's `ScriptedMetadata`. It tracks every successfully created
extension object in a registry owned by the script interpreter, and
lists them with the new `--instances` flag of `scripting extension
list`, grouped by class. Each instance shows a UUID, the address of its
script object and the arguments it was created with:

```
(lldb) scripting extension list --instances
Instantiated scripted extensions:
--------------------------------------------------------------------------------
  Class: resolver.Resolver
  Extension: ScriptedBreakpointResolver

    [23 lines not shown]
DeltaFile
+191-0lldb/source/Interpreter/ScriptedInstanceRegistry.cpp
+187-0lldb/test/API/commands/scripting/extension/TestScriptingExtensionInstances.py
+82-0lldb/include/lldb/Interpreter/ScriptedInstanceRegistry.h
+72-0lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+62-3lldb/source/Commands/CommandObjectScripting.cpp
+48-8lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPythonInterface.h
+642-1115 files not shown
+808-1421 files

LLVM/project fbf3884 — llvm/lib/Target/NVPTX NVPTXISelLowering.cpp, llvm/test/CodeGen/NVPTX atomicrmw.py atomicrmw-sm90.ll

[NVPTX] Set default value of nvptx-allow-ftz-atomics to false

This restores the strict FTZ default originally introduced in #200732
and temporarily relaxed in #206154.

Frontends can now explicitly opt in to native FTZ-mismatched atomics on a
per-instruction basis using !atomic.ignore.denormal.mode metadata (#217585,
#217586), which is supported in Clang, MLIR, and XLA. Users who need the
previous behavior globally can still pass -nvptx-allow-ftz-atomics=true.

Update test cases to verify the new default disallow behavior.
DeltaFile
+36-37llvm/test/CodeGen/NVPTX/atomicrmw-ignore-denormal-mode.ll
+6-5llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+4-4llvm/test/CodeGen/NVPTX/atomicrmw-allow-ftz-atomics.ll
+2-2llvm/test/CodeGen/NVPTX/atomicrmw.py
+2-2llvm/test/CodeGen/NVPTX/atomicrmw-sm90.ll
+2-2llvm/test/CodeGen/NVPTX/atomicrmw-sm70.ll
+52-522 files not shown
+55-558 files

LLVM/project 0cd2817 — llvm/lib/Transforms/Utils SimplifyLibCalls.cpp, llvm/test/Transforms/InstCombine memrchr-4.ll memchr-6.ll

[SimplifyLibCalls] Fix ConstantInt construction based on char (#231159)

char has system-dependent signedness. If it is signed, then these
ConstantInt::get() uses would assert because the value is not a valid 8
bit unsigned value.

Cast to unsigned char to make sure we get a valid value on all
platforms.

Fixes https://github.com/llvm/llvm-project/issues/228213.

(cherry picked from commit b3fe8bb231fb43ae186c9ad38766bffb1e7f8e9a)
DeltaFile
+20-0llvm/test/Transforms/InstCombine/memchr-6.ll
+14-0llvm/test/Transforms/InstCombine/memrchr-4.ll
+4-3llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
+38-33 files

LLVM/project e2d3d43 — clang/lib/CodeGen/TargetBuiltins RISCV.cpp, clang/lib/Headers riscv_packed_simd.h

[Clang][RISCV] Add packed narrowing clip intrinsics (#231398)

This patch adds the Packed Narrowing Clip intrinsics:

- `__riscv_pnclipu_s_u8x4` and `__riscv_pnclipu_s_u16x2`
- `__riscv_pnclipru_s_u8x4` and `__riscv_pnclipru_s_u16x2`
- `__riscv_pnclip_s_i8x4` and `__riscv_pnclip_s_i16x2`
- `__riscv_pnclipr_s_i8x4` and `__riscv_pnclipr_s_i16x2`
DeltaFile
+265-0llvm/test/CodeGen/RISCV/rvp-narrowing-clip.ll
+106-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+57-7llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+40-12llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+22-0clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
+18-0clang/lib/Headers/riscv_packed_simd.h
+508-192 files not shown
+523-198 files

LLVM/project 8e19675 — clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/CodeGen call-conv-lowering-amdgpu-cxx-records.cpp call-conv-lowering-amdgpu-return-types.c

[CIR] Wire AMDGPU into the call-convention lowering pass
DeltaFile
+131-72clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+165-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-arg-types.c
+158-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-return-types.c
+140-0clang/test/CIR/CodeGenHIP/call-conv-lowering-amdgpu-kernel-args.hip
+74-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-cxx-records.cpp
+59-0clang/test/CIR/Transforms/abi-lowering/amdgpu-calling-conv.cir
+727-7210 files not shown
+820-9016 files

LLVM/project 64166f2 — clang/lib/Basic DiagnosticIDs.cpp

[AIX]Fix StaticDiagInfoRec size assertion on AIX (#231576)

#[202624](https://github.com/llvm/llvm-project/pull/202624)
(ee0ff209c3aa) added `static_assert(sizeof(StaticDiagInfoRec) == 10)`,
which breaks the build on AIX

On AIX, the canonical layout of bit-fields stores them in four-byte
words regardless of their declared type, which raises the struct's
alignment to four and pads it to twelve bytes. Applying the `pack`
pragma for compilers that employ the AIX canonical layout allows the
struct to fit within the expected ten bytes. This PR applies the same
fix as 844a02e509a4c, just to a different type.
DeltaFile
+16-0clang/lib/Basic/DiagnosticIDs.cpp
+16-01 files

LLVM/project b758e2b — llvm/lib/Transforms/Scalar LoopIdiomRecognize.cpp, llvm/test/Transforms/LoopIdiom right-shift-until-bittest.ll

[LoopIdiom] Recognize terminating right-shift bit tests (#231226)

A guarded hand-written `ctz` loop stays scalar in Clang while GCC
removes it. Recognize the terminating right-shift bit-test pattern so
the loop can become `cttz`; keep loops without a termination proof
unchanged.

Fixes #231219.
DeltaFile
+198-0llvm/test/Transforms/LoopIdiom/right-shift-until-bittest.ll
+100-34llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
+298-342 files

LLVM/project 5edfc85 — llvm/lib/Transforms/Vectorize LoopVectorize.cpp SLPVectorizer.cpp, llvm/test/CodeGen/AMDGPU gfx950-pk-f32-invalid-op-sel.ll

Merge branch 'main' into users/shiltian/amdgpu-split-module-unreached-cycles
DeltaFile
+5,611-5,555llvm/test/CodeGen/RISCV/clmul.ll
+1,314-1,312llvm/test/CodeGen/RISCV/clmulr.ll
+1,274-1,292llvm/test/CodeGen/RISCV/clmulh.ll
+430-592llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+719-0llvm/test/CodeGen/AMDGPU/gfx950-pk-f32-invalid-op-sel.ll
+133-376llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+9,481-9,127217 files not shown
+16,964-11,918223 files

LLVM/project fe5a87f — llvm/test/tools/llvm-ar error-opening-permission.test

[test][llvm-ar] Document chmod cleanup in error-opening-permission.test (#231345)

Add a comment explaining why `chmod 700` is chained with both `&&` and
`|| not`, addressing post-commit review on #230361.

Assisted-by: Gemini
DeltaFile
+2-0llvm/test/tools/llvm-ar/error-opening-permission.test
+2-01 files

LLVM/project d925f39 — flang-rt/lib/cuda registration.cpp, flang/lib/Optimizer/Transforms/CUDA CUFSharedTypeInfo.cpp CUFAddConstructor.cpp

[flang][cuda] register type information pages after all units register (#231619)

Registering the pages of the shared type information calls the CUDA
runtime, which initializes the module. With relocatable device code, the
managed variables registered by later units were then never populated.
Register the pages in the initialization constructor, which runs after
the registration constructors of all the units.
DeltaFile
+61-44flang/lib/Optimizer/Transforms/CUDA/CUFAddConstructor.cpp
+88-2flang/lib/Optimizer/Transforms/CUDA/CUFSharedTypeInfo.cpp
+35-0flang/test/Fir/CUDA/cuda-shared-type-info-no-managed.mlir
+24-10flang/test/Fir/CUDA/cuda-shared-type-info.mlir
+31-0flang/test/Fir/CUDA/cuda-shared-type-info-used.mlir
+25-3flang-rt/lib/cuda/registration.cpp
+264-593 files not shown
+288-639 files

LLVM/project 6dc7c97 — llvm/include/llvm/ExecutionEngine/Orc/Shared SimpleRemoteEPCUtils.h

[ORC] Remove unused RemoteSymbolLookup and signatures. NFC. (#231732)

RemoteSymbolLookup, its SPS serialization, and the SPSLoadDylibSignature
and SPSLookupSymbolsSignature typedefs in SimpleRemoteEPCUtils.h have no
users. (The only user of RemoteSymbolLookup was the unused
SPSLookupSymbolsSignature.)
DeltaFile
+0-32llvm/include/llvm/ExecutionEngine/Orc/Shared/SimpleRemoteEPCUtils.h
+0-321 files

LLVM/project 701bd63 — llvm/lib/Target/RISCV RISCVExpandPseudoPreEmit.cpp, llvm/test/CodeGen/RISCV bitinsert-bitextract-fp.ll bitinsert-bitextract.ll

[RISCV] Remove GPRAll and DUMMY_REG_PAIR_WITH_X0. (#231680)

This removes the gpr_odd subregister of X0_Pair. X0_Pair is now special
cased where sub_gpr_odd is used. To reduce duplication, I've added a helper
to RISCVRegisterInfo to encapsulate getting the sub registers of a
GPRPair.

I didn't update a few places where we don't expect X0, like callee saved
registers in frame lowering or the destination of a copy.

AI was used to do some refactoring and code review.
DeltaFile
+5,611-5,555llvm/test/CodeGen/RISCV/clmul.ll
+1,314-1,312llvm/test/CodeGen/RISCV/clmulr.ll
+1,274-1,292llvm/test/CodeGen/RISCV/clmulh.ll
+229-223llvm/test/CodeGen/RISCV/bitinsert-bitextract.ll
+113-110llvm/test/CodeGen/RISCV/bitinsert-bitextract-fp.ll
+6-13llvm/lib/Target/RISCV/RISCVExpandPseudoPreEmit.cpp
+8,547-8,5059 files not shown
+8,577-8,54415 files

LLVM/project 9e5896f — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp

[LSR] Clarify recurrence period check

Assisted-by: TRAE CLI (GPT-5.6-Sol)
DeltaFile
+7-4llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+7-41 files

LLVM/project a4590f9 — llvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp, llvm/test/CodeGen/AArch64/GlobalISel knownfpclass-ops.mir

[GlobalISel] Remove strict FP opcodes from computeKnownFPClass (#231335)

Fixes https://github.com/llvm/llvm-project/issues/231277

Removed `G_STRICT_FADD`, `G_STRICT_FSUB`, `G_STRICT_FMUL`,
`G_STRICT_FDIV`, `G_STRICT_FLDEXP`, and `G_STRICT_FMA` from
`computeKnownFPClass` since we cannot correctly model their rounding
modes at this time. `G_STRICT_FSQRT` is handled correctly so it stays
(`experimental_constrained_sqrt` is also handled as `sqrt` in
`ValueTracking.cpp`).

I also added additional tests for
`G_STRICT_FSUB`/`G_STRICT_FMUL`/`G_STRICT_FLDEXP` to watch for
rounding-mode dependent deductions in case we re-add those functions in
the future.

I left the `G_STRICT_*` functions in
`GISelValueTracking::isKnownNeverNaN(/*SNaN=*/true)` since they are
correctly handled there.

    [2 lines not shown]
DeltaFile
+119-2llvm/test/CodeGen/AArch64/GlobalISel/knownfpclass-ops.mir
+4-10llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+123-122 files

LLVM/project 887d758 — llvm/lib/Target/RISCV RISCVTargetTransformInfo.cpp

[RISCV] Simplify loop exit comparison hook

Assisted-by: TRAE CLI (GPT-5.6-Sol)
DeltaFile
+1-5llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+1-51 files

LLVM/project 76db6ee — llvm/lib/Support APFloat.cpp, llvm/unittests/ADT APFloatTest.cpp

[APFloat] Allow lossless conversions to PPCDoubleDouble (#228810)

The conversion from `IEEEdouble` to `PPCDoubleDouble` is lossless, since
the `double` value is just stored in the high-double of the
`PPCDoubleDouble` type. Updated the behavior of
`isLosslesslyConvertibleTo` so that any type that can losslessly convert
to `IEEEdouble` can also losslessly convert to `PPCDoubleDouble`.

AI Disclosure:
I used Claude Opus 5 to help implement the changes and write the tests.
DeltaFile
+28-2llvm/unittests/ADT/APFloatTest.cpp
+10-4llvm/lib/Support/APFloat.cpp
+38-62 files

LLVM/project 708d1ad — mlir/include/mlir/Dialect/OpenACC OpenACCOps.td, mlir/include/mlir/Dialect/OpenMP OpenMPOps.td

address comments
DeltaFile
+3-2mlir/include/mlir/Interfaces/LoopLikeInterface.h
+2-2mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+1-1mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+6-53 files

LLVM/project 07195e2 — clang/test/Analysis/Scalable/ssaf-merge-transformation-report cli-errors.test, clang/test/Analysis/Scalable/ssaf-merge-transformation-report/Inputs tu-c.sarif tu-a.sarif

[clang][ssaf] Add clang-ssaf-merge-transformation-report (#231664)

A source transformation writes a SARIF report for each translation unit.
Add a tool that merges the reports of the translation units of a link
unit into one, the way clang-ssaf-src-edit-merge merges their edits.

Each report numbers its rules and artifacts on its own, so the tool
renumbers every result against the merged run before it drops the ones
that are identical, such as a finding in a header that several
translation units include. clang lists a run's artifacts in URI order
but numbers them in the order it first refers to them, so an artifact is
known by its own index. The inputs must come from the same
transformation, and a merged report can be merged again.

---------

Co-authored-by: Kazu Hirata <kazu at google.com>
DeltaFile
+386-0clang/tools/clang-ssaf-merge-transformation-report/MergeTransformationReport.cpp
+124-0clang/test/Analysis/Scalable/ssaf-merge-transformation-report/Inputs/tu-clang-order.sarif
+118-0clang/test/Analysis/Scalable/ssaf-merge-transformation-report/Inputs/tu-b.sarif
+106-0clang/test/Analysis/Scalable/ssaf-merge-transformation-report/Inputs/tu-a.sarif
+87-0clang/test/Analysis/Scalable/ssaf-merge-transformation-report/cli-errors.test
+71-0clang/test/Analysis/Scalable/ssaf-merge-transformation-report/Inputs/tu-c.sarif
+892-017 files not shown
+1,327-023 files

LLVM/project 04ca53e — mlir/lib/Dialect/SCF/Transforms BufferizableOpInterfaceImpl.cpp

[mlir][SCF] Avoid linear scans when querying forall buffer aliases (#231187)

Override `getAliasingOpOperands` for `scf.forall` to directly look up
the tied `shared_outs` operand.

The default implementation scans all tensor operands on each query,
making alias lookup quadratic when querying all results. Direct lookup
reduces this to linear overall, improving bufferization time for loops
with many shared outputs.
DeltaFile
+10-0mlir/lib/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.cpp
+10-01 files

LLVM/project dc2dd56 — mlir/include/mlir/Dialect/Bufferization/IR DstBufferizableOpInterfaceImpl.h

[mlir][bufferization] Speed up DPS aliasing operand lookup (#231362)

Override `getAliasingOpOperands` for destination-style ops to directly
look up the tied output operand.

The default implementation scans all tensor operands on each query.
Direct lookup avoids repeated scans when querying many results.
DeltaFile
+11-1mlir/include/mlir/Dialect/Bufferization/IR/DstBufferizableOpInterfaceImpl.h
+11-11 files

LLVM/project 31ce8ac — lldb/source/Plugins/Highlighter/Clang ClangHighlighter.cpp, lldb/unittests/Highlighter HighlighterTest.cpp

[lldb] Fix highlight of digit separators (#224902) (#226363)

### [lldb] Fix syntax highlighting for C++ literal digit separators

The main goal of this PR is to fix a syntax highlighting bug in LLDB
where C++ literal digit separators (e.g., `0b00'00` or `1'000'000`) were
incorrectly parsed and colored as character literals.

Currently, `ClangHighlighter::Highlight` initializes `LangOptions`
manually. While it enables the `CPlusPlus14` version flag, it doesn't
use `LangOptions::setLangDefaults()`. As a result, underlying feature
flags are left in their default `false` state.

**Implementation Notes**
As discussed in the related issue #224902, we opted for explicitly
setting `Opts.AllowLiteralDigitSeparator = true;`. We tried to use
`LangOptions::setLangDefaults()`, but avoided it because, in the
isolated context of the Highlighter, it caused unexpected regressions in
other token tests.

    [7 lines not shown]
DeltaFile
+14-0lldb/unittests/Highlighter/HighlighterTest.cpp
+1-0lldb/source/Plugins/Highlighter/Clang/ClangHighlighter.cpp
+15-02 files

LLVM/project ada68dd — clang/include/clang/AST Decl.h

format
DeltaFile
+2-2clang/include/clang/AST/Decl.h
+2-21 files

LLVM/project 666110b — llvm/lib/Transforms/Vectorize LoopVectorizationLegality.cpp LoopVectorizationPlanner.cpp

[Vectorize] Declare command line options in TableGen (#231025)

TailFoldingPolicyTy moves to VectorizeOptions.h. LoopVectorize.h no
longer exports EnableLoopInterleaving and EnableLoopVectorization, which
nothing outside the library reads. LoopVectorizeHints and
LoopVectorizationLegality take the options struct in their constructors.

The -vplan-print-* options and -sbvec-always-verify are AssertsOnly
(#230898), no longer available in LLVM_ENABLE_DUMP builds without
assertions.

-vplan-verify-each defaults to VPlanVerifyEachDefault, true under
EXPENSIVE_CHECKS. -epilogue-vectorization-force-VF (ElementCount parser)
stays cl::opt.

Aided by Opus 5.5
DeltaFile
+430-592llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+125-371llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+331-0llvm/lib/Transforms/Vectorize/VectorizeOptions.td
+25-56llvm/lib/Transforms/Vectorize/LoopIdiomVectorize.cpp
+15-60llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.cpp
+12-50llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+938-1,12927 files not shown
+1,211-1,35833 files

LLVM/project fd288b2 — clang/include/clang/AST Decl.h

format
DeltaFile
+1-1clang/include/clang/AST/Decl.h
+1-11 files

LLVM/project c3519ec — clang/include/clang/AST Decl.h

Update clang/include/clang/AST/Decl.h

Co-authored-by: Corentin Jabot <corentinjabot at gmail.com>
DeltaFile
+1-0clang/include/clang/AST/Decl.h
+1-01 files

LLVM/project a5b0665 — clang/include/clang/AST Decl.h

Update clang/include/clang/AST/Decl.h

Co-authored-by: Corentin Jabot <corentinjabot at gmail.com>
DeltaFile
+1-0clang/include/clang/AST/Decl.h
+1-01 files

LLVM/project 182e273 — clang/docs ReleaseNotes.md

Update clang/docs/ReleaseNotes.md

Co-authored-by: Corentin Jabot <corentinjabot at gmail.com>
DeltaFile
+2-3clang/docs/ReleaseNotes.md
+2-31 files

LLVM/project 9d4c617 — clang/docs/ScalableStaticAnalysis/user-docs MakeProjects.md, clang/test/Analysis/Scalable/ssaf-orchestrator-make link-driver-ld-lld.test

[clang][ssaf] Interpose ld.lld in clang-ssaf-orchestrator-make (#231720)

A clang built with CLANG_DEFAULT_LINKER=lld, or given -fuse-ld=lld, runs
ld.lld for a link rather than ld, so the ld shim stands in for ld.lld
too. ld.lld takes ld's command line.

Assisted-by: Claude
DeltaFile
+41-0clang/test/Analysis/Scalable/ssaf-orchestrator-make/link-driver-ld-lld.test
+10-2clang/tools/clang-ssaf-orchestrator-make/tests/test_clang_shim.py
+2-2clang/docs/ScalableStaticAnalysis/user-docs/MakeProjects.md
+1-0clang/tools/clang-ssaf-orchestrator-make/lib/clang_ssaf_orchestrator_make/config.py
+54-44 files