LLVM/project d5f6842 — clang/docs ReleaseNotes.md, clang/lib/Headers __clang_hip_math.h

Revert "[HIP] Add __exp2f to the HIP math header (#236328)" (#240703)

This reverts commit dbb0418043e246d31aaab324dbe0c1e7097be391.

This does not exist in CUDA and I do not think it's appropriate to add
extensions in the global namespace with so little discussion
DeltaFile
+0-34clang/test/Headers/__clang_hip_math.hip
+0-5clang/docs/ReleaseNotes.md
+0-3clang/lib/Headers/__clang_hip_math.h
+0-423 files

LLVM/project 7338be8 — llvm/lib/Transforms/IPO Attributor.cpp, llvm/test/Transforms/Attributor light-preserved-analyses.ll

Attributor: Preserve the function analyses in the light module pass

AttributorLightPass preserved FunctionAnalysisManagerCGSCCProxy, which
is meaningless for a module pass, instead of
FunctionAnalysisManagerModuleProxy. When the pass changed anything,
the module proxy was invalidated, which clears all cached function
analyses, so e.g. IPSCCP recomputed the assumption cache, TTI and TLI
of every function. The pass neither adds nor removes functions, and it
already invalidates the analyses of the functions it changes.

CTMark instructions:u with -attributor-enable=light changes by O3 -0.02%,
ThinLTO -0.10% (kimwitu++ -0.50%, sqlite3 -0.38%).

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+13-0llvm/test/Transforms/Attributor/light-preserved-analyses.ll
+1-1llvm/lib/Transforms/IPO/Attributor.cpp
+14-12 files

LLVM/project 232cac3 — llvm/lib/Transforms/Utils LoopUtils.cpp, llvm/test/Transforms/IndVarSimplify rewrite-loop-exit-value.ll

[IndVars] Rewrite loop-exit comparisons from operands (#223951)

ScalarEvolution cannot model comparison instructions directly, so
rewriteLoopExitValues() may leave a comparison live when it is used both
to
control a loop and after the loop. This can keep an otherwise dead loop
around
until vectorization, as in https://godbolt.org/z/qK7qsK1KG.

When every loop-variant operand has a safe-to-expand exit value, record
those
values in the existing RewritePhi worklist and clone the comparison in
the loop
preheader. Restrict this path to cases where rewriting allows the loop
to be
deleted.

This also handles pointer comparisons and comparisons with two
loop-variant

    [2 lines not shown]
DeltaFile
+306-55llvm/test/Transforms/IndVarSimplify/rewrite-loop-exit-value.ll
+69-18llvm/lib/Transforms/Utils/LoopUtils.cpp
+45-0llvm/test/Transforms/PhaseOrdering/RISCV/rewrite-loop-exit-compare.ll
+420-733 files

LLVM/project d513937 — llvm/include/llvm/IR RuntimeLibcalls.td RuntimeLibcallsImpl.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Move malloc, calloc and free attributes to TableGen

This requires new attribute plumbing for attributes that have an
argument value.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2-70llvm/lib/IR/RuntimeLibcalls.cpp
+59-11llvm/test/TableGen/RuntimeLibcallEmitter-attributes.td
+38-18llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+28-5llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+24-3llvm/include/llvm/IR/RuntimeLibcalls.td
+20-0llvm/test/TableGen/RuntimeLibcallEmitter-attributes-errors.td
+171-1072 files not shown
+179-1128 files

LLVM/project 420b226 — llvm/test/CodeGen/AArch64 vector-extract-last-active.ll freeze.ll, llvm/test/CodeGen/AMDGPU llvm.amdgcn.permlane16.var.ll promote-alloca-vector-dynamic-idx-bitcasts-llc.ll

[SelectionDAG] Select the FREEZE target opcode

Selecting freeze as a COPY is wrong if the value may be undefined.
Now we can select ISD::FREEZE as FREEZE instead. Targets that don't
have physical registers can keep selecting COPY since there is no
regalloc to observe the difference.

Fixes #58321, #60429, #144780.

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2,088-1,048llvm/test/CodeGen/AMDGPU/llvm.amdgcn.permlane.ll
+515-123llvm/test/CodeGen/AMDGPU/promote-alloca-vector-dynamic-idx-bitcasts-llc.ll
+307-275llvm/test/CodeGen/X86/vector-compress.ll
+203-76llvm/test/CodeGen/AArch64/freeze.ll
+48-32llvm/test/CodeGen/AMDGPU/llvm.amdgcn.permlane16.var.ll
+35-35llvm/test/CodeGen/AArch64/vector-extract-last-active.ll
+3,196-1,58943 files not shown
+3,688-1,90249 files

LLVM/project dd23d51 — llvm/test/CodeGen/AMDGPU fix-sgpr-copies-freeze.mir

Precommit SIFixSGPRCopies test

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+58-0llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-freeze.mir
+58-01 files

LLVM/project a20d13d — llvm/test/CodeGen/AArch64 div-i256.ll, llvm/test/CodeGen/AMDGPU splitkit-getsubrangeformask-phi-extend.ll

[SelectionDAG] Don't assume a value from another block is frozen

A virtual register from another block can hold an undefined
value. We can only treat CopyFromReg of a physical register or of a
live-in virtual register as not undef or poison so that a freeze of
a value from another block is kept and selected as FREEZE.
DeltaFile
+110-110llvm/test/CodeGen/RISCV/idiv_large.ll
+106-106llvm/test/CodeGen/AArch64/div-i256.ll
+92-91llvm/test/CodeGen/X86/bittest-big-integer.ll
+67-67llvm/test/CodeGen/RISCV/GlobalISel/fp128.ll
+45-48llvm/test/CodeGen/AMDGPU/splitkit-getsubrangeformask-phi-extend.ll
+44-44llvm/test/CodeGen/RISCV/bitint-fp-conv-200.ll
+464-46615 files not shown
+705-66421 files

LLVM/project d37247e — llvm/test/CodeGen/AArch64 freeze.ll freeze-multi-use.ll, llvm/test/CodeGen/AMDGPU freeze-multi-use.ll

Precommit miscompiling FREEZE tests

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+137-0llvm/test/CodeGen/RISCV/freeze-multi-use.ll
+117-0llvm/test/CodeGen/AArch64/freeze-multi-use.ll
+94-0llvm/test/CodeGen/AMDGPU/freeze-multi-use.ll
+85-0llvm/test/CodeGen/X86/freeze-multi-use.ll
+43-0llvm/test/CodeGen/RISCV/rvv/freeze-multi-use.ll
+14-0llvm/test/CodeGen/AArch64/freeze.ll
+490-01 files not shown
+498-07 files

LLVM/project 90b28f0 — llvm/lib/Target/AMDGPU SIFixSGPRCopies.cpp SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU fix-sgpr-copies-freeze.mir

[AMDGPU] Handle FREEZE like COPY in SIFixSGPRCopies

An SGPR FREEZE of a VGPR value cannot be lowered after register
allocation. We should treat FREEZE like the other single-input pseudos
(WQM and friends) when fixing SGPR copies and when moving instructions to
the VALU, so that its result is moved to a VGPR along with its users.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+6-6llvm/test/CodeGen/AMDGPU/fix-sgpr-copies-freeze.mir
+4-1llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+1-0llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
+11-73 files

LLVM/project 267f789 — llvm/lib/Target/AMDGPU SILowerI1Copies.cpp, llvm/test/CodeGen/AMDGPU lower-i1-copies-freeze.mir

[AMDGPU] Lower FREEZE of i1 in SILowerI1Copies

A FREEZE of a vreg_1 was left as is, which fails the verifier. Freeze
the lane mask, and lower the rest like a copy.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+143-0llvm/test/CodeGen/AMDGPU/lower-i1-copies-freeze.mir
+15-3llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp
+158-32 files

LLVM/project e6e27d7 — llvm/test/CodeGen/AArch64 freeze-multi-use.ll, llvm/test/CodeGen/AMDGPU freeze-multi-use.ll

Precommit cross-block freeze tests

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+94-0llvm/test/CodeGen/AMDGPU/freeze-multi-use.ll
+32-0llvm/test/CodeGen/RISCV/freeze-multi-use.ll
+23-0llvm/test/CodeGen/AArch64/freeze-multi-use.ll
+20-0llvm/test/CodeGen/X86/freeze-multi-use.ll
+169-04 files

LLVM/project 2bb1df1 — llvm/lib/CodeGen CalcSpillWeights.cpp, llvm/test/CodeGen/X86 freeze-pseudo.mir

[CodeGen] Hint to register allocator that FREEZE will become a copy

A FREEZE is lowered to a COPY after register allocation, so we should give
its operands the same allocation hint as a COPY. When both get the same
register, the FREEZE can be removed.
DeltaFile
+3-2llvm/lib/CodeGen/CalcSpillWeights.cpp
+2-2llvm/test/CodeGen/X86/freeze-pseudo.mir
+5-42 files

LLVM/project 0fa56ed — llvm/lib/CodeGen FinalizeISel.cpp, llvm/lib/CodeGen/SelectionDAG InstrEmitter.cpp

[CodeGen] Lower FREEZE of a defined value to COPY

A FREEZE is only needed when its operand may be undefined. FinalizeISel
now turns every other FREEZE into a COPY, right after instruction
selection.

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+116-0llvm/lib/CodeGen/FinalizeISel.cpp
+36-36llvm/test/CodeGen/AArch64/finalize-isel-freeze.mir
+20-0llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
+172-363 files

LLVM/project 8515dca — llvm/test/CodeGen/X86 freeze-pseudo.mir

Precommit regalloc test
DeltaFile
+32-0llvm/test/CodeGen/X86/freeze-pseudo.mir
+32-01 files

LLVM/project d85e4c7 — llvm/test/CodeGen/AArch64 finalize-isel-freeze.mir

Precommit FinalizeISel FREEZE tests

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+411-0llvm/test/CodeGen/AArch64/finalize-isel-freeze.mir
+411-01 files

LLVM/project c2e5711 — llvm/test/CodeGen/AArch64 freeze.ll, llvm/test/CodeGen/AMDGPU promote-alloca-vector-dynamic-idx-bitcasts-llc.ll

[SelectionDAG] Don't CSE freeze of undef

Each freeze of undef may have its own arbitrary value.

This also folds a bitcast of a one-use frozen undef into a frozen undef.

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+20-114llvm/test/CodeGen/AMDGPU/promote-alloca-vector-dynamic-idx-bitcasts-llc.ll
+49-24llvm/test/CodeGen/AArch64/freeze.ll
+14-27llvm/test/CodeGen/Hexagon/pr196966.ll
+21-18llvm/test/CodeGen/X86/freeze-vector.ll
+0-32llvm/test/CodeGen/SystemZ/pr60413.ll
+20-0llvm/unittests/CodeGen/SelectionDAGCSETest.cpp
+124-2154 files not shown
+138-22210 files

LLVM/project 4f2b125 — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 freeze-vector.ll

[X86] Don't let BUILD_VECTOR pick a value for multi-use freeze(undef)

LowerBUILD_VECTOR treats freeze(undef) operands as free to choose. It
folds them to zero, blends in a new freeze, or zeroes them in the upper
half. If the freeze has other users, they may see a different value
than the BUILD_VECTOR does. Only treat a freeze(undef) as free when the
BUILD_VECTOR is its only user, and only zero the upper half when each
one has a single use, so that a freeze used by several lanes keeps one
value.

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+37-33llvm/test/CodeGen/X86/freeze-vector.ll
+5-2llvm/lib/Target/X86/X86ISelLowering.cpp
+42-352 files

LLVM/project c9ac531 — llvm/test/CodeGen/X86 freeze-vector.ll

Precommit X86 BUILD_VECTOR freeze tests

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+74-0llvm/test/CodeGen/X86/freeze-vector.ll
+74-01 files

LLVM/project f1fcff7 — llvm/test/TableGen get-named-operand-idx.td

Restore indent in TableGen test

Assisted-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+22-22llvm/test/TableGen/get-named-operand-idx.td
+22-221 files

LLVM/project 2d75ce3 — llvm/docs NVPTXUsage.md, llvm/include/llvm/IR IntrinsicsNVVM.td

[NVPTX][MLIR][NVVM] Add 32-bit multicast mask support to mbarrier intrinsics (#239187)

The shared::cluster variants of the mbarrier.expect_tx*/complete_tx* and
mbarrier.arrive* intrinsics now take two additional arguments: a 32-bit
CTA mask and a constant is-multicast flag. The flag selects the
`.multicast::cluster::32b` PTX form, which requires sm_107f or later in
the same family and PTX ISA 9.4; when it is cleared the mask is ignored
and the original instruction is emitted unchanged.

Legacy 2-argument declarations and calls are upgraded automatically by
appending (i32 0, i1 false).

MLIR NVVM ops do not model multicast yet, so the LLVM IR translation
passes 0 for the mask and false for the flag.
DeltaFile
+161-0llvm/test/CodeGen/NVPTX/mbarrier_multicast.ll
+66-24llvm/docs/NVPTXUsage.md
+54-0llvm/lib/IR/AutoUpgrade.cpp
+32-6llvm/include/llvm/IR/IntrinsicsNVVM.td
+36-0llvm/test/Assembler/auto_upgrade_nvvm_intrinsics.ll
+25-3llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+374-338 files not shown
+429-6814 files

LLVM/project e400896 — llvm/lib/CodeGen MachineSink.cpp

[CodeGen] Remove unused TRI in SinkingPreventsImplicitNullCheck (NFC) (#239697)

The last use of TRI in SinkingPreventsImplicitNullCheck was removed on
October 7, 2026 in commit 6afc47d555fb21b780175233f777f1ecff87e603.

Assisted-by: Antigravity
DeltaFile
+2-3llvm/lib/CodeGen/MachineSink.cpp
+2-31 files

LLVM/project f32f472 — lldb/test/API/functionalities/breakpoint/write_over_software_breakpoint main.c

[lldb][test] Remove unused variable always_false (NFC) (#239702)

The last use of always_false in TestWriteOverSoftwareBreakpoint's main.c
was removed on October 14, 2026 in commit
a111af730a345868b8b8d0b180a939e8796ae59f.

Assisted-by: Antigravity
DeltaFile
+0-2lldb/test/API/functionalities/breakpoint/write_over_software_breakpoint/main.c
+0-21 files

LLVM/project 9522deb — clang/lib/CodeGen CodeGenModule.h CodeGenModule.cpp

Address comments and remove CacheDefaultFeatures flag

Created using spr 1.3.6-beta.1
DeltaFile
+18-20clang/lib/CodeGen/CodeGenModule.cpp
+3-1clang/lib/CodeGen/CodeGenModule.h
+21-212 files

LLVM/project 75523c1 — llvm/test/CodeGen/PowerPC aix-null-streamer.ll

Remove a run line
DeltaFile
+0-1llvm/test/CodeGen/PowerPC/aix-null-streamer.ll
+0-11 files

LLVM/project c504e68 — llvm/lib/Target/RISCV RISCVInstrInfo.cpp, llvm/test/CodeGen/RISCV machine-outliner-x5-regsave-outlined.mir

RISCV MC outliner: do not use RegSave in already outlined functions (#236429)

Skip `RegSave` in already outlined functions. `RegSave` inside an
outlined function adds a write to one of `t1..6`. But callers of an
outlined function rely on that outlined function to preserve registers
it doesn't define.

---------

Signed-off-by: Cyrill Leutwiler <bigcyrill at hotmail.com>
DeltaFile
+90-0llvm/test/CodeGen/RISCV/machine-outliner-x5-regsave-outlined.mir
+2-1llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+92-12 files

LLVM/project 309f2bb — clang/lib/Driver Driver.cpp Job.cpp, clang/test/Driver cc1-spawnprocess.c in-process-multiple-cc1-crash.c

Revert #222531 "[clang] Support multiple in-process cc1 jobs in a ToolSession" (#240706)

This reverts commit cbf54d65f620f2efb78ee795ffdec28d269d9b21.

llvm-driver always constructs a ToolSession, so every clang invocation
through the multicall binary (LLVM_TOOL_LLVM_DRIVER_BUILD) takes the
reusable-cc1 path:

* -save-stats files accumulate Statistic counters across inputs
  (b.stats includes a.c's counts), and -mllvm -stats output is merged.
* --offload-jobs is ignored: in-process device jobs are excluded from
  parallel offload groups.
* After a crash or report_fatal_error in one input, the remaining inputs
  are skipped, unlike standalone clang and -fno-integrated-cc1:
  `clang -c crash.c ok.c` no longer produces ok.o.
* -disable-free is dropped for every compile, including single-file
  compiles (+1.1% instructions at -O0 -g).

Embedding hosts should opt in explicitly rather than keying on

    [2 lines not shown]
DeltaFile
+0-68clang/test/Driver/in-process-multiple-cc1.c
+17-23clang/tools/driver/cc1_main.cpp
+0-20clang/test/Driver/in-process-multiple-cc1-crash.c
+5-8clang/lib/Driver/Job.cpp
+5-7clang/lib/Driver/Driver.cpp
+4-7clang/test/Driver/cc1-spawnprocess.c
+31-1339 files not shown
+41-17515 files

LLVM/project ce8e45d — llvm/lib/Target/RISCV/MCTargetDesc RISCVMatInt.cpp

[RISCV] Combine extractRotateInfo and extractLuiRotateInfo. NFC (#240660)

We can rotate the constant left in the caller and pick ADDI vs LUI based
on the resulting constant.

Assisted-by: Claude
DeltaFile
+20-25llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
+20-251 files

LLVM/project 791f543 — llvm/lib/Target/RISCV RISCVAsmPrinter.cpp

[RISCV] Prevent potentially calling isRegisterReservedByUser with an out of bounds MCRegister. (#240501)

NextReg may be larger than X31. If X31 happens to be the last value in
the register enum, this would index past the valid range for
isRegisterReservedByUser.

I really don't think we should be incrementing past X31 at all, but
that's a more involved change.
DeltaFile
+1-1llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
+1-11 files

LLVM/project fd8f959 — llvm/lib/Transforms/Scalar InferAddressSpaces.cpp, llvm/test/Transforms/InferAddressSpaces/AMDGPU constexpr-two-casts-one-call.ll

[InferAddressSpaces] Use a new value map for each rewritten constant

When the pass rewrites a flat constant expression, it remaps the
instructions that use it through other constant expressions with a
`ValueMapper`. All rewritten constants shared one map, and the mapper
caches every constant that it visits, including the ones that it maps to
themselves. So when one instruction uses two rewritten constants, the
remap for the first one caches the part with the second one as
unchanged, and the remap for the second one reuses that entry. For
example, if a call has `addrspacecast`s of two flat pointers that are
based on the same `addrspace(3)` global, only one argument is folded.

This PR uses a new map for each rewritten constant.

This PR was assisted by AI but I reviewed all the changes.
DeltaFile
+25-0llvm/test/Transforms/InferAddressSpaces/AMDGPU/constexpr-two-casts-one-call.ll
+6-2llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp
+31-22 files

LLVM/project 37a1706 — llvm/lib/Transforms/Scalar InferAddressSpaces.cpp, llvm/test/Transforms/InferAddressSpaces optnone-func-unchanged.ll

[InferAddressSpaces] Don't replace uses in other functions (#240628)

`performPointerReplacement` visits every use of a value in the postorder
list. When the value is a constant expression, some of these uses can be
in other functions. It already skipped such uses, but only after
`replaceIfSimplePointerUse`, so when the pass ran on one function, it
could still rewrite a load, store, `atomicrmw`, or `cmpxchg` in another
function, even in an `optnone` function.

This PR skips a use in another function before any replacement, like
#70611 did for the other users of a constant.

This PR was assisted by AI but I reviewed all the changes.
DeltaFile
+16-0llvm/test/Transforms/InferAddressSpaces/optnone-func-unchanged.ll
+3-3llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp
+19-32 files