LLVM/project b4bccce — libc/src/__support/printf_core float_inf_nan_converter.h float_dec_converter_limited.h, libc/src/stdlib strfroml.cpp str_from_util.h

[libc] Fix strfromf handling inf/nan. (#225805)

The root cause of #217708 is primarily in
libc/src/stdlib/str_from_util.h, which splits the utilities into
1. `parse_from_format()` which takes in a floating point and returns a
`FormatSection`, and
2. `strfromfloat_convert()`, which takes in the `FormatSection` and not
the floating point value.

`parse_from_format()` [does special case
handling](https://github.com/llvm/llvm-project/blob/35fe7e14ecb4e50182fe93123e1876824d14bb94/libc/src/stdlib/str_from_util.h#L41-L49)
for `float`: it must place a `double` into `FormatSection::conv_val_raw`
when working with `%a` or `%A`. `strfromfloat_convert()` extracts the
bits from `conv_val_raw` to create `fputil::FPBits<T>`, but it [always
uses the template
type](https://github.com/llvm/llvm-project/blob/35fe7e14ecb4e50182fe93123e1876824d14bb94/libc/src/stdlib/str_from_util.h#L115),
effectively creating type confusion when those bits are passed to
`convert_float_hex_exp()`.


    [34 lines not shown]
DeltaFile
+79-57libc/src/__support/printf_core/float_hex_converter.h
+40-66libc/src/stdlib/str_from_util.h
+57-28libc/src/__support/printf_core/float_dec_converter.h
+43-28libc/src/__support/printf_core/float_dec_converter_limited.h
+3-29libc/src/__support/printf_core/float_inf_nan_converter.h
+3-13libc/src/stdlib/strfroml.cpp
+225-2213 files not shown
+227-2429 files

FreeNAS/freenas d31e094 — src/middlewared/middlewared/plugins/system_general update.py

Gate standby pam regeneration on failover.licensed

system.general.update called failover.call_remote unconditionally when ds_auth or ui_certificate changed, stalling for the connect timeout and logging a spurious standby warning on non-HA systems.
DeltaFile
+5-4src/middlewared/middlewared/plugins/system_general/update.py
+5-41 files

LLVM/project c226f8d — llvm/lib/Target/SystemZ SystemZFrameLowering.cpp, llvm/test/CodeGen/SystemZ zos-ret-addr.ll zos-frameaddr.ll

[SystemZ][z/OS] Allocate a stack frame when callee-saved registers are saved (#226681)

On z/OS (XPLINK64), a function without calls and without stack objects
that uses callee-saved registers got a stack size of 0. No stack frame
was allocated, so `STMG` stored the registers relative to the unchanged
stack pointer, i.e. into the register save area of the caller's DSA,
overwriting the caller's saved return address. Only skip the frame when
there is nothing to save.

Two existing tests (`zos-ret-addr.ll`, `zos-frameaddr.ll`) encoded this
store into the caller's frame and are updated; the values returned by
`llvm.returnaddress`/`llvm.frameaddress` are unchanged (the old stack
pointer is still read from offset 2048 of the current frame). New test
`zos-frame-callee-saved.ll`.

Found with GMP 6.3.0 on z/OS 3.1 (`mpn_mul_1`): code after the call ran
twice, then S0C4/S0C6. With this change GMP works.

Tests: `llvm-lit test/CodeGen/SystemZ test/MC/SystemZ test/MC/GOFF`

    [6 lines not shown]
DeltaFile
+28-0llvm/test/CodeGen/SystemZ/zos-frame-callee-saved.ll
+10-2llvm/test/CodeGen/SystemZ/zos-ret-addr.ll
+10-2llvm/test/CodeGen/SystemZ/zos-frameaddr.ll
+5-1llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
+53-54 files

LLVM/project b5a51c5 — libc/include fcntl.yaml, libc/include/llvm-libc-macros/linux fcntl-macros.h

[libc] Add a few missing fcntl.h macro. (#226810)

* Add a few POSIX-specified symbolic constants to `<fcntl.h>`:
`O_RSYNC`,
  `AT_SYMLINK_FOLLOW`, and `F_DUPFD_CLOEXEC`.
* Don't add `_CLOFORK` variants, since those are not supported by Linux.
* List the constants in the `fcntl.yaml` file for posterity.
DeltaFile
+76-2libc/include/fcntl.yaml
+6-0libc/include/llvm-libc-macros/linux/fcntl-macros.h
+82-22 files

LLVM/project e3cf335 — llvm/lib/Transforms/InstCombine InstCombineAndOrXor.cpp, llvm/test/Transforms/InstCombine pr226504.ll pr226504-commuted.ll

[InstCombine] Fix miscompilation in sinkNotIntoOtherHandOfLogicalOp (#226783)

Consider the following: `or X, (not (not X))`
sinkNotIntoOtherHandOfLogicalOp calls `freelyInvert(X)` but as X is used
in the not this call result in the new instruction is `and (not X), (not
(not X)) -> and (not X), X` instead of the expected `and (not X), (not
X)`

fixes https://github.com/llvm/llvm-project/issues/226504
DeltaFile
+20-0llvm/test/Transforms/InstCombine/pr226504.ll
+20-0llvm/test/Transforms/InstCombine/pr226504-commuted.ll
+6-0llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+46-03 files

LLVM/project 3eda2ae — lldb/test/API/python_api/event TestEvents.py

[lldb][test] Disable TestEvents.py (#226486)

This test is flaky on Linux, macOS and Windows. The usual failure on
macOS is as follows:

```
FAIL: test_shadow_listener (TestEvents.EventAPITestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 801, in wrapper
    func(*args, **kwargs)
llvm-project/lldb/test/API/python_api/event/TestEvents.py", line 485, in test_shadow_listener
    state, restarted = self.wait_for_next_event(None, False)
llvm-project/lldb/test/API/python_api/event/TestEvents.py", line 346, in wait_for_next_event
    self.assertEqual(
>>> AssertionError: 2 != 3 : matching stop hook
Config=arm64-/Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake-matrix/lldb-build/bin/clang
----------------------------------------------------------------------
```

    [2 lines not shown]
DeltaFile
+2-17lldb/test/API/python_api/event/TestEvents.py
+2-171 files

LLVM/project 1f9c1cb — llvm/lib/Target/AMDGPU AMDGPUISelLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mul.i24.ll

[AMDGPU] Fold 24 bit multiply with zero low bits

Fold `MUL_I24` and `MUL_U24` to zero when either operand has known zero
low 24 bits.

For example:
```
  llvm.amdgcn.mul.i24(x, 0x01000000) -> 0
```
DeltaFile
+21-33llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mul.i24.ll
+5-0llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+26-332 files

LLVM/project 812bcae — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/lib/Target/AMDGPU AMDGPUISelLowering.cpp

[SelectionDAG][AMDGPU] Fold mul24 with an AND operand whose low bits are zero

Use SimplifyMultipleUseDemandedBits to simplify AND operands based on the
low 24 bits consumed by mul24.

Fold the multiply to zero when the simplified operand is zero.

This folds cases such as:

  mul24(x & 0xff000000, y) -> 0
DeltaFile
+8-8llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+6-3llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mul.i24.ll
+5-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+19-113 files

LLVM/project 78f68e5 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mul.i24.ll rotl.ll

[SelectionDAG] Handle constants in SimplifyMultipleUseDemandedBits

Replace a non-zero constant with zero when none of its set bits are
demanded.

This allows users of `SimplifyMultipleUseDemandedBits` to eliminate
irrelevant constant bits while preserving the convention that a null
SDValue indicates no simplification.
DeltaFile
+38-45llvm/test/CodeGen/AMDGPU/rotl.ll
+3-6llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mul.i24.ll
+3-4llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
+2-4llvm/test/CodeGen/SystemZ/shift-08.ll
+2-4llvm/test/CodeGen/SystemZ/shift-04.ll
+6-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+54-634 files not shown
+58-7110 files

LLVM/project 429ba6f — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/lib/Target/AMDGPU AMDGPUISelLowering.cpp

[AMDGPU] Fold mul24 with an operand whose low 24 bits are zero

mul24 only reads the low 24 bits of each operand. Try SimplifyDemandedBits
before SimplifyMultipleUseDemandedBits so that a single use operand such as
`(x & 0xff000000)` is simplified to zero, then fold the multiply to zero when
either operand is a zero constant.

This folds cases such as:
```
  mul24(x & 0xff000000, y) -> 0
  mul24(x, 0) -> 0
```
DeltaFile
+12-14llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+0-5llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+12-192 files

OpenBSD/ports TGidEk8 — print/libcupsfilters distinfo Makefile, print/libcupsfilters/patches patch-cupsfilters_pdftopdf_c patch-cupsfilters_pdf_c

   Update to a recent commit to unbreak several printing scenarii.
VersionDeltaFile
1.10+15-5print/libcupsfilters/Makefile
1.6+2-2print/libcupsfilters/distinfo
1.3+0-0print/libcupsfilters/patches/patch-cupsfilters_pdftopdf_c
1.2+0-0print/libcupsfilters/patches/patch-cupsfilters_pdf_c
+17-74 files

LLVM/project 7eb87fc — lldb/test/API/api/multithreaded common.h

[lldb][test] Simplify multithreaded_queue (#226979)

This makes it easier to see how the timeout is applied in pop.

push now releases the mutex before notifying, where before the watchers
would have to wait for push to return. Likely not going to make anything
much faster, but it makes a bit more sense. Finish adding the new item,
then notify.
DeltaFile
+14-18lldb/test/API/api/multithreaded/common.h
+14-181 files

FreeBSD/ports 3c77097 — games/chroma distinfo Makefile

games/chroma: update 1.20 → 1.21

- update WWW
DeltaFile
+3-4games/chroma/Makefile
+3-3games/chroma/distinfo
+6-72 files

FreeBSD/ports de78542 — Mk/Uses sdl.mk

sdl.mk: add support for mixer3
DeltaFile
+4-1Mk/Uses/sdl.mk
+4-11 files

FreeBSD/ports 1b3b445 — games/lbreakouthd Makefile distinfo

games/lbreakouthd: update 1.2.3 → 1.2.4
DeltaFile
+3-3games/lbreakouthd/distinfo
+1-1games/lbreakouthd/Makefile
+4-42 files

FreeBSD/ports c93096f — games/opentyrian Makefile distinfo

games/opentyrian: update 2.1.20221123 → 2.1.20260913
DeltaFile
+3-3games/opentyrian/distinfo
+1-1games/opentyrian/Makefile
+4-42 files

LLVM/project 83c3a2d — offload/plugins-nextgen/level_zero/src L0Program.cpp, offload/test/offloading shared_lib_global_var.c

[offload][l0] Execute dynamic linking for all formats (#226980)

Also do dynamic linking when necessary for Offload Binaries and SPIR-V
images and not just for the old ELF format.
DeltaFile
+49-0offload/test/offloading/shared_lib_global_var.c
+21-3offload/plugins-nextgen/level_zero/src/L0Program.cpp
+70-32 files

LLVM/project 74d8ea4 — llvm/lib/Target/AMDGPU AMDGPUEventTracking.h AMDGPUEventTracking.cpp, llvm/unittests/Target/AMDGPU AMDGPUEventTrackingTest.cpp

Comments
DeltaFile
+41-41llvm/lib/Target/AMDGPU/AMDGPUEventTracking.cpp
+0-10llvm/lib/Target/AMDGPU/AMDGPUEventTracking.h
+2-2llvm/unittests/Target/AMDGPU/AMDGPUEventTrackingTest.cpp
+43-533 files

LLVM/project a38fc12 — llvm/lib/Target/NVPTX NVPTXTargetMachine.cpp NVPTXCodeGenPassBuilder.cpp, llvm/test/CodeGen/NVPTX llc-pipeline-npm.ll

NVPTX: Drop LiveVariables from the register allocation pipeline

The optimized RegAlloc pipeline ran LiveVariables only to satisfy PHIElimination
and TwoAddressInstruction, both of which no longer need it. Remove the
LiveVariables run (and, in the new pass manager, the UnreachableMachineBlockElim
that was there only as a LiveVariables prerequisite).

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+0-7llvm/lib/Target/NVPTX/NVPTXCodeGenPassBuilder.cpp
+0-2llvm/test/CodeGen/NVPTX/llc-pipeline-npm.ll
+0-1llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+0-103 files

LLVM/project d6f15ee — llvm/lib/Target/AMDGPU SIFoldOperands.cpp SIInstrInfo.cpp, llvm/lib/Target/RISCV RISCVInstrInfo.cpp

CodeGen: Drop the LiveVariables parameter from convertToThreeAddress

This was used for analysis updates, but now the analysis is being
removed.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+15-69llvm/lib/Target/X86/X86InstrInfo.cpp
+0-17llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+0-11llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+1-10llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
+2-4llvm/lib/Target/X86/X86InstrInfo.h
+2-2llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+20-1136 files not shown
+25-12012 files

LLVM/project 1f2f24b — llvm/lib/Target/AMDGPU SILowerControlFlow.cpp, llvm/test/CodeGen/AMDGPU lower-control-flow-live-variables-update.xfail.mir lower-control-flow-live-variables-update.mir

AMDGPU: Remove update-only LiveVariables maintenance from SILowerControlFlow

This was only maintained, never relied on. Part of staged LiveVariables
removal.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+87-0llvm/test/CodeGen/AMDGPU/lower-control-flow-live-variables-update.mir
+5-71llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp
+0-42llvm/test/CodeGen/AMDGPU/lower-control-flow-live-variables-update.xfail.mir
+92-1133 files

LLVM/project 1475bdb — llvm/lib/CodeGen TargetPassConfig.cpp, llvm/test/CodeGen/RISCV/rvv fminimum-sdnode.ll fmaximum-sdnode.ll

Remove the obsolete -early-live-intervals flag
DeltaFile
+89-180llvm/test/CodeGen/X86/statepoint-cmp-sunk-past-statepoint.ll
+2-9llvm/test/CodeGen/Thumb2/mve-shuffle.ll
+0-8llvm/test/CodeGen/RISCV/rvv/fminimum-sdnode.ll
+0-8llvm/test/CodeGen/RISCV/rvv/fmaximum-sdnode.ll
+1-5llvm/test/CodeGen/Thumb2/mve-vld3.ll
+0-5llvm/lib/CodeGen/TargetPassConfig.cpp
+92-21543 files not shown
+96-27449 files

LLVM/project 31c93a2 — llvm/lib/CodeGen TwoAddressInstructionPass.cpp, llvm/test/CodeGen/Hexagon two-addr-tied-subregs.mir

CodeGen: Remove LiveVariables use from TwoAddressInstructionPass

Now that LiveIntervals is computed unconditionally before TwoAddressInstructions
in the pipeline, the pass no longer needs LiveVariables.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+38-131llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
+18-18llvm/test/CodeGen/X86/statepoint-vreg-unlimited-tied-opnds.ll
+9-16llvm/test/CodeGen/X86/two-address-subreg-to-reg-kill.mir
+8-8llvm/test/CodeGen/SystemZ/twoaddr-kill.mir
+7-7llvm/test/CodeGen/Hexagon/two-addr-tied-subregs.mir
+3-3llvm/test/CodeGen/X86/twoaddr-dbg-value.mir
+83-1831 files not shown
+85-1857 files

LLVM/project 35b38be — llvm/test/CodeGen/AMDGPU amdgcn.bitcast.960bit.ll load-constant-i8.ll

CodeGen: Compute LiveIntervals before TwoAddressInstructions

TwoAddressInstructions is the traditional primary use of LiveVariables,
but it has gained a LiveIntervals path. By moving LiveIntervals earlier,
the default flips to rely on it instead of LiveVariables. The overall
test churn is mostly neutral, with more net wins than losses.

This should move before phi elimination. This is a staging move to
incrementally remove the LiveVariables support from TwoAddressInstructions,
and because the move to running LiveIntervals on SSA is a bigger leap.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+42,004-42,000llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+7,206-7,302llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+2,603-2,582llvm/test/CodeGen/AMDGPU/load-constant-i1.ll
+1,833-1,839llvm/test/CodeGen/AMDGPU/load-local-i16.ll
+1,790-1,779llvm/test/CodeGen/AMDGPU/load-constant-i8.ll
+1,685-1,735llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+57,121-57,237307 files not shown
+97,781-98,263313 files

LLVM/project 21277fd — libcxx/test/benchmarks/containers string.bench.cpp

[libc++] Add a benchmark for string::append (#226559)
DeltaFile
+61-0libcxx/test/benchmarks/containers/string.bench.cpp
+61-01 files

LLVM/project 26f6f83 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 shufflevector.ll neon-truncstore.ll

[AArch64] Add custom v2i32->v2i16 store lowering. (#223659)

This extends the existing v4i16->v4i8 lowering to handle v2i32->v2i16
stores too, which in general helps keep the number of instructions down.
DeltaFile
+42-41llvm/test/CodeGen/AArch64/vec3-loads-ext-trunc-stores.ll
+11-14llvm/test/CodeGen/AArch64/andorxor.ll
+13-11llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+13-7llvm/test/CodeGen/AArch64/store.ll
+5-11llvm/test/CodeGen/AArch64/neon-truncstore.ll
+5-9llvm/test/CodeGen/AArch64/shufflevector.ll
+89-9316 files not shown
+123-14822 files

LLVM/project 005ca36 — flang/lib/Lower Bridge.cpp, flang/test/Lower do-loop-branch-to-loop-header.f90 do_loop_unstructured.f90

[flang] Lower loops whose branching is confined to their body structurally

Such a loop was classified separately by a previous change but still
lowered as unstructured, so its structured form was lost.

Lower it structurally instead, with its body folded into a region that can
hold the branching. The loop keeps its bounds on the op, so it remains
available to whatever transforms or parallelizes it. Only the body is
folded: the loop control statements are emitted as they are for any
structured loop, since a branch from outside may target either of them.

Loops an OpenACC or OpenMP directive owns are lowered the same way, so
they keep their form too.
DeltaFile
+20-134flang/test/Lower/do_loop_unstructured.f90
+119-11flang/lib/Lower/Bridge.cpp
+73-0flang/test/Lower/OpenACC/acc-unstructured-internals.f90
+34-28flang/test/Lower/OpenMP/wsloop-unstructured-cycle.f90
+55-0flang/test/Lower/do-loop-branch-to-loop-header.f90
+50-0flang/test/Lower/OpenMP/metadirective-loop-unstructured.f90
+351-17310 files not shown
+453-24116 files

LLVM/project 78abcc6 — flang/test/Lower do-loop-infinite-body-cycle.f90

[flang][Test] Cover the lowering of loops with a non-terminating body

A previous change leaves such a loop unstructured. Check what that produces:
the cycle survives as a block branching to itself, no fir.do_loop is emitted
for the loop control, and a loop that only needs a block of its own still
gets the structured form with its body in a region.
DeltaFile
+22-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+22-01 files

LLVM/project aa8ab40 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower do-loop-infinite-body-cycle.f90

[flang] Keep loops with a non-terminating body unstructured

A loop body that cannot run to completion must not be folded into an
scf.execute_region: the region carries no memory effects, so DCE deletes
it outright, dropping the non-termination and letting execution fall past
the loop. Branches survive that, being terminators.

An infinite DO was already rejected. Follow chains of unconditional GO TOs
as well and reject a body whose chain closes on itself, which is the same
bound the cf.br canonicalization applies to cyclic branches.
DeltaFile
+49-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+30-1flang/lib/Lower/PFTBuilder.cpp
+79-12 files

LLVM/project c96bf57 — flang/lib/Lower PFTBuilder.cpp

[flang] Honor the execute-region wrap flag when detecting loop internals

A loop whose branching is confined to its body is lowered with that body
in an scf.execute_region, since the CFG needs more than the single block
fir.do_loop's region admits. With the wrap disabled there is nowhere to
put those blocks, so skip the reclassification and leave the loop
unstructured.
DeltaFile
+7-0flang/lib/Lower/PFTBuilder.cpp
+7-01 files