LLVM/project 7a59bfc — llvm/lib/Target/AArch64/GISel AArch64InstructionSelector.cpp, llvm/lib/Target/X86/GISel X86InstructionSelector.cpp

[GlobalISel] Don't constrain register classes of debug operands (#228078)

D129037 made the AArch64 and X86 selectors constrain every vreg operand
of a debug instruction to the smallest register class for its bank. The
case it targeted was a `DBG_VALUE` left referring to an erased def: the
vreg had no class after selection, and a later `getRegClass` call
crashed.

The constraint also applies to vregs with real defs and uses. A debug
instruction is selected before the def of its operand, so the operand
already has the smallest class when its def is selected, even if the def
would give it a wider class without debug info. In #227628, a `COPY`
destination gets `gpr64` instead of `gpr64all`, so the `COPY` is no
longer removed as redundant and the `-O0` code changes.

#231716 fixed the erased-def case at its source: `salvageDebugInfo` now
sets unsalvageable debug uses to `$noreg`.

This PR removes `selectDebugInstr` from both selectors. Vregs with

    [7 lines not shown]
DeltaFile
+0-36llvm/lib/Target/X86/GISel/X86InstructionSelector.cpp
+0-35llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
+23-0llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
+2-3llvm/test/DebugInfo/X86/debug-reg-bank.mir
+2-3llvm/test/DebugInfo/AArch64/debug-reg-bank.mir
+2-2llvm/test/CodeGen/AArch64/GlobalISel/select-hint.mir
+29-796 files

LLVM/project 93d4bb3 — lldb/source/Plugins/Process/Utility NativeRegisterContextDBReg.cpp, lldb/source/Plugins/Register/Native NativeRegisterContextDBReg.cpp

Merge remote-tracking branch 'origin/main' into users/mrsidims/fix-slp-cast-ir-flags
DeltaFile
+495-5llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp
+0-411lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg.cpp
+410-0lldb/source/Plugins/Register/Native/NativeRegisterContextDBReg.cpp
+0-408llvm/lib/CodeGen/LiveVariables.cpp
+309-59llvm/test/Transforms/LoopVectorize/runtime-checks-hoist.ll
+0-347llvm/lib/Transforms/IPO/GlobalOpt.cpp
+1,214-1,230329 files not shown
+9,246-4,863335 files

LLVM/project 4b6842b — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

apply comment
DeltaFile
+2-3llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2-31 files

LLVM/project 8c7a948 — llvm/lib/Target/ARM ARMISelLowering.cpp, llvm/test/CodeGen/Thumb2 mve-vector-deinterleave-load.ll

