LLVM/project 906ac96 — bolt/lib/Rewrite DWARFRewriter.cpp

[BOLT] Remove unneeded mc::RegisterMCTargetOptionsFlags (#239910)

PR #100800 added this registration because DwarfStreamer::init called
mc::InitMCTargetOptionsFromFlags, which asserts if the options are not
registered, and #100771 removed the registration from DWP.
DwarfStreamer also no longer needs these MC tool options.
DeltaFile
+0-3bolt/lib/Rewrite/DWARFRewriter.cpp
+0-31 files

LLVM/project afe37d5 — llvm/lib/Target/X86 X86AvoidStoreForwardingBlocks.cpp

[X86] Fix -Wunused-variable from #239777 (#239902)

Deleted some uses that left other variables unused outside of LLVM_DEBUG
which is only enabled with LLVM_ENABLE_ASSERTIONS, leaving release
builds with -Wunused-variable.

Mark [[maybe_unused]] to prevent the warning as-is standard.
DeltaFile
+2-2llvm/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
+2-21 files

LLVM/project 4848b5d — llvm/tools/llvm-mc-assemble-fuzzer llvm-mc-assemble-fuzzer.cpp, llvm/tools/llvm-ml llvm-ml.cpp

[llvm-ml,llvm-mc-assemble-fuzzer] Remove unused MCTargetOptionsCommandFlags (#239906)
DeltaFile
+0-2llvm/tools/llvm-mc-assemble-fuzzer/llvm-mc-assemble-fuzzer.cpp
+0-1llvm/tools/llvm-ml/llvm-ml.cpp
+0-32 files

LLVM/project 69297a7 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[SLP] Pruning when there is no Undef

A poison value and concrete value can always pass
isGuaranteedNotToBePoison. Nowadays, we generates very few undef
value. So the prunning here makes sense as we try to do linear check
to find a possible undef instead of calling the very expensive
isGuaranteedNotToBePoison.
DeltaFile
+11-6llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+11-61 files

LLVM/project 7d9488e — llvm/lib/DWARFLinker/Classic DWARFStreamer.cpp, llvm/lib/DWARFLinker/Parallel DebugLineSectionEmitter.h DWARFEmitterImpl.cpp

[DWARFLinker] Remove mc::RegisterMCTargetOptionsFlags (#239904)

dsymutil, llvm-dwarfutil, and the DwarfGenerator unittest never
parse/use these MC command line options. These were added around 2020
for "Move DwarfStreamer into DWARFLinker".
DeltaFile
+0-4llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
+0-3llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp
+0-3llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
+0-2llvm/lib/DWARFLinker/Parallel/DebugLineSectionEmitter.h
+0-2llvm/lib/DWARFLinker/Parallel/DWARFEmitterImpl.cpp
+0-2llvm/lib/DWARFLinker/Classic/DWARFStreamer.cpp
+0-166 files

LLVM/project 2322199 — clang/lib/AST/ByteCode Descriptor.h

[clang][bytecode] Remove unused InlineDescriptor constructor (NFC) (#239688)

The last callers of InlineDescriptor::InlineDescriptor were removed on
November 6, 2026 in commit 0a0e65b2e8ff6043d85ab07c4d23ea18bf0b9b7d.

Assisted-by: Antigravity
DeltaFile
+0-6clang/lib/AST/ByteCode/Descriptor.h
+0-61 files

LLVM/project 5fe5e53 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp

AArch64: Use the DAG's libcall info (#239895)

Use the analysis libcall info instead of the static copy in
TargetLowering, which will eventually be removed.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+7-7llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+7-71 files

LLVM/project 03409e0 — llvm/lib/Target/BPF BPFUnwind.cpp, llvm/test/Assembler invoke-bpf-unwind-exit.ll

BPF: Stop lowering unwinding through nonexistent unwinder calls

BPF borrowed the DWARF EH pipeline in an unsound way. DwarfEHPrepare
turned resume into a call of _Unwind_Resume, which will never be
linked in. BPFUnwindLower later replaced it, and calls of
_Unwind_RaiseException, by matching callee names after register
allocation. This fixes the pass pipeline relying on these transient
calls to phantom functions.

Instead add an invokable llvm.bpf.unwind.exit intrinsic, similar to
wasm's throw intrinsics. BPFUnwindPrepare replaces resume with it so
no impossible call to _Unwind_Resume reaches selection.

The intrinsic selects to a pseudo which BPFUnwindLower turns into
either unwind_exit or a branch to the landing pad when invoked. The
pseudo clobbers nothing, so register allocation can be more aggressive
than when the function looked like an ordinary call.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+39-66llvm/lib/Target/BPF/BPFUnwind.cpp
+61-0llvm/test/CodeGen/BPF/unwind-prepare.ll
+55-0llvm/test/CodeGen/BPF/unwind-lower.mir
+4-25llvm/test/CodeGen/BPF/unwind.ll
+0-20llvm/test/CodeGen/BPF/unwind-own-raise.ll
+16-0llvm/test/Assembler/invoke-bpf-unwind-exit.ll
+175-1116 files not shown
+205-11712 files

LLVM/project dc550be — clang/docs ReleaseNotes.md, clang/include/clang/Basic DiagnosticSemaKinds.td

[clang][Sema] Recheck array size once the element type is complete (#219817)

Fixes #213855

`BuildArrayType` can't check an array's byte size when the element type
is still incomplete, for example an array of a class template
specialization that hasn't been instantiated yet. Nothing rechecked it
afterwards, so a `~2^67` byte array type survived as a valid field and
the first size query asserted in `getTypeInfoImpl`.

`RequireCompleteType` now checks the size of a constant array once it is
complete, using the same limit as `BuildArrayType`. The error reports
bytes (new `err_array_size_too_large`) since the element count was
already accepted. Uninitialized variable definitions now require the
whole array type to be complete rather than just the base element type,
as initialized ones already do.

LLM tools were used for this contribution. I've reviewed, built, and
tested the change myself before pushing to GitHub.
DeltaFile
+55-0clang/test/SemaCXX/array-size.cpp
+42-0clang/lib/Sema/SemaType.cpp
+7-0clang/lib/Sema/SemaDecl.cpp
+6-0clang/docs/ReleaseNotes.md
+2-1clang/include/clang/Sema/Sema.h
+2-0clang/include/clang/Basic/DiagnosticSemaKinds.td
+114-16 files

LLVM/project 105645b — llvm/lib/Target/X86 X86FlagsCopyLowering.cpp

X86: Remove clearKillFlags call in X86FlagsCopyLowering (#239893)

Kill flags on physical registers here are either never set by the time
this code runs or are on reserved or constant registers where they
carry no information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-3llvm/lib/Target/X86/X86FlagsCopyLowering.cpp
+0-31 files

LLVM/project a953018 — libcxx/docs/Status Cxx26Issues.csv, libcxx/test/std/utilities/expected/expected.expected/monadic transform_error.pass.cpp transform.pass.cpp

[libc++] Implement ADL tests for std::expected (#236608)

Resolves #105307
- LWG3973: `std::expected`'s monadic operations use `this->__val()`
rather than `**this`, so they are already ADL-proof. Added tests to
ensure an ADL-found `operator*` is never selected.

Resolves #171310
- LWG4015: Nothing to do but considered completed together with
`optional<T&>`. It fixes the const overloads of `std::optional`'s
monadic operations from LWG3973's exposition; libc++ uses `value()`
instead of a pointer so the issue is not present.

---------

Co-authored-by: A. Jiang <de34 at live.cn>
DeltaFile
+11-0libcxx/test/std/utilities/expected/expected.expected/monadic/transform_error.pass.cpp
+11-0libcxx/test/std/utilities/expected/expected.expected/monadic/transform.pass.cpp
+11-0libcxx/test/std/utilities/expected/expected.expected/monadic/or_else.pass.cpp
+11-0libcxx/test/std/utilities/expected/expected.expected/monadic/and_then.pass.cpp
+2-2libcxx/docs/Status/Cxx26Issues.csv
+46-25 files

LLVM/project 9fad776 — llvm/lib/Target/BPF BPFTargetMachine.cpp BPF.h

BPF: Register the unwind passes (#239891)

Give BPFUnwindPrepare and BPFUnwindLower names, so that tests can stop
after them or run them on MIR.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+5-0llvm/lib/Target/BPF/BPFUnwind.cpp
+2-0llvm/lib/Target/BPF/BPFTargetMachine.cpp
+2-0llvm/lib/Target/BPF/BPF.h
+9-03 files

LLVM/project 4048a37 — llvm/lib/CodeGen PreISelIntrinsicLowering.cpp

CodeGen: Stop using TargetLowering's libcall info in PreISelIntrinsicLowering

The TargetLowering copy of RuntimeLibcallsInfo should be deleted and
only the analysis should be used.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+6-3llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
+6-31 files

LLVM/project 5148cbe — llvm/lib CMakeLists.txt, llvm/lib/TargetParser CMakeLists.txt

[CMake] Enable -Werror=global-constructors for llvm/lib (#239678)

Enforce https://llvm.org/docs/CodingStandards.html#do-not-use-static-constructors
in Clang builds (GCC doesn't support -Wglobal-constructors), opting out
the 65 libraries that still have dynamic initializations (primarily due
to cl::opt options, see

https://discourse.llvm.org/t/rfc-declare-library-command-line-options-in-tablegen-one-struct-per-library/91877).

Remove TargetParser's own check. It is inverted, applying the flag only
where the std::mutex probe fails.

LLM-aided
DeltaFile
+83-0llvm/lib/CMakeLists.txt
+0-10llvm/lib/TargetParser/CMakeLists.txt
+83-102 files

LLVM/project 3d6ae84 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp

AArch64: Use the DAG's libcall info in call and DAG lowering

Use the analysis libcall info instead of the static copy in
TargetLowering, which will eventually be removed.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+7-7llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+7-71 files

LLVM/project b1d1568 — llvm/lib/Target/Hexagon HexagonOptAddrMode.cpp HexagonInstrInfo.cpp

Hexagon: Remove redundant clearKillFlags calls

HexagonOptAddrMode recomputes kill flags with Liveness::resetKills
after any change, so its clears are redundant.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-12llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
+0-2llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
+0-142 files

LLVM/project 99b2e8a — llvm/lib/Target/X86 X86FlagsCopyLowering.cpp

X86: Remove clearKillFlags call in X86FlagsCopyLowering

Kill flags on physical registers here are either never set by the time
this code runs or are on reserved or constant registers where they
carry no information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-3llvm/lib/Target/X86/X86FlagsCopyLowering.cpp
+0-31 files

LLVM/project e509cc7 — llvm/include/llvm/Analysis InlineCost.h, llvm/lib/Analysis DXILMetadataAnalysis.cpp AnalysisOptions.td

[Analysis] Port inliner threshold options to AnalysisOptions (#239650)

getInlineParams, getInlineParamsFromOptLevel, and
InlineConstants::getInstrCost take an LLVMContext. ModuleInlinerPass and
ModuleInlinerWrapperPass no longer default their InlineParams, which
read options during pass construction.

LLM-aided
DeltaFile
+64-100llvm/lib/Analysis/InlineCost.cpp
+23-0llvm/lib/Analysis/AnalysisOptions.td
+12-9llvm/lib/Passes/PassBuilderPipelines.cpp
+3-13llvm/lib/Analysis/DXILMetadataAnalysis.cpp
+7-6llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+8-4llvm/include/llvm/Analysis/InlineCost.h
+117-13214 files not shown
+157-16220 files

LLVM/project a7b386a — llvm/lib/Target/AArch64 AArch64MIPeepholeOpt.cpp AArch64InstrInfo.cpp

AArch64: Remove clearKillFlags calls

Kill flags are no longer permitted on virtual registers, but these
contexts may also see physical registers. Those physical register
kills are either never set by the time this code runs or are on
reserved or constant registers where they carry no information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-2llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+0-1llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+0-32 files

LLVM/project aa1a146 — llvm/include/llvm/CodeGen TargetLowering.h, llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp LegalizeVectorOps.cpp

SelectionDAG: Get libcall info from analysis, not TargetLowering (#239827)

TargetLowering's copy of the libcall info will eventually be
removed. Use the LibcallLoweringInfo analysis from SelectionDAG
instead.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+11-4llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+1-12llvm/include/llvm/CodeGen/TargetLowering.h
+2-1llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+1-1llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+1-1llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+16-195 files

LLVM/project 7fcc4f5 — llvm/lib/Target/BPF BPFTargetMachine.cpp BPF.h

BPF: Register the unwind passes

Give BPFUnwindPrepare and BPFUnwindLower names, so that tests can stop
after them or run them on MIR.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+5-0llvm/lib/Target/BPF/BPFUnwind.cpp
+2-0llvm/lib/Target/BPF/BPFTargetMachine.cpp
+2-0llvm/lib/Target/BPF/BPF.h
+9-03 files

LLVM/project 2cb6811 — orc-rt/include/orc-rt/bedrock/sps LookupInJITDylibSPS.h, orc-rt/lib/bedrock/sps LookupInJITDylibSPS.cpp

[orc-rt] Report lookup failures from sps::lookupInJITDylib (#239890)

sps::lookupInJITDylib's wire signature returned a bare
SPSSymbolLookupResult, so the controller had no in-band way to report
that the lookup itself failed (e.g. a missing required symbol, or a
materialization failure). The only option was an out-of-band error,
which is indistinguishable from a failure to call the controller.

This commit changes the controller handler's return type to
SPSExpected<SPSSymbolLookupResult>, matching the NativeDylibManager
lookup. The public API is unchanged: lookupInJITDylib flattens the
transport and lookup errors into the Expected<SymbolLookupResult> passed
to its continuation.

The unit tests now check both error paths separately.
DeltaFile
+38-14orc-rt/test/unit/bedrock/sps/LookupInJITDylibSPSTest.cpp
+12-6orc-rt/lib/bedrock/sps/LookupInJITDylibSPS.cpp
+3-1orc-rt/include/orc-rt/bedrock/sps/LookupInJITDylibSPS.h
+53-213 files

LLVM/project 8161b95 — llvm/lib/Target/BPF BPFTargetMachine.cpp BPF.h

BPF: Register the unwind passes

Give BPFUnwindPrepare and BPFUnwindLower names, so that tests can stop
after them or run them on MIR.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+5-0llvm/lib/Target/BPF/BPFUnwind.cpp
+2-0llvm/lib/Target/BPF/BPFTargetMachine.cpp
+2-0llvm/lib/Target/BPF/BPF.h
+9-03 files

LLVM/project 6ea7a2c — clang/docs ReleaseNotes.md, clang/lib/CodeGen CGStmtOpenMP.cpp

[clang][OpenMP] Fix assertion in the debug wrapper of CPU target kernels (#239580)

Fixes #188535

Any `omp target` region compiled for a CPU offload target with `-g` hit
the `Argument count mismatch` assert in
`GenerateOpenMPCapturedStmtFunctionAggregate`. It compared the field
count plus one against `F->getNumOperands()`, which on an
`llvm::Function` counts the hung-off operands (personality, prefix,
prologue data), not the parameters. That is zero here, so it fired on
every region. The IR emitted after it was fine, so release builds never
noticed.

Compare against `F->arg_size()` instead, which is what the code below
relies on: one parameter per captured field plus the implicit `dyn_ptr`.

AI assisted!
DeltaFile
+123-0clang/test/OpenMP/target_aggregate_debug_codegen.cpp
+1-2clang/lib/CodeGen/CGStmtOpenMP.cpp
+1-0clang/docs/ReleaseNotes.md
+125-23 files

LLVM/project c932d25 — libcxx/docs conf.py, libcxx/docs/Helpers ReleaseNotesTemplate.rst

[libc++][docs] Use Furo theme

Adopt the shared LLVM Furo configuration and wyvern logo, widen the content area on desktop viewports, and remove page-local contents directives that duplicate Furo's navigation.

Assisted-by: Codex
DeltaFile
+8-17libcxx/docs/conf.py
+20-0libcxx/docs/_static/custom.css
+0-4libcxx/docs/ReleaseNotes/24.rst
+0-4libcxx/docs/ReleaseNotes/23.rst
+0-4libcxx/docs/Helpers/ReleaseNotesTemplate.rst
+0-3libcxx/docs/Status/Cxx29.md
+28-326 files

LLVM/project 92f9f4c — llvm/test/CodeGen/X86 vector-deinterleave7-i16.ll vector-deinterleave8-i64.ll

Merge cascade

LLM-aided
DeltaFile
+29,293-0llvm/test/CodeGen/X86/vector-interleave7-i16.ll
+29,228-0llvm/test/CodeGen/X86/vector-interleaved7-i8.ll
+27,225-0llvm/test/CodeGen/X86/vector-interleave7-i32.ll
+26,140-0llvm/test/CodeGen/X86/vector-deinterleave7-i8.ll
+25,861-0llvm/test/CodeGen/X86/vector-deinterleave8-i64.ll
+25,769-0llvm/test/CodeGen/X86/vector-deinterleave7-i16.ll
+163,516-03,906 files not shown
+917,500-78,0333,912 files

LLVM/project 935a29a — llvm/test/CodeGen/X86 vector-deinterleave7-i16.ll vector-deinterleave8-i64.ll

Merge cascade

LLM-aided
DeltaFile
+29,293-0llvm/test/CodeGen/X86/vector-interleave7-i16.ll
+29,228-0llvm/test/CodeGen/X86/vector-interleaved7-i8.ll
+27,225-0llvm/test/CodeGen/X86/vector-interleave7-i32.ll
+26,140-0llvm/test/CodeGen/X86/vector-deinterleave7-i8.ll
+25,861-0llvm/test/CodeGen/X86/vector-deinterleave8-i64.ll
+25,769-0llvm/test/CodeGen/X86/vector-deinterleave7-i16.ll
+163,516-03,905 files not shown
+917,530-78,0333,911 files

LLVM/project 06e91d7 — libcxx/utils generate_feature_test_macro_components.py

[libc++][docs] Revert unrelated Python formatting changes

Restore the formatting of generate_feature_test_macro_components.py to match
main so that the diff only contains the Markdown output changes. Reformatting
was previously applied to the whole file; only changed lines are formatted now.

LLM-aided
DeltaFile
+41-68libcxx/utils/generate_feature_test_macro_components.py
+41-681 files

LLVM/project fbe39d7 — llvm/utils/TableGen/Common CodeGenRegisters.cpp

TableGen: Only collect sub-registers when there are candidate sub-classes (#239308)

For each register class and sub-register index,
inferMatchingSuperRegClass
looked up the sub-register of every member before checking for candidate
sub-classes, but most pairs have none: 73% for AMDGPU, with 62% of the
lookups. Collect the sub-registers when the first candidate is found.

The candidates are found by the TopoSigs of the sub-registers, which are
the same for registers with the same TopoSig. So find them once per
class
from one member per TopoSig, which is usually a single member.

AMDGPU tablegen runs that build the register bank:

            Gigainstructions  Gigacycles     CPU seconds
  Before    564               311            100
  After     561 (-0.5%)       295 (-5.2%)    95 (-4.9%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+36-11llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+36-111 files

LLVM/project 574426f — llvm/utils/TableGen/Common CodeGenRegisters.cpp CodeGenRegisters.h

TableGen: Key register classes by member EnumValues in Key2RC (#239309)

Key2RC is searched with Key::operator<, which compares member lists and
loads every register in both. Store the EnumValues of the non-artificial
members in the keys instead, so a lookup only loads the members of the
class being looked up.

AMDGPU tablegen runs that build the register bank:

            Gigainstructions  Gigacycles     CPU seconds
  Before    561               295            95
  After     536 (-4.5%)       287 (-2.7%)    93 (-1.9%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+34-1llvm/utils/TableGen/Common/CodeGenRegisters.h
+18-5llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+52-62 files