LLVM/project adfd81b — flang/lib/Parser Fortran-parsers.cpp, flang/test/Parser missing-colons.f90 recovery11.f90

[flang] Fix diagnostic order for invalid coarray dimension declarations (#219282)

Summary: Drop spurious "expected entity declarations" after missing '::'

#215886 made `withMessage()` anchor its message at the parser's start
location when no tokens matched. The nonstandard "`,` in place of `::`"
fallback for type declaration statements wraps its `,` in
`withMessage()`,
so when no `,` followed the attribute list it reported "expected entity
declarations" at the same location as the standard "expected '::'". The
two
messages tied and came out in the wrong order:

```fortran
integer :: d
real, dimension (0:d)[0:d] :: ra
end
```


    [17 lines not shown]
DeltaFile
+34-0flang/test/Parser/recovery11.f90
+5-2flang/lib/Parser/Fortran-parsers.cpp
+7-0flang/test/Parser/missing-colons.f90
+1-1flang/test/Semantics/CUDA/cuda-managed-implicit-modfile.cuf
+47-34 files

LLVM/project 5918b55 — lldb/source/Plugins/ExpressionParser/Clang ClangASTMetadata.cpp, lldb/source/Plugins/SymbolFile/NativePDB PdbAstBuilderClang.h PdbAstBuilderClang.cpp

[LLDB][NativePDB] Set IsDynamicCXXType metadata for records (#155853)

All records were marked as not being a dynamic C++ type - even ones that
contain virtual methods. However, these _are_ dynamic C++ types.

With this PR, the metadata for dynamic C++ types is now set when a
record is completed and a type is considered dynamic if it has any
virtual method (e.g. destructor).

I'm not sure how to test this. I noticed this when implementing a
Microsoft ABI runtime to resolve types based on their vtables (PR TBD).
DeltaFile
+51-8lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp
+43-0lldb/test/Shell/SymbolFile/NativePDB/dynamic-types.cpp
+19-7lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+5-5lldb/source/Plugins/ExpressionParser/Clang/ClangASTMetadata.cpp
+5-2lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.h
+123-225 files

LLVM/project 9945545 — offload/include PluginManager.h, offload/libompaccsupport PluginManager.cpp

[Offload] Avoid invoking liboffload functions when uninitialized (#234645)

When libomptarget reads/detects `OMP_TARGET_OFFLOAD=disabled`, it skips
invoking `olInit()`, so subsequent calls to liboffload functions return
errors in most cases. This change adds minimal tracking of liboffload to
avoid such type of errors.

Assisted by Claude
DeltaFile
+25-0offload/test/offloading/offload_disabled.c
+16-3offload/libompaccsupport/PluginManager.cpp
+5-0offload/include/PluginManager.h
+1-1offload/test/offloading/disable_default_device.c
+1-1offload/libomptarget/interface.cpp
+48-55 files

LLVM/project b164df4 — clang/test/CIR/CodeGen new-delete-no-exceptions.cpp

[CIR] Update new-delete-no-exceptions.cpp for operator new memory effects
DeltaFile
+1-1clang/test/CIR/CodeGen/new-delete-no-exceptions.cpp
+1-11 files

LLVM/project cbf15ef — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize early_exit_combined_exits.ll early_exit_with_stores.ll

[VPlan] Use llvm.mask.beforefirst for computing early exit mask

This makes the cost more accurate and improves codegen for RISC-V. The codegen for an early exit loop with side effects then goes from:

    .LBB0_3:                                # %vector.body
                                            # =>This Inner Loop Header: Depth=1
        vl1r.v  v16, (a3)
        vsetvli zero, zero, e8, m1, ta, ma
        vmseq.vi        v16, v16, 0
        vfirst.m        a7, v16
        srli    t0, a7, 63
        czero.nez       a7, a7, t0
        czero.eqz       t0, a1, t0
        or      a7, t0, a7
        vsetvli zero, zero, e64, m8, ta, ma
        vmsltu.vx       v0, v8, a7
        vle8.v  v17, (a5), v0.t
        vcpop.m t1, v16
        vsetvli zero, zero, e8, m1, ta, ma

    [22 lines not shown]
DeltaFile
+50-50llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+40-40llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+18-18llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+21-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+10-10llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+8-8llvm/test/Transforms/LoopVectorize/early_exit_combined_exits.ll
+147-1267 files not shown
+166-14413 files

LLVM/project 9b661aa — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

Handle scalarization
DeltaFile
+13-10llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+6-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+19-102 files

LLVM/project 1d77f86 — llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll, llvm/test/Analysis/CostModel/RISCV mask-beforefirst.ll

Precommit tests
DeltaFile
+44-0llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+42-0llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+86-02 files

LLVM/project b3d2125 — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

[TTI] Add cost for llvm.mask.beforefirst
DeltaFile
+16-16llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+15-15llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+23-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+54-313 files

LLVM/project 4a4ccd6 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/WebAssembly mask-beforefirst.ll

[SelectionDAG] Fix get_active_lane_mask expansion on 32-bit targets

On e.g. wasm32, OpVT can be 32 bits whilst the StepVector type can be v2i64. When this happens DAG.getConstant asserts because maxUIntN doesn't fit into the 32 bits. Fix this by clamping it to OpVT's max size.
DeltaFile
+47-0llvm/test/CodeGen/WebAssembly/mask-beforefirst.ll
+4-2llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+51-22 files

LLVM/project 6938b01 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/X86 mask-beforefirst.ll

[SelectionDAG] Handle splitting in get_active_lane_mask expansion

Split when the type is legal, e.g. v64i1, but the step vector needed for expansion needs split, e.g. v64i8.

This can happen on avx512 when the 512 bit registers are disabled.
DeltaFile
+350-0llvm/test/CodeGen/X86/mask-beforefirst.ll
+12-2llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+362-22 files

LLVM/project aa9bb23 — llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/InstCombine mask-beforefirst.ll

[ValueTracking] Mark mask.beforefirst as propagating poison

This allows us to combine some logical ands/ors to regular ands/ors.
DeltaFile
+2-2llvm/test/Transforms/InstCombine/mask-beforefirst.ll
+1-0llvm/lib/Analysis/ValueTracking.cpp
+3-22 files

LLVM/project f35e12f — llvm/test/Transforms/InstCombine mask-beforefirst.ll

Precommit tests
DeltaFile
+26-0llvm/test/Transforms/InstCombine/mask-beforefirst.ll
+26-01 files

LLVM/project cd3be30 — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify/ConstProp mask-beforefirst.ll

[ConstantFolding] Add constant folding for mask.beforefirst (#234472)

Poison lanes poison the entire result, and undef elements are ignored

Assisted-by: Opus 5.5
DeltaFile
+58-0llvm/test/Transforms/InstSimplify/ConstProp/mask-beforefirst.ll
+26-0llvm/lib/Analysis/ConstantFolding.cpp
+84-02 files

LLVM/project a12a9d9 — llvm/lib/TableGen TGParser.h TGParser.cpp

[TableGen] Remove unused AllowSelfAssignment parameter of SetValue. NFC. (#234917)

This was added in 1e23ed9eaa7c to allow setting NAME to a reference to
itself when instantiating multiclass defs. That caller was removed in
420e28c78c9f, and since then every caller has passed false.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+6-9llvm/lib/TableGen/TGParser.cpp
+1-2llvm/lib/TableGen/TGParser.h
+7-112 files

LLVM/project 5b5ba23 — llvm/test/Transforms/LoopVectorize compress-idioms.ll

Add comment
DeltaFile
+1-0llvm/test/Transforms/LoopVectorize/compress-idioms.ll
+1-01 files

LLVM/project 967d9cc — llvm/lib/Transforms/Vectorize VPlanConstruction.cpp VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize compress-idioms.ll

Fix single iteration handling
DeltaFile
+48-0llvm/test/Transforms/LoopVectorize/compress-idioms.ll
+7-5llvm/lib/Transforms/Vectorize/VPlan.h
+5-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-3llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+2-2llvm/test/Transforms/LoopVectorize/VPlan/compress-idioms.ll
+63-125 files

LLVM/project 8db461d — clang/tools/c-index-test CMakeLists.txt c-index-test.c

[SystemZ][z/OS] fix clang/test/Index on z/OS by calling the correct basename() function (#234617)

This patch fixes lit tests in clang/test/Index by calling the z/OS
basename function
https://www.ibm.com/docs/en/zos/3.1.0?topic=functions-basename-return-last-component-path-name
DeltaFile
+11-1clang/tools/c-index-test/c-index-test.c
+9-0clang/tools/c-index-test/CMakeLists.txt
+20-12 files

LLVM/project eddc136 — clang/lib/Analysis CFG.cpp, clang/test/Analysis auto-obj-dtors-cfg-output.cpp scopes-cfg-output.cpp

[clang][CFG] Fix range-for iterator initialization order (#234467)

The CFG builder adds statements in reverse execution order. Add the
range-for end declaration before the begin declaration so that the
resulting CFG initializes begin before end.

This bug was introduced in **Clang 3.9.0**. Correcting the
initialization order also restores CFGScopeBegin markers for the hidden
range and begin variables. All three hidden variables now have matching
scope-begin and scope-end markers, with scopes ending in reverse order
in the loop’s scope-exit block.

Add a regression covering distinct iterator and sentinel types with
non-trivial destructors, checking initialization and reverse destruction
order with rich constructors both enabled and disabled. Update the
affected CFG dump expectations and lifetime-safety diagnostic
expectations.

Validation: all 28 selected CFG and range-for Analysis tests and all 24

    [3 lines not shown]
DeltaFile
+51-0clang/test/Analysis/cfg-range-for-init-order.cpp
+12-10clang/test/Analysis/scopes-cfg-output.cpp
+6-6clang/test/Analysis/auto-obj-dtors-cfg-output.cpp
+3-2clang/lib/Analysis/CFG.cpp
+2-2clang/test/Sema/LifetimeSafety/invalidations.cpp
+74-205 files

LLVM/project 98e41be — llvm/lib/Target/AArch64 SVEInstrFormats.td

Add mayraiseFPException
DeltaFile
+1-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+1-01 files

LLVM/project 143f848 — clang/include/clang/CIR/Dialect/Builder CIRBaseBuilder.h, clang/lib/CIR/CodeGen CIRGenBuiltinAArch64.cpp

[CIR][AArch64] Use CIR float types in getSVEType

getSVEType built the bf16 and f32 vectors from mlir::Builder's
getBF16Type() and getF32Type(), which return builtin MLIR types.
!cir.vector only accepts CIR element types, so an assertions build
aborts in VectorType::get and a release build creates an invalid type.
Use getBfloat16Ty() and getSingleTy(), as the f16 and f64 cases do.

No SVE builtin reaches these cases yet, so a lit test can't cover them.
Instead, CIRBaseBuilderTy now deletes mlir::Builder's builtin float
getters, so this mistake fails to compile.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+10-0clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h
+2-2clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+12-22 files

LLVM/project b96795d — llvm/lib/Analysis LoopAccessAnalysis.cpp, llvm/test/Analysis/LoopAccessAnalysis unknown-dependence-retry-with-runtime-checks.ll retry-runtime-checks-after-dependence-analysis-forked-pointers.ll

[LAA] Keep known dependences on retry with runtime checks (#231454)

Retrying with runtime checks cleared all recorded dependences, including
known dependences whose accesses are not checked against each other.
Interleaved access analysis could then reorder those accesses and hoist
a strided load across a store it depends on.

Drop only unknown dependences, which the runtime checks cover, and keep
known dependences to constrain reordering. This also keeps the ordering
for safe pairs that #232530 stops checking within erased classes.

The new case in `interleaved-accesses-retry-runtime-checks.ll` has an
interleave group that hoists the load of `A[2i]` above the previous
iteration's store to it; the existing case is fixed too. The LAA print
tests now list the kept dependences.

Assisted-by: Claude Code, Codex
DeltaFile
+136-9llvm/test/Transforms/LoopVectorize/interleaved-accesses-retry-runtime-checks.ll
+40-0llvm/test/Analysis/LoopAccessAnalysis/retry-runtime-checks-after-dependence-analysis.ll
+6-3llvm/lib/Analysis/LoopAccessAnalysis.cpp
+8-0llvm/test/Analysis/LoopAccessAnalysis/unknown-dependence-retry-with-runtime-checks.ll
+8-0llvm/test/Analysis/LoopAccessAnalysis/retry-runtime-checks-after-dependence-analysis-forked-pointers.ll
+8-0llvm/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll
+206-123 files not shown
+222-139 files

LLVM/project 7a2f880 — clang/include/clang/CIR/Dialect/IR CIRTypes.td, clang/lib/CIR/Dialect/IR CIRTypes.cpp

[CIR] Restrict union tail padding to integers (#233897)

CIRGen pads a union's tail with !u8i or !cir.array<!u8i x N>, but the
verifier accepted any padding type. Other types broke consumers that
size the union: incomplete-record padding asserted in
computeStructSize, and scalable-vector padding made CallConvLowering
emit a byval of meaningless size.

The verifier now requires the padding to be an integer or an array of
integers. This also covers the earlier void-padding check.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+32-0clang/test/CIR/IR/invalid-union-padding.cir
+11-2clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+4-3clang/include/clang/CIR/Dialect/IR/CIRTypes.td
+2-2clang/unittests/CIR/UnionTypeSizeTest.cpp
+1-1clang/test/CIR/IR/invalid-void-member.cir
+50-85 files

LLVM/project 2487d72 — clang/unittests/CIR ControlFlowTest.cpp, mlir/lib/Interfaces ControlFlowInterfaces.cpp

Reland "[mlir] Fix false positive loops in RegionBranchOpInterface::hasLoop"

Relands #233784, reverted in #234573 because it broke two CIR unit
tests.

Those tests expected hasLoop() to be true for cir.await and
cir.coroutine, although neither has a cycle: resume is reachable from
ready both directly and through suspend, and the coroutine reaches exit
and destroy along several paths. That was the false positive this change
fixes. The relanded change updates both expectations to false.

Original description:

`RegionBranchOpInterface::hasLoop` reported a loop whenever its
traversal popped a region it had already visited. The worklist gets one
entry per successor of each terminator, so a region reachable along two
paths was popped twice even without a cycle, for example when two
terminators of a region branch to the same successor region.


    [8 lines not shown]
DeltaFile
+92-68mlir/lib/Interfaces/ControlFlowInterfaces.cpp
+129-1mlir/unittests/Interfaces/ControlFlowInterfacesTest.cpp
+2-5clang/unittests/CIR/ControlFlowTest.cpp
+223-743 files

LLVM/project 3fdac7d — llvm/test/CodeGen/X86 bfloat-conversion-vector.ll fminimum-fmaximum.ll

[X86] Expand f32-to-bf16 conversions without libcalls (#221225)

This adds a libcall-free fallback for f32-to-bf16 conversions when
native bf16 instructions are unavailable. It was split from #221052 so
it can be reviewed independently of the denormal-mode policy discussed
there.

X86 currently lowers these conversions to `__truncsfbf2`. Vector
conversions may be scalarized into one call per lane:

```asm
callq __truncsfbf2 at PLT
callq __truncsfbf2 at PLT
; ...
```

This change reuses the generic round-to-nearest-even `expandFP_ROUND`
implementation, producing ordinary integer operations instead:


    [22 lines not shown]
DeltaFile
+1,740-729llvm/test/CodeGen/X86/bfloat.ll
+945-983llvm/test/CodeGen/X86/atomic-load-store.ll
+1,011-442llvm/test/CodeGen/X86/fminimumnum-fmaximumnum.ll
+767-545llvm/test/CodeGen/X86/bfloat-calling-conv.ll
+591-419llvm/test/CodeGen/X86/fminimum-fmaximum.ll
+417-0llvm/test/CodeGen/X86/bfloat-conversion-vector.ll
+5,471-3,11815 files not shown
+6,078-3,51421 files

LLVM/project efcf0d4 — bolt Maintainers.md

[BOLT] Hand over test infra maintainer duties (#234103)

Former maintainer Paschalis Mpeis has handed over test infra maintainer
duties to Asher Dobrescu.
DeltaFile
+2-2bolt/Maintainers.md
+2-21 files

LLVM/project 9931574 — llvm/test/Transforms/LoopVectorize/WebAssembly/CostModel memory-interleave.ll int-mac-reduction-costs.ll

[NFC][WebAssembly] Precommit tests (#234908)

Cost model tests for --vectorizer-maxmimize-bandwidth.
DeltaFile
+432-1llvm/test/Transforms/LoopVectorize/WebAssembly/CostModel/int-mac-reduction-costs.ll
+136-0llvm/test/Transforms/LoopVectorize/WebAssembly/CostModel/memory-interleave.ll
+568-12 files

LLVM/project ade5673 — llvm/include/llvm/IR IRBuilder.h, llvm/lib/IR Core.cpp

[llvm-c][IRBuilder] Restore LLVMBuilderRef unwrap (#234902)

This restores the public export of `unwrap(LLVMBuilderRef)` removed in
https://github.com/llvm/llvm-project/pull/234620. Rust uses it to extend
the C API with additional functions, which seems like a reasonable
enough use-case to support.
DeltaFile
+9-0llvm/unittests/IR/IRBuilderTest.cpp
+1-3llvm/lib/IR/Core.cpp
+3-0llvm/include/llvm/IR/IRBuilder.h
+13-33 files

LLVM/project 7fe8454 — clang/lib/Basic/Targets SPIR.h, clang/test/CodeGenHIP amdgpu-flat-atomic-fadd.hip

[clang][SPIR-V] Treat AMDGCN builtin pointers in AS 0 as generic (#234504)

In AMDGCN builtins AS 0 means flat, but SPIR-V reads it as Function

This broke flat atomics such as __builtin_amdgcn_flat_atomic_fadd_v2f16
DeltaFile
+112-20clang/test/CodeGenHIP/amdgpu-flat-atomic-fadd.hip
+9-0clang/lib/Basic/Targets/SPIR.h
+121-202 files

LLVM/project ef55d7a — llvm/docs AMDGPUUsage.rst, llvm/test/CodeGen/NVPTX store-sm90.ll atomicrmw-elementwise-sm90.ll

Merge remote-tracking branch 'upstream/main' into users/riverdave/cir/opnew-noalias-memory
DeltaFile
+31,848-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm60.ll
+31,310-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+22,584-0llvm/test/CodeGen/NVPTX/load-sm90.ll
+22,541-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+0-22,210llvm/docs/AMDGPUUsage.rst
+21,644-0llvm/test/CodeGen/NVPTX/store-sm90.ll
+129,927-22,2108,333 files not shown
+697,315-237,4838,339 files

LLVM/project f8da81f — .github/workflows libc-fullbuild-tests.yml

Change from aarch64 runner to x86
DeltaFile
+1-1.github/workflows/libc-fullbuild-tests.yml
+1-11 files