[ARM] Fold away buildvector(buildvector) (#235524)

This folds away ARMISD::BUILD_VECTOR of another BUILD_VECTOR, generating
a new operation with the operand values directly.

This fixes #234135 from seeing verifier errors by avoiding the undef
lanes.
DeltaFile
+31-2llvm/lib/Target/ARM/ARMISelLowering.cpp
+18-0llvm/test/CodeGen/Thumb2/mve-vector-deinterleave-load.ll
+49-22 files

LLVM/project 6c68e76 — clang/include/clang/Analysis/Analyses/LifetimeSafety LifetimeSafety.h, clang/lib/Analysis/LifetimeSafety Checker.cpp

[LifetimeSafety] Use buildOriginFlowChain for remaining diagnostics in issuePendingWarnings (#212083)
DeltaFile
+25-24clang/test/Sema/LifetimeSafety/safety.cpp
+32-16clang/test/Sema/LifetimeSafety/dangling-field.cpp
+18-17clang/lib/Analysis/LifetimeSafety/Checker.cpp
+21-13clang/lib/Sema/SemaLifetimeSafety.h
+15-9clang/test/Sema/LifetimeSafety/invalidations.cpp
+13-5clang/include/clang/Analysis/Analyses/LifetimeSafety/LifetimeSafety.h
+124-846 files not shown
+148-11212 files

LLVM/project 1f6427d — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce/X86 lcssa-preservation-regression.ll duplicate-phi-nodes.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+55-0llvm/test/Transforms/LoopStrengthReduce/X86/incoming-dead-insts.ll
+51-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+9-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-2llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+115-24 files

LLVM/project 21b56c5 — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce preserve-lcssa.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+52-0llvm/test/Transforms/LoopStrengthReduce/X86/incoming-dead-insts.ll
+51-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+13-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-3llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+0-1llvm/test/Transforms/LoopStrengthReduce/preserve-lcssa.ll
+116-45 files

LLVM/project 632eba8 — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce/X86 lcssa-preservation-regression.ll duplicate-phi-nodes.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+55-0llvm/test/Transforms/LoopStrengthReduce/X86/incoming-dead-insts.ll
+51-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+9-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-2llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+115-24 files

LLVM/project 7edae3f — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce/X86 lcssa-preservation-regression.ll duplicate-phi-nodes.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+51-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+9-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-2llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+60-23 files

LLVM/project ac9879e — clang/docs ReleaseNotes.md, clang/lib/CodeGen CGCXX.cpp

[clang][CodeGen] Fix a crash caused by inconsistent addrspace (#236752)

fixes https://github.com/llvm/llvm-project/issues/236285
DeltaFile
+20-0clang/test/CodeGen/avr/issue-236285.cpp
+5-3clang/lib/CodeGen/CGCXX.cpp
+2-0clang/docs/ReleaseNotes.md
+27-33 files

LLVM/project e98b16a — llvm/include/llvm/ADT AddressRanges.h

[ADT] Qualify AddressRange in AddressRangesBase::find. NFC (#237144)

With `-fdelayed-template-parsing` (the default for clang targeting the
MSVC ABI), `find` is parsed at the end of the TU, where `llvm-profgen`
makes `llvm::sampleprof::AddressRange` visible in `namespace llvm`.
Qualify with `llvm::` to avoid the ambiguity.

```
AddressRanges.h:101:42: error: reference to 'AddressRange' is ambiguous
note: candidate found by name lookup is 'llvm::AddressRange'
note: candidate found by name lookup is 'llvm::sampleprof::AddressRange'
```
DeltaFile
+4-3llvm/include/llvm/ADT/AddressRanges.h
+4-31 files

LLVM/project e47d33d — llvm/lib/Target/Sparc SparcInstrInfo.td SparcISelLowering.cpp, llvm/test/CodeGen/SPARC tls-ie-licm.ll

[SPARC] Keep the GOT memory operand on TLS initial-exec loads (#237512)

The initial-exec TP offset load (SPISD::TLS_LD) was a plain node, so
TLS_LD[X]rr had no memory operand and was not known to be an invariant
load. MachineLICM, MachineCSE and rematerialization then left one GOT
load per use, including inside loops.

Build it as a memory node with a GOT MachinePointerInfo, as was done for
the GOTDATA_OP load in 5cf27304eccf.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+49-0llvm/test/CodeGen/SPARC/tls-ie-licm.ll
+5-3llvm/lib/Target/Sparc/SparcISelLowering.cpp
+2-1llvm/lib/Target/Sparc/SparcInstrInfo.td
+56-43 files

LLVM/project cf44dd9 — llvm/lib/Target/DirectX DXILIntrinsicExpansion.cpp

[DirectX] expandIsFPClass - silence MSVC promoted shift warning (#237237)

Use APInt::getSignMask to create -0.0 bitmask instead of raw uint32_t
shift that is then implicitly promoted to uint64_t in the
ConstantInt::get call.

Silences MSVC "result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)" warning.
DeltaFile
+2-3llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
+2-31 files

LLVM/project 00cbe82 — libc/src/stdlib CMakeLists.txt environ_internal.cpp, libc/test/integration/src/stdlib CMakeLists.txt getenv_test.cpp

[libc][stdlib] Avoid scanning values during environment lookup (#228633)

Constructing a string_view for each environment entry scans the entire
value to determine its length, even when the name does not match. This
makes lookups unnecessarily expensive for long values such as PATH.

Filter entries by their first character, then compare the remaining name
up to a mismatch or null terminator. Require a following '=' to match
the complete key, preserving support for empty names in putenv.

Closes #196016
DeltaFile
+32-0libc/test/integration/src/stdlib/getenv_test.cpp
+19-4libc/src/stdlib/environ_internal.cpp
+1-0libc/test/integration/src/stdlib/CMakeLists.txt
+1-0libc/src/stdlib/CMakeLists.txt
+53-44 files

LLVM/project 815aa86 — llvm/test/Transforms/LoopStrengthReduce/X86 duplicate-phi-nodes.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+54-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+54-01 files

LLVM/project 1c64973 — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce/X86 lcssa-preservation-regression.ll duplicate-phi-nodes.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+51-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+9-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-2llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+60-23 files

LLVM/project 65f69e1 — llvm/test/Transforms/LoopStrengthReduce/X86 duplicate-phi-nodes.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+54-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+54-01 files

LLVM/project 56cc7fa — llvm/test/CodeGen/RISCV/GlobalISel/instruction-select ctlz-rv64.mir

[RISCV][GISel] Fix G_CTLZ operand in ctlz-rv64.mir test. NFC (#237499)
DeltaFile
+3-2llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/ctlz-rv64.mir
+3-21 files

LLVM/project 2323019 — clang/lib/Interpreter DeviceOffload.cpp, clang/test/Interpreter/CUDA ptx-version.cu

[clang-repl] Pass the target features to the device TargetMachine (#235754)

IncrementalCUDADeviceParser creates the NVPTX TargetMachine with an
empty feature string. The +ptxNN feature that the driver derives from
the CUDA version is dropped, causing the backend to emit the minimum PTX
version for the target SM instead. A kernel using a newer instruction
then fails to load with cudaErrorInvalidPtx, for example shfl.sync below
sm_70.

Join TargetOptions::Features into the feature string, as done in
EmitAssemblyHelper::CreateTargetMachine.

Add a unittest that passes --cuda-feature=+ptx80 to the device
compilation and checks the .version of the embedded PTX.
DeltaFile
+14-0clang/test/Interpreter/CUDA/ptx-version.cu
+3-2clang/lib/Interpreter/DeviceOffload.cpp
+17-22 files

LLVM/project 1f406e3 — llvm/include/llvm/IR BasicBlock.h, llvm/lib/IR BasicBlock.cpp

[IR] Put validateInstrOrdering behind ABI_BREAKING_CHECKS (#235885)

A release LLVM library will provide no definition for
validateInstrOrdering, but the inline definition is guarded behing
NDEBUG -- so a LLVM consumer including the headers without NDEBUG won't
have a definition of the function (and is thereby prevented from calling
invalidateOrders()).

Move the inline function behind LLVM_ENABLE_ABI_BREAKING_CHECKS instead.
DeltaFile
+2-2llvm/include/llvm/IR/BasicBlock.h
+3-1llvm/lib/IR/BasicBlock.cpp
+5-32 files

LLVM/project a999b40 — lldb/source/Commands CommandOptionsProcessAttach.h CommandObjectPlatform.cpp, lldb/test/API/iohandler/picker TestIOHandlerPicker.py

[lldb] Show a process picker in process attach without a pid

This patch makes `process attach` show an `IOHandlerPicker` listing the
processes on the selected platform, with their pid, name, and
architecture, when it is run without a pid or process name and the target
has no executable to fall back on. `platform process attach` does the same
whenever no pid or name is given. Scripted process attaches (`-C`) are left
unchanged.

When the input is not an interactive terminal, both commands skip the
picker and fail the same way they did before, and canceling the picker
fails with "no process selected".

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>


DeltaFile
+42-0lldb/source/Commands/CommandOptionsProcessAttach.cpp
+14-0lldb/source/Commands/CommandObjectProcess.cpp
+13-0lldb/source/Commands/CommandObjectPlatform.cpp
+9-1lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+9-0lldb/source/Commands/CommandOptionsProcessAttach.h
+87-15 files

LLVM/project 16e328b — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Core IOHandlerPicker.cpp

[lldb] Add search to IOHandlerPicker

This patch lets the user filter the picker's rows by pressing `/` and
typing a query. A row is shown if any of its columns contains the query,
ignoring case. While the search prompt is open, printable keys edit the
query and the arrow keys keep moving through the matches. Enter applies
the filter and returns to navigation, ESC clears it, and Backspace on an
empty query leaves the prompt.

The footer shows the active filter and how many rows it hides. In
multi-select mode, rows hidden by the filter keep their checked state and
are still returned on confirm.

To support this, `ReadKey` now returns printable characters as-is, and the
mapping of `j`, `k`, `s`, and Space to actions moves into `HandleKey`. A
read failure or Ctrl+C always cancels the picker, even while searching.

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>

    [2 lines not shown]
DeltaFile
+164-81lldb/source/Core/IOHandlerPicker.cpp
+51-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+23-10lldb/include/lldb/Core/IOHandlerPicker.h
+238-913 files

LLVM/project bd35a09 — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Core IOHandlerPicker.cpp

[lldb] Add column sorting to IOHandlerPicker

This patch lets the user sort the picker's rows by pressing `s`, which
cycles through each column in ascending then descending order before
returning to the original order. A column whose values are all integers
compares numerically, and other columns compare as strings. Ties keep
their original relative order, and the cursor moves back to the top after
each sort so the new order is visible.

The column header shows which column is sorted and in which direction, and
each column reserves room for that indicator so it doesn't shift the
layout.

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+87-10lldb/source/Core/IOHandlerPicker.cpp
+20-4lldb/include/lldb/Core/IOHandlerPicker.h
+17-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+124-143 files

LLVM/project 8ebcb98 — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Commands CommandObjectTestPicker.h CommandObjectTestPicker.cpp

[lldb] Add an interactive picker IOHandler

This patch adds `IOHandlerPicker`, an ANSI-based IOHandler that lets the
user choose one or more items from a table. It supports single-select and
multi-select modes, arrow and vim-style navigation, and paging. It draws on
the alternate screen buffer so the user's scrollback is restored on exit,
redraws itself when the terminal is resized, and reports a canceled result
when the input is not an interactive terminal.

The statusline can't stay up underneath the picker: its scroll region
also applies to the alternate screen, and its cursor save/restore shares
the slot that leaving the alternate screen restores. This patch
addresses that by adding `Debugger::HideStatusline` and
`Debugger::ShowStatusline`, which the picker uses to remove the
statusline while it owns the screen and bring it back once it's done.

`AnsiTerminal.h` didn't have macros for the DEC private modes the picker
toggles: cursor visibility, auto-wrap, and the alternate screen buffer.
This patch adds them there, so we don't hard-code those escape sequences

    [10 lines not shown]
DeltaFile
+449-0lldb/source/Core/IOHandlerPicker.cpp
+125-0lldb/include/lldb/Core/IOHandlerPicker.h
+101-0lldb/source/Commands/CommandObjectTestPicker.cpp
+90-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+18-8lldb/source/Core/Debugger.cpp
+25-0lldb/source/Commands/CommandObjectTestPicker.h
+808-86 files not shown
+835-812 files

LLVM/project fbbabb1 — lldb/source/Commands CommandOptionsProcessAttach.h CommandObjectPlatform.cpp, lldb/test/API/iohandler/picker TestIOHandlerPicker.py

[lldb] Show a process picker in process attach without a pid

This patch makes `process attach` show an `IOHandlerPicker` listing the
processes on the selected platform, with their pid, name, and
architecture, when it is run without a pid or process name and the target
has no executable to fall back on. `platform process attach` does the same
whenever no pid or name is given. Scripted process attaches (`-C`) are left
unchanged.

When the input is not an interactive terminal, both commands skip the
picker and fail the same way they did before, and canceling the picker
fails with "no process selected".

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+46-0lldb/source/Commands/CommandOptionsProcessAttach.cpp
+14-0lldb/source/Commands/CommandObjectProcess.cpp
+13-0lldb/source/Commands/CommandObjectPlatform.cpp
+9-1lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+9-0lldb/source/Commands/CommandOptionsProcessAttach.h
+91-15 files

LLVM/project f1f7693 — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Core IOHandlerPicker.cpp

[lldb] Add search to IOHandlerPicker

This patch lets the user filter the picker's rows by pressing `/` and
typing a query. A row is shown if any of its columns contains the query,
ignoring case. While the search prompt is open, printable keys edit the
query and the arrow keys keep moving through the matches. Enter applies
the filter and returns to navigation, ESC clears it, and Backspace on an
empty query leaves the prompt.

The footer shows the active filter and how many rows it hides. In
multi-select mode, rows hidden by the filter keep their checked state and
are still returned on confirm.

To support this, `ReadKey` now returns printable characters as-is, and the
mapping of `j`, `k`, `s`, and Space to actions moves into `HandleKey`. A
read failure or Ctrl+C always cancels the picker, even while searching.

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+164-81lldb/source/Core/IOHandlerPicker.cpp
+51-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+23-10lldb/include/lldb/Core/IOHandlerPicker.h
+238-913 files

LLVM/project d08250c — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Core IOHandlerPicker.cpp

[lldb] Add column sorting to IOHandlerPicker

This patch lets the user sort the picker's rows by pressing `s`, which
cycles through each column in ascending then descending order before
returning to the original order. Columns marked `is_numeric` compare as
integers, and other columns compare as strings. Ties keep their original
relative order, and the cursor moves back to the top after each sort so the
new order is visible.

The column header shows which column is sorted and in which direction, and
each column reserves room for that indicator so it doesn't shift the
layout.

Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+88-10lldb/source/Core/IOHandlerPicker.cpp
+20-4lldb/include/lldb/Core/IOHandlerPicker.h
+17-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+125-143 files

LLVM/project 9b03c7f — lldb/include/lldb/Core IOHandlerPicker.h, lldb/source/Commands CommandObjectTestPicker.h CommandObjectTestPicker.cpp

[lldb] Add an interactive picker IOHandler

This patch adds `IOHandlerPicker`, an ANSI-based IOHandler that lets the
user choose one or more items from a table. It supports single-select and
multi-select modes, arrow and vim-style navigation, and paging. It draws on
the alternate screen buffer so the user's scrollback is restored on exit,
redraws itself when the terminal is resized, and reports a canceled result
when the input is not an interactive terminal.

The statusline can't stay up underneath the picker: its scroll region
also applies to the alternate screen, and its cursor save/restore shares
the slot that leaving the alternate screen restores. This patch
addresses that by adding `Debugger::HideStatusline` and
`Debugger::ShowStatusline`, which the picker uses to remove the
statusline while it owns the screen and bring it back once it's done.

`AnsiTerminal.h` didn't have macros for the DEC private modes the picker
toggles: cursor visibility, auto-wrap, and the alternate screen buffer.
This patch adds them there, so we don't hard-code those escape sequences

    [9 lines not shown]
DeltaFile
+449-0lldb/source/Core/IOHandlerPicker.cpp
+128-0lldb/include/lldb/Core/IOHandlerPicker.h
+105-0lldb/source/Commands/CommandObjectTestPicker.cpp
+90-0lldb/test/API/iohandler/picker/TestIOHandlerPicker.py
+18-8lldb/source/Core/Debugger.cpp
+25-0lldb/source/Commands/CommandObjectTestPicker.h
+815-86 files not shown
+842-812 files

LLVM/project d35f657 — bolt/docs BAT.md conf.py, bolt/docs/_static bolt.css

[BOLT][Docs] Update webpage styling (#237235)

This PR makes a variety of changes, ahead of the new BOLT sub-domain to
improve the formatting of the webpages:
- Added HTML/CSS styling and templates inspired by
https://clang.llvm.org/.
- Makes navigation, labelling and spacing consistent 
- Simplifies the Sphinx configuration to build the webpages. 
- Added documentation on how to edit the webpages. 

Additionally this PR links to
[#1070](https://github.com/llvm/llvm-zorg/pull/1070) which enables the
webpages to be built using Sphinx.

Assisted-by: Codex
DeltaFile
+172-0bolt/docs/_static/bolt.css
+24-24bolt/docs/profiles.md
+4-29bolt/docs/conf.py
+15-18bolt/docs/index.md
+24-0bolt/docs/_templates/sidebar.html
+11-11bolt/docs/BAT.md
+250-823 files not shown
+287-899 files

LLVM/project 9aa9a3d — llvm/lib/Target/Sparc SparcFrameLowering.cpp, llvm/test/CodeGen/SPARC leafproc-read-register.ll leafproc-high-pressure.ll

[SPARC] Add live-ins for reserved registers remapped in leaf procedures (#236654)

Leaf procedure lowering remaps %i0-%i7 to %o0-%o7 after register
allocation. Reserved registers are not tracked by liveness, so a read of
%i7 through llvm.read_register has no live-in. Once %i7 is remapped to
the unreserved %o7, the machine verifier reports a use of an undefined
physical register. The test added by PR 212838 reads %i7 as %r31 and
hit this on the expensive checks builders.

When a reserved %i register is remapped to an unreserved %o register,
add the %o register as a live-in to every block. In a leaf procedure it
holds the incoming value for the whole function.

PR 213359 instead moved the leaf decision before register allocation.
That made call-free functions under register pressure into leaf
procedures that spill instead of keeping their register window. Here
the leaf decision stays after register allocation.

leafproc-high-pressure.ll is the test doac provided in the review of

    [7 lines not shown]
DeltaFile
+55-0llvm/test/CodeGen/SPARC/leafproc-high-pressure.ll
+53-0llvm/test/CodeGen/SPARC/leafproc-read-register.ll
+11-0llvm/lib/Target/Sparc/SparcFrameLowering.cpp
+119-03 files