LLVM/project ceed346 — clang/lib/AST/ByteCode Interp.h

[clang][bytecode][NFC] Remove useless IsOpaqueConstantCall function (#237689)

We're already including ExprConstShared.h, which has a copy of this
function, so just use that.
DeltaFile
+1-9clang/lib/AST/ByteCode/Interp.h
+1-91 files

LLVM/project 2b54d70 — llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp, llvm/test/CodeGen/AArch64 ignore-signed-zero.ll frem-power2.ll

[SelectionDAG] Rework `nsz` handling (#232762)

Fixes #232307, #232320, and a few other unreported miscompiles.

Since #180906, `nsz` only allows instructions to non-deterministically
flip the sign of _input_ zeros. SelectionDAG (and many other things)
still has code that assumes output zero signs can also be flipped.

My hope is that these changes will make it a bit harder to gloss over
`nsz` without thinking more carefully about it.

The `frem` regressions here are inevitable if we want correctness. If we
want to see the old codegen, we could add `nsz` consumers to the tests.

---------

Assisted-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+142-0llvm/test/CodeGen/X86/frem-power2.ll
+77-10llvm/test/CodeGen/AArch64/frem-power2.ll
+82-0llvm/test/CodeGen/X86/fp-fold.ll
+68-0llvm/test/CodeGen/AArch64/ignore-signed-zero.ll
+62-5llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+59-0llvm/test/CodeGen/RISCV/frem-power2.ll
+490-154 files not shown
+520-3010 files

LLVM/project 701960d — llvm/lib/Target/Sparc Sparc.td SparcSchedule.td

[SPARC][NFC] Move Leon processor scheduling information to its own file (#234160)

The itineraries in SparcSchedule.td must be included before
SparcInstrInfo.td, and that prevents InstRW definitions from being added
to SparcSchedule.td.

Keep the itinerary class definitions in SparcSchedule.td and move the
Leon specific information to SparcSchedLeon.td instead.

Assisted-by: Claude
DeltaFile
+126-0llvm/lib/Target/Sparc/SparcSchedLeon.td
+0-115llvm/lib/Target/Sparc/SparcSchedule.td
+1-0llvm/lib/Target/Sparc/Sparc.td
+127-1153 files

LLVM/project b592673 — llvm/lib/IR RuntimeLibcalls.cpp, llvm/test/Transforms/Util/DeclareRuntimeLibcalls sleef-riscv.ll amdlibm.ll

RuntimeLibcalls: Use element alignment for vector libcall out pointers

The pointer arguments of the vector modf, sincos and sincospi functions
are linear pointers to the scalar element type (e.g. the l4 in
_ZGVnN4vl4l4_sincosf), not pointers to the vector type. Only the element
alignment is guaranteed, so stop declaring them with the ABI alignment
of the vector.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+12-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef.ll
+12-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/armpl.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef-riscv.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/amdlibm.ll
+1-1llvm/lib/IR/RuntimeLibcalls.cpp
+37-375 files

LLVM/project f4b3c91 — llvm/include/llvm/IR RuntimeLibcalls.td, llvm/test/Transforms/Util/DeclareRuntimeLibcalls sparc.ll systemz.ll

Use unsigned argument types for ctlz/ctpop
DeltaFile
+4-4llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+4-4llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+2-2llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+2-2llvm/include/llvm/IR/RuntimeLibcalls.td
+12-124 files

LLVM/project 038a942 — llvm/test/Transforms/Util/DeclareRuntimeLibcalls arm.ll systemz.ll

RuntimeLibcalls: Add signatures for more runtime functions

Add type missing signatures for assorted functions which were missing
type information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+474-474llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+305-305llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+279-279llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+276-276llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+198-198llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+192-192llvm/test/Transforms/Util/DeclareRuntimeLibcalls/arm.ll
+1,724-1,72411 files not shown
+2,947-2,93317 files

LLVM/project 9fad02d — llvm/include/llvm/IR RuntimeLibcallsImpl.td

RuntimeLibcalls: Describe vector FuncArgTypes by element type and count

Define the vector libcall argument types from an element type and
count. Derive the matching integer and mask vector types from them
instead of spelling each one out.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+18-12llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+18-121 files

LLVM/project f40a384 — llvm/lib/IR RuntimeLibcalls.cpp, llvm/test/Transforms/Util/DeclareRuntimeLibcalls amdlibm.ll

Use vector alignment for AMDLIBM sincos out pointers
DeltaFile
+15-1llvm/lib/IR/RuntimeLibcalls.cpp
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/amdlibm.ll
+21-72 files

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

RuntimeLibcalls: Use the correct target C long width for Long

Long and ULong were mapped to the int width, which is wrong on LP64
targets (e.g. scalbln was declared taking i32 on x86_64 linux) and on
16-bit targets where long is 32 bits.

Also fix strtoul, strtoull, and the unsigned long operator new/delete
variants to use the unsigned types.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-21llvm/include/llvm/IR/RuntimeLibcalls.td
+14-7llvm/lib/IR/RuntimeLibcalls.cpp
+9-9llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+8-8llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+64-577 files not shown
+83-7613 files

LLVM/project 0192e00 — llvm/include/llvm/IR RuntimeLibcalls.td

Use UInt8 for the __hot_cold_t operator new argument

tcmalloc declares __hot_cold_t as enum class __hot_cold_t : uint8_t
DeltaFile
+8-8llvm/include/llvm/IR/RuntimeLibcalls.td
+8-81 files

LLVM/project ccc56cc — clang/docs ReleaseNotes.md, clang/lib/Sema SemaOpenMP.cpp

[clang][OpenMP] Fix crash on `lastprivate` of a data member in a member function template (#237575)

Fixes #144302

`lastprivate(i)` on a data member inside a member function template of a
non-template class crashed in `EndOpenMPDSABlock`. In a dependent
context the clause keeps the member as the `this->i` expression, but the
finalizer cast every non-dependent item to `DeclRefExpr`.

Skip the member there and leave its private copy to be built when the
template is instantiated, where the member gets captured as usual.

LLM Aided.
DeltaFile
+61-0clang/test/OpenMP/sections_lastprivate_messages.cpp
+42-0clang/test/OpenMP/GH144302.cpp
+20-0clang/test/OpenMP/sections_ast_print.cpp
+7-0clang/lib/Sema/SemaOpenMP.cpp
+2-0clang/docs/ReleaseNotes.md
+132-05 files

LLVM/project 5cf5b4d — llvm/include/llvm/MC MCDwarf.h, llvm/lib/MC MCDwarf.cpp MCStreamer.cpp

[MC] Reject .cfi_restore_state without a matching .cfi_remember_state (#237679)

... similar to GNU Assembler.
DeltaFile
+13-0llvm/test/MC/ELF/cfi-remember.s
+6-1llvm/lib/MC/MCStreamer.cpp
+1-2llvm/lib/MC/MCDwarf.cpp
+1-0llvm/include/llvm/MC/MCDwarf.h
+21-34 files

LLVM/project 8e93deb — llvm/test/CodeGen/RISCV/GlobalISel rv64xtheadbb.ll rv32xtheadbb.ll, llvm/test/CodeGen/RISCV/GlobalISel/legalizer legalize-ctlz-rv64.mir legalize-ctlz-rv32.mir

[RISCV][GISel] Make G_CTLZ legal with XTHeadBb (#237510)

XTHeadBb provides `th.ff1` and matches `G_CTLZ` semantics. The existing
pattern `PatGpr<ctlz, TH_FF1>` is already imported by GlobalISel, but
the legalizer always lowered `G_CTLZ` when Zbb was not available, so
`th.ff1` was never selected.

Part of https://github.com/llvm/llvm-project/issues/237492.

I plan to address the whole problem with 3 patches to control patch size
and ease review process:

1. This commit
2. Use the zero-poison semantics of `G_CTLZ_ZERO_POISON` for narrower
widths.
3. Widen narrow `G_CTTZ` to XLEN before lowering.
DeltaFile
+244-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-cttz-rv64.mir
+216-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-cttz-rv32.mir
+104-0llvm/test/CodeGen/RISCV/GlobalISel/rv32xtheadbb.ll
+102-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-ctlz-rv32.mir
+102-0llvm/test/CodeGen/RISCV/GlobalISel/rv64xtheadbb.ll
+96-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-ctlz-rv64.mir
+864-01 files not shown
+878-37 files

LLVM/project 780947f — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/AArch64 transform-narrow-interleave-to-widen-memory.ll

[VPlan] Use the interleave group's alignment for narrowed accesses. (#237674)

Use the interleave group's alignment instead of the one from the insert
position, which may not be the alignment for the member at index 0.

This fixes a mis-compile where the wide load had an incorrect alignment.
DeltaFile
+196-0llvm/test/Transforms/LoopVectorize/AArch64/transform-narrow-interleave-to-widen-memory.ll
+6-5llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+202-52 files

LLVM/project ac99979 — llvm/include/llvm/IR RuntimeLibcallsImpl.td

RuntimeLibcalls: Describe vector FuncArgTypes by element type and count

Define the vector libcall argument types from an element type and
count. Derive the matching integer and mask vector types from them
instead of spelling each one out.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+18-12llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+18-121 files

LLVM/project 11d32ca — llvm/lib/IR RuntimeLibcalls.cpp, llvm/test/Transforms/Util/DeclareRuntimeLibcalls amdlibm.ll

Use vector alignment for AMDLIBM sincos out pointers
DeltaFile
+15-1llvm/lib/IR/RuntimeLibcalls.cpp
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/amdlibm.ll
+21-72 files

LLVM/project 7cc0c6f — llvm/test/Transforms/Util/DeclareRuntimeLibcalls arm.ll systemz.ll

RuntimeLibcalls: Add signatures for more runtime functions

Add type missing signatures for assorted functions which were missing
type information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+474-474llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+305-305llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+279-279llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+276-276llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+198-198llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+192-192llvm/test/Transforms/Util/DeclareRuntimeLibcalls/arm.ll
+1,724-1,72411 files not shown
+2,947-2,93317 files

LLVM/project dc7a4a6 — llvm/lib/IR RuntimeLibcalls.cpp, llvm/test/Transforms/Util/DeclareRuntimeLibcalls sleef-riscv.ll amdlibm.ll

RuntimeLibcalls: Use element alignment for vector libcall out pointers

The pointer arguments of the vector modf, sincos and sincospi functions
are linear pointers to the scalar element type (e.g. the l4 in
_ZGVnN4vl4l4_sincosf), not pointers to the vector type. Only the element
alignment is guaranteed, so stop declaring them with the ABI alignment
of the vector.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+12-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef.ll
+12-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/armpl.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sleef-riscv.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/amdlibm.ll
+1-1llvm/lib/IR/RuntimeLibcalls.cpp
+37-375 files

LLVM/project 816ffc7 — llvm/include/llvm/IR RuntimeLibcalls.td, llvm/test/Transforms/Util/DeclareRuntimeLibcalls sparc.ll systemz.ll

Use unsigned argument types for ctlz/ctpop
DeltaFile
+4-4llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+4-4llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+2-2llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+2-2llvm/include/llvm/IR/RuntimeLibcalls.td
+12-124 files

LLVM/project 663a285 — llvm/include/llvm/IR RuntimeLibcalls.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Use the correct target C long width for Long

Long and ULong were mapped to the int width, which is wrong on LP64
targets (e.g. scalbln was declared taking i32 on x86_64 linux) and on
16-bit targets where long is 32 bits.

Also fix strtoul, strtoull, and the unsigned long operator new/delete
variants to use the unsigned types.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-21llvm/include/llvm/IR/RuntimeLibcalls.td
+14-7llvm/lib/IR/RuntimeLibcalls.cpp
+9-9llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+8-8llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+64-577 files not shown
+83-7613 files

LLVM/project 84e4cd6 — llvm/include/llvm/Analysis TargetLibraryInfo.h, llvm/include/llvm/IR RuntimeLibcalls.h

Use the target bool extension rule
DeltaFile
+30-30llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+15-1llvm/lib/IR/RuntimeLibcalls.cpp
+3-10llvm/include/llvm/Analysis/TargetLibraryInfo.h
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/arm64ec.ll
+7-0llvm/lib/Analysis/TargetLibraryInfo.cpp
+5-0llvm/include/llvm/IR/RuntimeLibcalls.h
+66-476 files

LLVM/project 65a985f — llvm/include/llvm/IR RuntimeLibcalls.td

Use ULLong for MSVC new/delete and strtoull
DeltaFile
+7-7llvm/include/llvm/IR/RuntimeLibcalls.td
+7-71 files

LLVM/project cbf8fb3 — llvm/test/Transforms/Util/DeclareRuntimeLibcalls sparc.ll riscv.ll

RuntimeLibcalls: Add signext/zeroext attributes to libcall signatures

Try to match TargetLibraryInfo's behavior. Integer types narrower than
int are extended according to their signedness.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+460-460llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+292-292llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+235-235llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+221-221llvm/test/Transforms/Util/DeclareRuntimeLibcalls/mips.ll
+160-160llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+160-160llvm/test/Transforms/Util/DeclareRuntimeLibcalls/riscv.ll
+1,528-1,52812 files not shown
+2,296-2,23718 files

LLVM/project eeac848 — llvm/lib/Target/Sparc SparcCodeGenPassBuilder.cpp SparcPassRegistry.def, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[Sparc] Port AsmPrinter to NewPM

Standard NewPM pass porting.

Reviewers: doac, koachan, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/237669
DeltaFile
+39-0llvm/lib/Target/Sparc/SparcAsmPrinter.h
+32-0llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+8-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+4-3llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+3-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+86-35 files

LLVM/project aa872c0 — llvm/lib/Target/Sparc SparcCodeGenPassBuilder.cpp SparcTargetMachine.cpp, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[Sparc] Port ErrataWorkaround to NewPM

Standard NewPM pass porting.

Reviewers: koachan, doac, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/237660
DeltaFile
+59-35llvm/lib/Target/Sparc/LeonPasses.cpp
+8-20llvm/lib/Target/Sparc/LeonPasses.h
+8-1llvm/lib/Target/Sparc/Sparc.h
+2-2llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+1-1llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+1-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+79-591 files not shown
+80-597 files

LLVM/project 66023a8 — llvm/lib/Target/Sparc SparcPassRegistry.def SparcTargetMachine.cpp

[Sparc] Port FixAllFDIVSQRT to NewPM

Standard NewPM pass porting.

Reviewers: doac, koachan, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/237659
DeltaFile
+17-3llvm/lib/Target/Sparc/LeonPasses.cpp
+8-2llvm/lib/Target/Sparc/LeonPasses.h
+7-0llvm/lib/Target/Sparc/Sparc.h
+1-1llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+1-1llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+1-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+35-71 files not shown
+36-77 files

LLVM/project 4f49337 — llvm/lib/Target/Sparc SparcPassRegistry.def SparcTargetMachine.cpp

[Sparc] Port SparcDetectRoundChange to NewPM

Standard NewPM pass porting.

The idea behind this pass seems to be fundamentally flawed and I'm sure
there's a better way to do this, but I'm trying not to get sucked into
fixing target specific issues as part of the NewPM migration.

Reviewers: arsenm, doac, koachan

Pull Request: https://github.com/llvm/llvm-project/pull/237657
DeltaFile
+15-3llvm/lib/Target/Sparc/LeonPasses.cpp
+8-2llvm/lib/Target/Sparc/LeonPasses.h
+7-0llvm/lib/Target/Sparc/Sparc.h
+1-1llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+1-1llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+1-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+33-71 files not shown
+34-77 files

LLVM/project 5483751 — llvm/lib/Target/Sparc SparcPassRegistry.def SparcTargetMachine.cpp

[Sparc] Port InsertNOPLoad to NewPM

Standard NewPM pass porting. Also note we preserve the CFG in the
LegacyPM.

Reviewers: doac, arsenm, koachan

Pull Request: https://github.com/llvm/llvm-project/pull/237654
DeltaFile
+19-3llvm/lib/Target/Sparc/LeonPasses.cpp
+9-2llvm/lib/Target/Sparc/LeonPasses.h
+7-0llvm/lib/Target/Sparc/Sparc.h
+1-1llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+1-1llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+1-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+38-71 files not shown
+39-77 files

LLVM/project 70130f9 — llvm/lib/Target/Sparc LeonPasses.cpp LeonPasses.h

[Sparc] Remove LEONMachineFunctionPass base class

None of the members were even used, so just delete it. This makes
porting to the NewPM simpler.

Reviewers: arsenm, doac, koachan

Pull Request: https://github.com/llvm/llvm-project/pull/237652
DeltaFile
+3-24llvm/lib/Target/Sparc/LeonPasses.h
+6-9llvm/lib/Target/Sparc/LeonPasses.cpp
+9-332 files

LLVM/project e6b3f74 — llvm/test/CodeGen/AMDGPU amdgcn.bitcast.512bit.ll amdgcn.bitcast.1024bit.ll, llvm/test/CodeGen/NVPTX atomicrmw-elementwise-sm90.ll load-sm90.ll

Merge branch 'main' into users/arsenm/attributor/h2s-clear-tail
DeltaFile
+88,735-91,090llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+25,377-26,398llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+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
+222,395-117,48812,529 files not shown
+1,162,229-585,89212,535 files