LLVM/project 9a9daa9 — clang/docs ReleaseNotes.md, clang/lib/Parse ParseExprCXX.cpp

[Clang] Keep scope annotations covering typo-corrected qualifiers (#223978)

Fixes #221890

While tentatively deciding whether `(void(foo::S<int>))` is a type-id,
the parser annotates `foo::S<int>`. Lookup of `S` in `foo` fails, typo
correction suggests plain `S`, and Sema rebuilds the `CXXScopeSpec`
without the qualifier. The annotation token takes its start from that
scope specifier, so it only covers `S<int>` and the already-consumed
`foo ::` tokens are never replaced in the token cache. They resurface
after the tentative parse backtracks, every later parse sees `foo ::
<type>`, and the second `isTypeIdInParens()` in
`ParseCXXAmbiguousParenExpression` contradicts the first.

The parser owns the invariant that an annotation replaces every token
consumed to produce it, so the fix lives in
`ParseOptionalCXXScopeSpecifier`. After each Sema call that can rewrite
the qualifier through typo correction, the scope specifier is re-ranged
over the tokens actually consumed. When the qualifier was dropped
entirely, the template-id annotation is extended back over those tokens
instead. Sema and the typo-correction recovery are untouched.
DeltaFile
+31-13clang/lib/Parse/ParseExprCXX.cpp
+29-0clang/test/Parser/cxx-ambig-paren-expr.cpp
+4-0clang/docs/ReleaseNotes.md
+64-133 files

LLVM/project 3108485 — llvm/lib/CodeGen RegAllocFast.cpp, llvm/test/CodeGen/X86 virtreg-physreg-def-regallocfast.mir

[RegAllocFast] Order partial defs before other defs (#222882)

```
%0:gr64_with_sub_8bit = COPY $rax
%0.sub_32bit, %1:gr32 = MULX32rr $ecx, implicit $edx
```

The partial def of %0 is live-through: it reads the rest of %0, so it
must avoid the registers the instruction reads ($ecx, $edx) and is meant
to be allocated before an ordinary def like %1, which may share a
register with a use. The comparator in findAndSortDefOperandIndexes,
from the 2020 rewrite c8757ff3aa7d ("RegAllocFast: Rewrite and
improve"), tests `getSubReg() == 0`, the inverse of the allocation
sites, so %1 is allocated first and takes $eax; %0 then misses its hint
$rax, lands in $rsi, and the copy from $rax stays.

Share one isLiveThroughDef predicate between the ordering and the
allocation. %0 now takes $rax, the copy is deleted, and %1 takes $ecx.

Aided by Opus 5
DeltaFile
+17-24llvm/lib/CodeGen/RegAllocFast.cpp
+20-0llvm/test/CodeGen/X86/virtreg-physreg-def-regallocfast.mir
+37-242 files

LLVM/project d8818bd — flang/examples/DirectivesPlugin CMakeLists.txt DirectivesPlugin.cpp, flang/test/Examples plugin-directives-parse.f90 plugin-directives-module.f90

[flang] Add an example plugin defining compiler directives

flangDirectivesPlugin registers directives with the prefix "example" (a
callback on a procedure, a watch on a variable or COMMON block, and a note on
either). The tests check their lowering to fir.directives attributes, the
semantic and parse errors, and their round trip through module files.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+62-0flang/test/Examples/plugin-directives-errors.f90
+59-0flang/test/Examples/plugin-directives.f90
+57-0flang/test/Examples/plugin-directives-module.f90
+47-0flang/examples/DirectivesPlugin/DirectivesPlugin.cpp
+19-0flang/test/Examples/plugin-directives-parse.f90
+9-0flang/examples/DirectivesPlugin/CMakeLists.txt
+253-02 files not shown
+255-08 files

LLVM/project a9b0b3d —

[Analysis] Remove unused functions (NFC) (#228674)
DeltaFile
+0-00 files

LLVM/project 0f598a0 — llvm/include/llvm/Analysis ScalarEvolution.h AliasAnalysis.h, llvm/lib/Analysis ScalarEvolution.cpp TypeBasedAliasAnalysis.cpp

[Analysis] Remove unused functions (NFC) (#228674)
DeltaFile
+0-12llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp
+0-10llvm/include/llvm/Analysis/AliasAnalysis.h
+0-4llvm/lib/Analysis/ScalarEvolution.cpp
+0-3llvm/include/llvm/Analysis/ScalarEvolution.h
+0-294 files

LLVM/project e216d60 — llvm/test/Transforms/SLPVectorizer/X86 c-ray.ll

Fix test

Created using spr 1.3.7
DeltaFile
+9-7llvm/test/Transforms/SLPVectorizer/X86/c-ray.ll
+9-71 files

LLVM/project 6ceeb2c — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 loop-accumulator-reduction.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+16-16llvm/test/Transforms/SLPVectorizer/AArch64/loop-accumulator-reduction.ll
+22-8llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+3-4llvm/test/Transforms/SLPVectorizer/X86/dependent-seeds.ll
+41-283 files

LLVM/project 0ee7269 — llvm/include/llvm/ProfileData SampleProf.h, llvm/include/llvm/Support Compiler.h

[Support] Clarify purpose of LLVM_DEPRECATED (#228367)

Rename the macro to LLVM_DEPRECATED_WITH_FIXIT, to clarify that is is
used for deprecations where a machine-applicable fix-it exists (which is
only pure rename deprecations).
DeltaFile
+5-2llvm/include/llvm/Support/Compiler.h
+2-1llvm/include/llvm/ProfileData/SampleProf.h
+1-1llvm/include/llvm/TableGen/Record.h
+8-43 files

LLVM/project da43ad3 — clang-tools-extra/clangd CodeComplete.cpp, clang-tools-extra/clangd/unittests CodeCompleteTests.cpp

[clangd] Fix header-name completion replace ranges (#225473)

Handle header-name completion as a special case for replace edits. Its
insert range already extends past the identifier, including delimiters
such as '"' and '>'. Reuse that range for replace edits so that the
insert range remains a prefix of the replace range, as required by the
LSP specification.

Add a unit test covering this case.

Fixes llvm/llvm-project#225326
DeltaFile
+56-0clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+7-3clang-tools-extra/clangd/CodeComplete.cpp
+63-32 files

LLVM/project 7e48d8c —

[clang] Migrate away from PointerUnion::dyn_cast (NFC) (#228673)
DeltaFile
+0-00 files

LLVM/project 777d2ba — clang/lib/Sema SemaTemplateInstantiate.cpp

[clang] Migrate away from PointerUnion::dyn_cast (NFC) (#228673)
DeltaFile
+2-2clang/lib/Sema/SemaTemplateInstantiate.cpp
+2-21 files

LLVM/project e2a9a93 — llvm/test/Transforms/SLPVectorizer/AArch64 loop-accumulator-reduction.ll, llvm/test/Transforms/SLPVectorizer/X86 dependent-seeds.ll

[SLP][NFC]Add extra test with missed vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/228716
DeltaFile
+106-0llvm/test/Transforms/SLPVectorizer/AArch64/loop-accumulator-reduction.ll
+33-0llvm/test/Transforms/SLPVectorizer/X86/dependent-seeds.ll
+139-02 files

LLVM/project abf60e5 — llvm/test/Transforms/SLPVectorizer/AArch64 loop-accumulator-reduction.ll, llvm/test/Transforms/SLPVectorizer/X86 dependent-seeds.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+106-0llvm/test/Transforms/SLPVectorizer/AArch64/loop-accumulator-reduction.ll
+33-0llvm/test/Transforms/SLPVectorizer/X86/dependent-seeds.ll
+139-02 files

LLVM/project 971833e — clang/docs ReleaseNotes.md LanguageExtensions.md, clang/lib/AST ExprConstant.cpp

[Clang] Fix crash in alignment builtins with null pointers (#224549)

Clang can crash when evaluating __builtin_align_up,
__builtin_align_down, or __builtin_is_aligned with a null pointer.

Avoid querying base alignment for pointers without an underlying object
    during constant evaluation.
    
    Null pointers are handled as always aligned values, while other
    base-less pointers are rejected rather than interpreted using their
    numeric address.

Assisted-by: GPT-5.6

AI was used to assist with code analysis, debugging, and drafting the PR
description. I personally debugged, reviewed and verified the changes,
tested the code, and fully understand the submitted contribution.

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

Co-authored-by: Timm Baeder <tbaeder at redhat.com>
DeltaFile
+26-0clang/lib/AST/ExprConstant.cpp
+24-0clang/test/Sema/builtin-align.c
+16-0clang/lib/AST/ByteCode/InterpBuiltin.cpp
+9-0clang/test/SemaCXX/builtin-align-cxx.cpp
+5-0clang/docs/LanguageExtensions.md
+4-0clang/docs/ReleaseNotes.md
+84-06 files

LLVM/project 2aa63fe — mlir/lib/Dialect/SparseTensor/IR SparseTensorDialect.cpp, mlir/test/Dialect/SparseTensor roundtrip_encoding.mlir sparse_foreach.mlir

[mlir][sparse] Order the inferred lvlToDim results by dimension (#227674)
DeltaFile
+17-0mlir/test/Dialect/SparseTensor/sparse_foreach.mlir
+9-4mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp
+13-0mlir/test/Dialect/SparseTensor/roundtrip_encoding.mlir
+39-43 files

LLVM/project 36207c0 — clang/lib/AST/ByteCode Compiler.cpp, clang/test/AST/ByteCode cxx26.cpp

[clang][bytecode] Handle trivial CXXInheritedCtorInitExprs (#228352)
DeltaFile
+9-0clang/test/AST/ByteCode/cxx26.cpp
+4-2clang/lib/AST/ByteCode/Compiler.cpp
+13-22 files

LLVM/project f38c56a — clang-tools-extra/docs/clang-tidy/checks/readability uppercase-literal-suffix.md trivial-switch.md

[clang-tidy][docs] Rewrite readability check docs to Markdown [5/5] (#222033)

Tracking issue: #201242

See the [migration guide] for more information.

[migration guide]:

https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines

This is the fifth part of rewriting check documentations in readability
module from reST to MyST Markdown.

AI Usage: This was prepared with rnk's fork of rst2myst and
GPT5.6-assisted (both Codex and AmpCode) cleanup.
I manually verified that the documentation renders as expected.

Preview site:
https://broken.life/llvm-staging/readability-markdown-port/index.html

    [3 lines not shown]
DeltaFile
+123-133clang-tools-extra/docs/clang-tidy/checks/readability/suspicious-call-argument.md
+54-58clang-tools-extra/docs/clang-tidy/checks/readability/string-compare.md
+43-43clang-tools-extra/docs/clang-tidy/checks/readability/use-anyofallof.md
+37-41clang-tools-extra/docs/clang-tidy/checks/readability/trailing-comma.md
+34-35clang-tools-extra/docs/clang-tidy/checks/readability/trivial-switch.md
+32-34clang-tools-extra/docs/clang-tidy/checks/readability/uppercase-literal-suffix.md
+323-3443 files not shown
+389-4119 files

LLVM/project 5e3f479 — clang-tools-extra/docs/clang-tidy/checks/readability trailing-comma.rst trailing-comma.md

[clang-tidy][docs] Rename readability check docs to Markdown [5/5] (#222032)

Tracking issue: #201242

See the [migration guide] for more information.

[migration guide]:

https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines

This is the fifth part of the mechanical rename of the check
documentations in readability module.
The rewrite is provided by the next PR in this stack.
DeltaFile
+0-242clang-tools-extra/docs/clang-tidy/checks/readability/suspicious-call-argument.rst
+242-0clang-tools-extra/docs/clang-tidy/checks/readability/suspicious-call-argument.md
+0-87clang-tools-extra/docs/clang-tidy/checks/readability/string-compare.rst
+87-0clang-tools-extra/docs/clang-tidy/checks/readability/string-compare.md
+0-68clang-tools-extra/docs/clang-tidy/checks/readability/trailing-comma.rst
+68-0clang-tools-extra/docs/clang-tidy/checks/readability/trailing-comma.md
+397-39712 files not shown
+664-66418 files

LLVM/project 1f1a5b3 — flang/lib/Semantics openmp-utils.cpp check-omp-structure.cpp, flang/test/Lower/OpenMP compound-version-override.f90

[flang][OpenMP] Remember decision of allowing past/future clause (#227419)

When a deprecated or a future clause is used on a directive, and it is
allowed with a warning, remember that decision and consider that clause
allowed on that directive in all subsequent checks.

Introduce OpenMPDeprecated and OpenMPFuture warning categories
to guard these warnings (and the corresponding `-Wopenmp-deprecated`
and `-Wopenmp-future` options).
DeltaFile
+64-29flang/lib/Semantics/check-omp-structure.cpp
+24-24flang/test/Semantics/OpenMP/if-clause-45.f90
+34-5flang/lib/Semantics/openmp-utils.cpp
+33-0flang/test/Lower/OpenMP/compound-version-override.f90
+15-15flang/test/Semantics/OpenMP/declare-target02.f90
+13-13flang/test/Semantics/OpenMP/declare-target01.f90
+183-8625 files not shown
+312-13231 files

LLVM/project cd8d3f0 — clang/docs ClangFormatStyleOptions.md, clang/include/clang/Format Format.h

[clang-format] Allow one indent level before explicit access labels (#227704)

## Summary

With `IndentAccessModifiers: true`, clang-format indents record members
two levels even when the record has no explicit access label. Extend
`IndentAccessModifiers` with a third mode to allow one level until the
first explicit access label:

- `Never` (`false`): indent members one level and use
`AccessModifierOffset` for access labels.
- `Always` (`true`): indent members two levels, even without an explicit
access label.
- `AfterFirstAccessModifier`: indent members one level before the first
explicit access label and two levels from that label onward.

```yaml
IndentAccessModifiers: AfterFirstAccessModifier
```

    [24 lines not shown]
DeltaFile
+101-1clang/unittests/Format/FormatTest.cpp
+45-24clang/docs/ClangFormatStyleOptions.md
+41-25clang/include/clang/Format/Format.h
+45-10clang/lib/Format/UnwrappedLineParser.cpp
+16-1clang/lib/Format/Format.cpp
+13-1clang/unittests/Format/ConfigParseTest.cpp
+261-625 files not shown
+293-6611 files

LLVM/project fd75db8 — clang-tools-extra/docs/clang-tidy/checks/readability string-compare.md

Update clang-tools-extra/docs/clang-tidy/checks/readability/string-compare.md

Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
DeltaFile
+1-2clang-tools-extra/docs/clang-tidy/checks/readability/string-compare.md
+1-21 files

LLVM/project 284afa9 — flang/lib/Semantics check-omp-structure.h check-omp-structure.cpp

[flang][OpenMP] Move leftover functions from structure to loop, NFC (#228705)

There were some loop-related functions still left in the
check-omp-structure.cpp file. Move them to check-omp-loop.cpp.
DeltaFile
+0-142flang/lib/Semantics/check-omp-structure.cpp
+142-0flang/lib/Semantics/check-omp-loop.cpp
+2-2flang/lib/Semantics/check-omp-structure.h
+144-1443 files

LLVM/project 4302024 — flang/lib/Semantics check-omp-structure.h check-omp-structure.cpp

[flang][OpenMP] Move leftover functions from structure to loop, NFC

There were some loop-related functions still left in the
check-omp-structure.cpp file. Move them to check-omp-loop.cpp.
DeltaFile
+0-142flang/lib/Semantics/check-omp-structure.cpp
+142-0flang/lib/Semantics/check-omp-loop.cpp
+2-2flang/lib/Semantics/check-omp-structure.h
+144-1443 files

LLVM/project 1e60b85 — llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp, llvm/test/CodeGen/PowerPC ppcf128-constant-bitcast.ll

[PowerPC][SDAG] fix bitcast on ppc_f128 swapping the two halves (#208969)

fixes https://github.com/llvm/llvm-project/issues/44482

This is a long-standing issue
https://github.com/llvm/llvm-project/issues/44482, you can also see the
discrepancy in this small C program compiled with clang and GCC
https://godbolt.org/z/KK1q1EozM.

The representation of ppc_fp128 is endian-agnostic in that its
high-order double is stored at the lower address.

For example, 27.0 is represented in memory as `[0x403b000000000000,
0x0000000000000000]`. Bitcasting these 128 bits as an i128 on
little-endian means the upper 64 bits are `0x0000000000000000`, the
lower are `0x403b000000000000`.

But on big-endian the interpretation of the bytes is flipped, the upper
bits are now `0x403b000000000000` while the lower are in

    [8 lines not shown]
DeltaFile
+89-0llvm/test/CodeGen/PowerPC/ppcf128-constant-bitcast.ll
+17-1llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+106-12 files

LLVM/project 2c7b0d1 — orc-rt/test/unit/bedrock InProcessControllerAccessTest.cpp

[orc-rt] Use the Error matchers in InProcessControllerAccessTest (#228702)

Use the Error matchers introduced in 4c8a437d0487 in place of cantFail
on calls that can fail, so that a failure is reported as a test failure
rather than aborting the test binary (or, with assertions disabled,
going unnoticed).
DeltaFile
+3-1orc-rt/test/unit/bedrock/InProcessControllerAccessTest.cpp
+3-11 files

LLVM/project 1a2b0e2 — offload/plugins-nextgen/amdgpu/dynamic_hsa hsa.h hsa_ext_amd.h, offload/plugins-nextgen/amdgpu/src rtl.cpp

[offload] Use HSA SVM for AMDGPU shared memory
DeltaFile
+162-21offload/plugins-nextgen/amdgpu/src/rtl.cpp
+68-0offload/test/api/omp_device_managed_memory_ops.c
+31-0offload/test/api/amdgpu_managed_memory_accessible.c
+23-1offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa_ext_amd.h
+13-0openmp/docs/design/Runtimes.md
+1-0offload/plugins-nextgen/amdgpu/dynamic_hsa/hsa.h
+298-221 files not shown
+299-227 files

LLVM/project 21970fa — llvm/lib/Target/Mips MipsScheduleP5600.td MipsScheduleI6400.td, llvm/test/CodeGen/Mips/GlobalISel/llvm-ir fabs_vec.ll

[Mips][MSA] Lower vector fabs to BCLRI (#228532)

FMAX_A selects an original operand by magnitude and preserves its sign,
so fmax_a(x, x) does not implement fabs. Expand FABS_W and FABS_D to
clear bit 31 and bit 63 with BCLRI, and update their scheduling to match
the bit-clear instructions.

Fixes #228384.
DeltaFile
+2-4llvm/lib/Target/Mips/MipsMSAInstrInfo.td
+2-2llvm/test/CodeGen/Mips/msa/arithmetic_float.ll
+2-2llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/fabs_vec.ll
+2-2llvm/lib/Target/Mips/MipsScheduleI6400.td
+1-1llvm/test/CodeGen/Mips/msa/buildvector-undef-loop.ll
+1-1llvm/lib/Target/Mips/MipsScheduleP5600.td
+10-121 files not shown
+11-137 files

LLVM/project 321fea5 — llvm/lib/Target/Mips MipsMSAInstrInfo.td, llvm/test/CodeGen/Mips/msa compare_float.ll

[Mips][MSA] Fix commutability of unordered comparisons (#228567)

Remove IsCommutable from FCULT_W/D and FCULE_W/D, whose predicates are
directional. Extend the existing floating-point comparison tests to
check that reversed comparisons produce separate results.

Fixes: #228422
DeltaFile
+37-12llvm/test/CodeGen/Mips/msa/compare_float.ll
+4-8llvm/lib/Target/Mips/MipsMSAInstrInfo.td
+41-202 files

LLVM/project e500488 — orc-rt/test/unit/tools OptionParserTest.cpp

[orc-rt] Use the Error matchers in OptionParserTest (#228701)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in OptionParserTest.
DeltaFile
+27-33orc-rt/test/unit/tools/OptionParserTest.cpp
+27-331 files

LLVM/project cb474be — llvm/test/CodeGen/X86 win64-eh-unwindv3-split-large.ll win64-eh-unwindv2-push-pop-stack-alloc.mir

[X86] Don't skip frame setup/destroy on SEH pseudos and regenerate tests (#225445)

As in title. Skipping setting setup/destroy flags caused pseudos to be
wrongly reordered by scheduling
DeltaFile
+34-34llvm/test/CodeGen/X86/win64-eh-unwindv3-too-many-epilog-ops.mir
+28-28llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir
+23-21llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir
+26-18llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir
+18-18llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir
+18-0llvm/test/CodeGen/X86/win64-eh-unwindv3-split-large.ll
+147-1197 files not shown
+171-13613 files