LLVM/project 26221eb — lld/test/MachO arm64e-input-abi.s

Set IsLittleEndian in arm64e-input-abi.s

#238122 makes IsLittleEndian required in Mach-O YAML. Set it here so this test works whichever of the two lands first.

Assisted-by: Claude Code
DeltaFile
+1-0lld/test/MachO/arm64e-input-abi.s
+1-01 files

LLVM/project 0fdfbb6 — llvm/lib/Target/BPF BPFCallingConv.td BPFISelLowering.cpp, llvm/test/CodeGen/BPF many_args9.ll

[BPF] Promote i32 stack arguments to i64 with ALU32 (#238315)

Without ALU32, `CC_BPF64` promotes i32 arguments to i64, so the caller
sign- or zero-extends `signext`/`zeroext` arguments to the full 64-bit
stack slot and the callee relies on that.

With ALU32, `CC_BPF32` assigns i32 stack arguments as is, with
`CCValAssign::Full`. The caller any-extends them to the 64-bit slot, but
the callee reads the slot as i64 and the generic argument lowering still
asserts it is sign/zero-extended, so it is used without extending (`llc
-mcpu=v3`):
```
  declare i64 @ext(i64, i64, i64, i64, i64, i32 zeroext, i32 signext)
  ... call i64 @ext(..., i32 zeroext %t, i32 signext %t)

  caller:  *(u64 *)(r11 - 8) = r1     ; %t not extended
           *(u64 *)(r11 - 16) = r1
  callee:  r1 = *(u64 *)(r11 + 8)     ; assumed extended
           r0 = *(u64 *)(r11 + 16)

    [25 lines not shown]
DeltaFile
+73-0llvm/test/CodeGen/BPF/many_args9.ll
+1-4llvm/lib/Target/BPF/BPFISelLowering.cpp
+4-0llvm/lib/Target/BPF/BPFCallingConv.td
+78-43 files

LLVM/project e62835b — llvm/lib/Passes CodeGenPassBuilder.cpp, llvm/test/CodeGen/X86 profcheck-pipeline.ll

[ProfCheck] Wire up enable-profcheck-in-pipeline to CodeGen

This patch wires up the enable-profcheck-in-pipeline flag to the CodeGen
pipeline (NewPM only because it's complete enough for testing and should
become the default soonish). This enables catching issues in the IR
section of the CodeGen pipeline.

From attempting a bootstrap of LLVM, it seems like there are many such
issues to dig through.

Reviewers: mtrofin, aeubanks

Pull Request: https://github.com/llvm/llvm-project/pull/238608
DeltaFile
+13-0llvm/lib/Passes/CodeGenPassBuilder.cpp
+11-0llvm/test/CodeGen/X86/profcheck-pipeline.ll
+24-02 files

LLVM/project 62ca494 — llvm/include/llvm InitializePasses.h, llvm/include/llvm/CodeGen Passes.h ExecutionDomainFix.h

[CodeGen] Port ExecutionDomainFix to NewPM

Standard NewPM pass porting.

Reviewers: arsenm, RKSimon, davemgreen

Pull Request: https://github.com/llvm/llvm-project/pull/238546
DeltaFile
+144-27llvm/lib/CodeGen/ExecutionDomainFix.cpp
+13-83llvm/include/llvm/CodeGen/ExecutionDomainFix.h
+2-2llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+1-1llvm/lib/Target/ARM/ARMTargetMachine.cpp
+1-1llvm/include/llvm/InitializePasses.h
+1-1llvm/include/llvm/CodeGen/Passes.h
+162-1154 files not shown
+167-11610 files

LLVM/project c0ef2ec — compiler-rt/lib/sanitizer_common sanitizer_common_interceptors.inc, compiler-rt/test/msan/Linux strlcpy_strlcat.c

[sanitizer_common] Fix strlcpy shadow handling (#238598)

The `strlcpy` interceptor passes `internal_strlen(dst) + 1` to
`COMMON_INTERCEPTOR_COPY_STRING`, which already unpoisons the next byte.

Use the copied length instead of `internal_strlen(dst) + 1 `, and skip
the update when `size` is zero.
Follow-up to #236414.
DeltaFile
+15-0compiler-rt/test/msan/Linux/strlcpy_strlcat.c
+2-1compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+17-12 files

LLVM/project 9060a02 — llvm/lib/Target/DirectX DXContainerPDB.cpp DXILContainerPDB.cpp, mlir/test/Dialect/SCF loop-unroll.mlir

Remove stale Cold calling convention FIXME

Created using spr 2.0.0-beta.2
DeltaFile
+506-0llvm/lib/Target/DirectX/DXILContainerGlobals.cpp
+0-467llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+181-157llvm/lib/Target/DirectX/DXILPrepare.cpp
+227-0llvm/lib/Target/DirectX/DXILContainerPDB.cpp
+0-206llvm/lib/Target/DirectX/DXContainerPDB.cpp
+75-2mlir/test/Dialect/SCF/loop-unroll.mlir
+989-83241 files not shown
+1,228-89447 files

LLVM/project 81e9237 — llvm/lib/Target/DirectX DXContainerPDB.cpp DXILContainerPDB.cpp, mlir/test/Dialect/SCF loop-unroll.mlir

Remove stale Cold calling convention FIXME

Created using spr 2.0.0-beta.2
DeltaFile
+506-0llvm/lib/Target/DirectX/DXILContainerGlobals.cpp
+0-467llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+181-157llvm/lib/Target/DirectX/DXILPrepare.cpp
+227-0llvm/lib/Target/DirectX/DXILContainerPDB.cpp
+0-206llvm/lib/Target/DirectX/DXContainerPDB.cpp
+75-2mlir/test/Dialect/SCF/loop-unroll.mlir
+989-83240 files not shown
+1,228-89246 files

LLVM/project e1987d8 — lld/MachO InputFiles.cpp, lld/test/MachO arm64e-input-abi.s

Check arm64e ABI markers in static links too

Static links skipped the check, but ld64 takes only unversioned and
kernel objects there besides version 0, and ignores the other markers.

Assisted-by: Claude Code
DeltaFile
+13-5lld/MachO/InputFiles.cpp
+6-1lld/test/MachO/arm64e-input-abi.s
+19-62 files

LLVM/project 4de24ea — lld/MachO InputFiles.cpp, lld/test/MachO arm64e-input-abi.s

[lld-macho] Reject incompatible arm64e object ABI markers

The CPU subtype of an arm64e object carries a pointer authentication ABI
marker. In a dynamic link, ld64 accepts only objects marked userland ABI
version 0, even on macOS and Mac Catalyst, whose executables are marked
version 1. It names any other marker as another architecture
(arm64e.old, arm64e.v1, arm64e.kernel, arm64e.kernel.v1 or unknown) and,
as with an arm64 object, ignores the file with a warning, or reports an
error with -arch_errors_fatal. This applies to archive members too.

lld linked these objects. Check the marker in the same way. ld64 accepts
unversioned and kernel-ABI objects in static links, so those links are
not checked.

Assisted-by: Claude Code



DeltaFile
+134-0lld/test/MachO/arm64e-input-abi.s
+31-11lld/MachO/InputFiles.cpp
+165-112 files

LLVM/project a6c481e — lld/MachO InputSection.h Writer.cpp, lld/test/MachO arm64e-tlv-bootstrap.s

[lld-macho] Sign the arm64e TLV bootstrap pointer as ld64 does

The first word of a thread-local variable descriptor is bound to
__tlv_bootstrap, which dyld replaces with a pointer to tlv_get_addr that
TLV accesses call with blraaz. On arm64e, ld64 writes that bind as an
authenticated bind with the IA key and no diversity, although the object
asks for a plain pointer. Do the same.

Assisted-by: Claude Code



DeltaFile
+30-0lld/test/MachO/arm64e-tlv-bootstrap.s
+16-1lld/MachO/InputSection.cpp
+2-1lld/MachO/Writer.cpp
+2-0lld/MachO/InputSection.h
+50-24 files

LLVM/project eb1c917 — lld/MachO MapFile.cpp, lld/test/MachO arm64e-map.s

[lld-macho] List arm64e __auth_got entries in the map file

The map file printed the entries of __got but not those of arm64e's
__auth_got, which held the targets of the stubs and the personalities.
Print them in the same way.

Assisted-by: Claude Code



DeltaFile
+36-0lld/test/MachO/arm64e-map.s
+11-6lld/MachO/MapFile.cpp
+47-62 files

LLVM/project d2800ee — lld/MachO InputSection.h OutputSegment.cpp, lld/MachO/Arch ARM64.cpp

[lld-macho] Call through authenticated stubs on arm64e (#234003)

Call dylib functions from arm64e code through `__auth_stubs` rather than
`__stubs`, as ld64 does. Each stub is four instructions instead of
three:

```
  adrp x17, slot at page
  add  x17, x17, slot at pageoff
  ldr  x16, [x17]
  braa x16, x17
```

where the slot is in `__auth_got` and holds a pointer that dyld signs
with the IA key, blended with the slot's address. The raw target is only
ever held in x16 and x17, so a stub never branches through an
unauthenticated pointer loaded from writable memory. On arm64e, name the
stubs section `__auth_stubs`, make stubs 16 bytes, and put stub targets
in `__auth_got`. Fast ObjC stubs load `_objc_msgSend` from `__auth_got`

    [10 lines not shown]
DeltaFile
+56-14lld/test/MachO/arm64e-stubs.s
+52-0lld/MachO/Arch/ARM64.cpp
+35-0lld/test/MachO/arm64e-auth-stubs-section-order.s
+21-8lld/MachO/SyntheticSections.cpp
+6-4lld/MachO/OutputSegment.cpp
+1-0lld/MachO/InputSection.h
+171-266 files

LLVM/project 6a30204 — llvm/lib/Target/X86 X86CallingConv.td X86RegisterInfo.cpp, llvm/test/CodeGen/X86/apx intr-egpr-csr-call.ll intr-egpr-csr.ll

[X86][APX] Save R16-R31 in interrupt and no_caller_saved_registers functions (#237109)

x86_intrcc, "no_caller_saved_registers" and anyregcc functions must
preserve every register they modify. With EGPR their save lists
(CSR_64_AllRegs*) did not include R16-R31, so a handler that uses, or
calls something that clobbers, an extended GPR silently corrupts the
interrupted context. For example, a handler reading its interrupt frame
loads it into r16/r17 and returns with iretq without restoring them.

Add CSR_64_APX_AllRegs{,_NoSSE,_AVX,_AVX512}, the AllRegs lists plus
R16-R31, and use them as the save lists when the subtarget has EGPR. The
call-preserved masks are unchanged, so callers keep treating R16-R31 as
clobbered. This stays correct for callees built without EGPR or by other
or older compilers.

Assisted-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+227-0llvm/test/CodeGen/X86/apx/intr-egpr-csr.ll
+127-0llvm/test/CodeGen/X86/apx/intr-egpr-csr-call.ll
+14-6llvm/lib/Target/X86/X86RegisterInfo.cpp
+14-0llvm/lib/Target/X86/X86CallingConv.td
+382-64 files

LLVM/project 9744e73 — llvm/include/llvm/CodeGen TargetRegisterInfo.h ExecutionDomainFix.h, llvm/lib/CodeGen ExecutionDomainFix.cpp

[CodeGen] Make ExecutionDomainFix Generic

Rather than having targets create their own subclass just to override
the register class, push the register class into TRI and have the pass
query that, similar to what we did for BreakFalseDeps.

This makes it easier to port to the NewPM.

Reviewers: arsenm, davemgreen, RKSimon

Pull Request: https://github.com/llvm/llvm-project/pull/238536
DeltaFile
+23-8llvm/lib/CodeGen/ExecutionDomainFix.cpp
+1-22llvm/lib/Target/ARM/ARMTargetMachine.cpp
+1-19llvm/lib/Target/X86/X86TargetMachine.cpp
+6-4llvm/include/llvm/CodeGen/ExecutionDomainFix.h
+7-0llvm/include/llvm/CodeGen/TargetRegisterInfo.h
+6-0llvm/lib/Target/X86/X86RegisterInfo.h
+44-537 files not shown
+55-5713 files

LLVM/project 1bd40d3 — llvm/lib/Target/X86 X86FrameLowering.cpp, llvm/test/CodeGen/X86 win64-eh-unwindv3-push2pop2.ll

[X86][SEH] Emit epilog SEH_Push2Regs in PUSH2 order for unwind v3 (#237829)

For Win64 unwind v3, the .seh_push2regs emitted before an epilog POP2
named the registers in POP2 order. Epilog ops are interpreted like the
prolog PUSH2 they undo, so unwinding from inside the epilog restored the
pair swapped. Emit them in PUSH2 order, matching the prolog (and the
assembler's .pop2reg handling); the epilog can now share the prolog
WODs.

Fixes #231762.

Assisted-by: Claude Opus 5.5
DeltaFile
+19-2llvm/test/CodeGen/X86/win64-eh-unwindv3-push2pop2.ll
+4-4llvm/test/CodeGen/X86/apx/push2-pop2-cfi-seh-v3.ll
+3-1llvm/lib/Target/X86/X86FrameLowering.cpp
+26-73 files

LLVM/project 0ca4039 — llvm/lib/Target/X86 X86PassRegistry.def X86TargetMachine.cpp, llvm/test/CodeGen/X86 llc-pipeline-npm.ll

[X86] Port X86IndirectThunks to NewPM

Standard NewPM pass porting. Although we hold the inserters inside the
class given they have state we need to manage appropriately. Inside
unique_ptr given the class definition is local to the implementation.

Reviewers: aeubanks, RKSimon, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/238487
DeltaFile
+39-6llvm/lib/Target/X86/X86IndirectThunks.cpp
+18-1llvm/lib/Target/X86/X86.h
+4-0llvm/test/CodeGen/X86/llc-pipeline-npm.ll
+1-2llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+1-1llvm/lib/Target/X86/X86TargetMachine.cpp
+1-0llvm/lib/Target/X86/X86PassRegistry.def
+64-106 files

LLVM/project 416c338 — llvm/include/llvm/CodeGen ExecutionDomainFix.h, llvm/lib/CodeGen ExecutionDomainFix.cpp

rebase

Created using spr 1.3.7
DeltaFile
+160-28llvm/lib/CodeGen/ExecutionDomainFix.cpp
+16-84llvm/include/llvm/CodeGen/ExecutionDomainFix.h
+39-6llvm/lib/Target/X86/X86IndirectThunks.cpp
+1-22llvm/lib/Target/ARM/ARMTargetMachine.cpp
+2-20llvm/lib/Target/X86/X86TargetMachine.cpp
+18-2llvm/lib/Target/X86/X86.h
+236-16214 files not shown
+296-16920 files

LLVM/project 3b6addf — llvm/include/llvm/CodeGen ExecutionDomainFix.h, llvm/lib/CodeGen ExecutionDomainFix.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+160-28llvm/lib/CodeGen/ExecutionDomainFix.cpp
+16-84llvm/include/llvm/CodeGen/ExecutionDomainFix.h
+39-6llvm/lib/Target/X86/X86IndirectThunks.cpp
+1-22llvm/lib/Target/ARM/ARMTargetMachine.cpp
+2-20llvm/lib/Target/X86/X86TargetMachine.cpp
+18-2llvm/lib/Target/X86/X86.h
+236-16214 files not shown
+296-16920 files

LLVM/project 248e4be — llvm/lib/Target/NVPTX NVPTXCanonicalizeDynamicShared.cpp, llvm/test/CodeGen/NVPTX canonicalize-dynamic-shared-used.ll canonicalize-dynamic-shared-thinlto.ll

[NVPTX] Merge declarations of dynamic shared memory (#236582)

If a kernel defines multiple unsized extern shared arrays they always
alias each other. This means they name the start of the same dynamic
shared memory allocation.

LLVM however currently treats these variables as distinct global
variables. This causes alias analysis to incorrectly treat them as
disjoint objects, impacting other compilation passes.

This PR adds a pass that redirects the uses of all such declarations to
one of them, which takes the strongest alignment and the debug info of
each source variable and stays constant only if each merged declaration
is. A declaration listed in llvm.used or llvm.compiler.used keeps its
symbol.

The new pass runs:

1) at the start of the optimization pipeline

    [4 lines not shown]
DeltaFile
+132-0llvm/lib/Target/NVPTX/NVPTXCanonicalizeDynamicShared.cpp
+74-0llvm/test/CodeGen/NVPTX/canonicalize-dynamic-shared-debug-info.ll
+73-0llvm/test/CodeGen/NVPTX/canonicalize-dynamic-shared-alias.ll
+49-0llvm/test/CodeGen/NVPTX/canonicalize-dynamic-shared.ll
+45-0llvm/test/CodeGen/NVPTX/canonicalize-dynamic-shared-thinlto.ll
+41-0llvm/test/CodeGen/NVPTX/canonicalize-dynamic-shared-used.ll
+414-09 files not shown
+527-015 files

LLVM/project 1bea8cd — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp

Clarified Mangled comment, got rid of unnecessary switch, removed redundant comment and shortened variable names for parameter name and type vector
DeltaFile
+21-29lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+21-291 files

LLVM/project 4c7f8b0 — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp

formatting...
DeltaFile
+3-3lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+3-31 files

LLVM/project 5b922eb — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.h DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Added support for functions to DWARFASTParserFortran plus tests
DeltaFile
+266-0lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+133-3lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+5-0lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.h
+404-33 files

LLVM/project 1fb62b4 — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Addressed feedback about code styling and changed one of the tests to contain different types in arguments and return type, not just integers
DeltaFile
+18-26lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+18-6lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+36-322 files

LLVM/project a845c8c — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.h DWARFASTParserFortran.cpp

Removed single line if brackets and changed function parsing parameters name as well as argument names.
DeltaFile
+12-12lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+4-4lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.h
+16-162 files

LLVM/project 2ed400e — lldb/source/Plugins/TypeSystem/Fortran FortranTypes.h

Used more concrete type profile, when looping through parameter types
DeltaFile
+1-1lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.h
+1-11 files

LLVM/project 3c4aa1a — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.h FortranTypes.h

[lldb][Fortran] Added llvm RTTI support to FortranFunction, renamed variable names in functions, GetFunctionType static function to get function type pointer and addressed feedback about code style
DeltaFile
+25-47lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+34-22lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.cpp
+23-11lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.h
+1-1lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.h
+83-814 files

LLVM/project a3d4083 — lldb/source/Plugins/TypeSystem/Fortran TypeSystemFortran.h FortranTypes.cpp, lldb/unittests/Symbol TestTypeSystemFortran.cpp

[lldb][Fortran] Added support for functions in TypeSystemFortran and added tests for them
DeltaFile
+98-0lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.cpp
+53-0lldb/unittests/Symbol/TestTypeSystemFortran.cpp
+37-0lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.h
+35-0lldb/source/Plugins/TypeSystem/Fortran/FortranTypes.cpp
+15-18lldb/source/Plugins/TypeSystem/Fortran/TypeSystemFortran.h
+238-185 files

LLVM/project 9855e27 — .github/workflows hlsl-matrix.yaml hlsl-test-all.yaml

[HLSL] Migrate pre-commit HLSL CI to Windows (and off Beanz's closet Mac) (#230639)

Pre-commit validation of HLSL and DirectX changes includes a run of
[offload test suite](https://github.com/llvm/offload-test-suite), which
currently executes on a Mac laptop in Beanz' closet. This change updates
the pipeline to run on a self-hosted Windows runner, with software GPU
offload coverage through D3D12 WARP.

The original pipeline was running `check-llvm` and `check-clang` test
groups. Since DirectX has become an official LLVM target this is no
longer necessary. The HLSL & DirectX tests that are included in the
`check-llvm`/`check-clang` groups are already being run by existing
pre-commit CIs.

The pipeline now executes only offload tests suite runtime tests on WARP
and plus the LLVM `dxil-dis` tool tests, which only depend on `llc`,
`llvm-objcopy` and the 'filecheck` tools from the LLVM build.

Fixes llvm/wg-hlsl#477
DeltaFile
+8-17.github/workflows/hlsl-test-all.yaml
+3-4.github/workflows/hlsl-matrix.yaml
+11-212 files

LLVM/project d97b507 — lld/test/MachO arm64e-auth-pointer.s

[lld-macho] Require a 64-bit host for arm64e-auth-pointer.s (#238623)

The test's far.o case needs a 4 GiB zerofill section, but lld keeps
section sizes in size_t, so on 32-bit hosts the section is empty, _far
isn't far, and the expected error never comes. This broke
clang-armv8-lld-2stage. Like dead-strip.s, require llvm-64-bits.

Fixes https://lab.llvm.org/buildbot/#/builders/122/builds/329

Assisted-by: Claude
DeltaFile
+1-1lld/test/MachO/arm64e-auth-pointer.s
+1-11 files

LLVM/project f9d311a — llvm/test/CodeGen/AMDGPU memory-legalizer-global-system.ll memory-legalizer-global-agent.ll

feedback

Created using spr 1.3.7
DeltaFile
+7,612-3,682llvm/test/CodeGen/AMDGPU/memory-legalizer-private-agent.ll
+7,188-3,478llvm/test/CodeGen/AMDGPU/memory-legalizer-private-system.ll
+4,446-2,097llvm/test/CodeGen/AMDGPU/memory-legalizer-flat-system.ll
+4,446-2,097llvm/test/CodeGen/AMDGPU/memory-legalizer-flat-agent.ll
+4,386-2,069llvm/test/CodeGen/AMDGPU/memory-legalizer-global-agent.ll
+4,138-1,953llvm/test/CodeGen/AMDGPU/memory-legalizer-global-system.ll
+32,216-15,3765,318 files not shown
+127,677-52,3695,324 files