LLVM/project 4da852clld/ELF/Arch X86_64.cpp, lld/test/ELF x86-64-tlsdesc-gd.s x86-64-tls-gdie.s

[ELF] Range-check the x86-64 GD-to-IE TLS optimizations

Add range-checks to relaxTlsGdToIe so that they fail when the PC-relative
displacement is larger than 32-bit (signed). The un-relaxed paths in
X86_64::relocate already do this via checkInt()

Assisted-By: Opus 5
DeltaFile
+13-0lld/test/ELF/x86-64-tls-pltoff64.s
+9-0lld/test/ELF/x86-64-tlsdesc-gd.s
+9-0lld/test/ELF/x86-64-tls-gdie.s
+3-0lld/ELF/Arch/X86_64.cpp
+34-04 files

LLVM/project f677d3fllvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination pointer-tighten-ne.ll

[ConstraintElimination] Allow pointer types in tightenBoundUsingNe (#223215)

Allow pointer types in ConstraintInfo::tightenBoundUsingNe() for the
unsigned system. When A != B is known and the system already implies A
u>= B, tighten the bound to strict inequality A u> B (symmetrically, A
u<= B becomes A u< B).

Added lit tests in
llvm/test/Transforms/ConstraintElimination/pointer-tighten-ne.ll.
DeltaFile
+40-0llvm/test/Transforms/ConstraintElimination/pointer-tighten-ne.ll
+1-1llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+41-12 files

LLVM/project 83af695utils/bazel/llvm-project-overlay/llvm BUILD.bazel

[Bazel] Fixes d9b6196 (#225223)

This fixes d9b61968481a0cc6fbbef744eeecab16ff9d0c18 (#225155).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=d9b61968481a0cc6fbbef744eeecab16ff9d0c18

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+1-0utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+1-01 files

LLVM/project 04d3600clang/test/AST/ByteCode module-default-ctor.cpp

[clang][test] Write obj file into %t in ByteCode/module-default-ctor.cpp (#225192)
DeltaFile
+1-1clang/test/AST/ByteCode/module-default-ctor.cpp
+1-11 files

FreeBSD/src 8a0cab2sys/dev/hwpmc hwpmc_amd.h hwpmc_amd.c

hwpmc/amd: replace static pmcdesc[] and pc_amdpmcs[] with dynamic allocation

AMD_NPMCS_MAX = 342 (16 core + 6 L3 + 64 DF + 256 UMC). On a Zen 4
EPYC 9654 with 6 core, 6 L3, 16 DF, and 4 UMC counters, only 32
descriptors are needed; the static arrays over-allocate by ~10x.

Replace both amd_pmcdesc[AMD_NPMCS_MAX] and per-CPU pc_amdpmcs[AMD_NPMCS_MAX]
with mallocarray() sized to the actual registered PMC count:
  - amd_pmcdesc: allocated in pmc_amd_initialize()
  - pc_amdpmcs:  allocated per-CPU in amd_pcpu_init(), freed in fini()

Normalize amd_l3_npmcs and amd_df_npmcs against the AMDID2_PTSCEL2I
and AMDID2_PNXC feature bits before computing npmcs_total, so that
allocation, registration, and amd_get_msr() row offsets are all derived
from the same values.  Previously the ternary in npmcs_total excluded
L3/DF from the allocation while the globals retained their defaults,
causing amd_get_msr() to miscompute DF row offsets when L3 is absent.

amd_umc_npmcs comes from CPUID Fn8000_0022h EBX[23:16] (NumUMCCounters)

    [14 lines not shown]
DeltaFile
+41-2sys/dev/hwpmc/hwpmc_amd.c
+2-1sys/dev/hwpmc/hwpmc_amd.h
+43-32 files

LLVM/project 6fc5155clang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp, clang/test/CIR/CodeGen var-arg-aggregate.c

[CIR] Match classic on va_arg pair-element alignment

Assisted-by: Cursor / claude-opus-5
DeltaFile
+7-9clang/test/CIR/CodeGen/var-arg-aggregate.c
+7-3clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+14-122 files

FreeBSD/src c745fccsys/riscv/conf GENERIC

riscv: enable gpiopower driver

It is functional, and there are some RISC-V platforms which can benefit
from it.

Requested by:   Brian Scott <bscott at bunyatech.com.au>
Sponsored by:   The FreeBSD Foundation
DeltaFile
+1-0sys/riscv/conf/GENERIC
+1-01 files

FreeBSD/src e676978sys/dev/eqos if_eqos.c

eqos: Reduce RX error noisiness

Reduce very common console messages:
        Receive error rdes3=30208000

As observed on the VisionFive v2 hardware after some large transfers.

Differentiate between overflow errors and others. Report the errors when
the length is non-zero (overflow errors).

Also, count errors for netstat purposes.

Reviewed by:    mhorne
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59479
DeltaFile
+9-1sys/dev/eqos/if_eqos.c
+9-11 files

LLVM/project 1cf089allvm/lib/CodeGen InlineSpiller.cpp, llvm/lib/Target/AMDGPU SIInstrInfo.cpp SILowerSGPRSpills.cpp

[CodeGen][AMDGPU] Add opt-in partial SGPR spills

A wide scalar load can have just one word live after its early uses. A
buffer resource can also be split while its fields are being
constructed. Full-width spills save words that are not needed at those
points.

Add a target hook to save selected lanes at their original spill-slot
offsets while preserving the other words. Use it for AMDGPU SGPR tuples,
protect partially written slots from whole-value spill optimizations,
and remove unchanged word stores after matching reloads.

Keep this behind `-enable-partial-spills`, disabled by default.
Unsupported targets and register classes retain their existing spill
policy. Tests based on loaded tuples and buffer resources let the
allocator generate the split relationships from LLVM IR.

DeltaFile
+353-0llvm/test/CodeGen/AMDGPU/partial-sgpr-spill-cleanup.mir
+169-0llvm/test/CodeGen/AMDGPU/partial-sgpr-spill-offset.mir
+128-20llvm/lib/CodeGen/InlineSpiller.cpp
+112-1llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
+90-0llvm/test/CodeGen/AMDGPU/partial-sgpr-spill-scavenge.mir
+62-0llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+914-2120 files not shown
+1,359-2626 files

LLVM/project 5dc5715.github/workflows libcxx-pr-test-tools.yml

Partially revert "[libcxx] Move premerge jobs to k8s mode runner set (#221395)" (#224717)

This patch partially reverts commit 028cdb4b9ec09: it only reverts
changing the runner set for the libcxx-pr-test-tools.yml workflow, which
started failing for an unknown reason since the change.

This is temporary until we figure out the problem and switch the
workflow again.
DeltaFile
+1-5.github/workflows/libcxx-pr-test-tools.yml
+1-51 files

LLVM/project d25fb96bolt/lib/Profile DataAggregator.cpp

[BOLT] Don't report an ignored build-id mismatch as an error

With `-ignore-build-id`, a build-id mismatch still printed

  PERF2BOLT-ERROR: failed to match build-id from perf output. ...
  Use -ignore-build-id option to override.

and then carried on normally. Fix the messaging to reduce noise in logs.
DeltaFile
+9-2bolt/lib/Profile/DataAggregator.cpp
+9-21 files

LLVM/project febbf39offload/ci hip-tpl.py

[CI][AMDGPU] Add clean up step for HIP test (#224177)

The bot failed because the GPU core dumps took all the disk space. Added
a step in the HIP build script to clean them up before building the
tests in each run.
DeltaFile
+12-0offload/ci/hip-tpl.py
+12-01 files

LLVM/project 8374c32clang/lib/CIR/CodeGen CIRGenMicrosoftCXXABI.cpp, flang/lib/Parser prescan.cpp

fix windows attempt 3

Created using spr 1.3.7
DeltaFile
+324-0clang/lib/CIR/CodeGen/CIRGenMicrosoftCXXABI.cpp
+249-0llvm/test/Transforms/SROA/phi-store.ll
+131-55llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+139-46flang/lib/Parser/prescan.cpp
+168-0llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_vop3_from_vop2_dpp16.txt
+140-18llvm/lib/Transforms/Scalar/SROA.cpp
+1,151-119269 files not shown
+5,409-1,070275 files

LLVM/project d12baecbolt/include/bolt/Core DebugNames.h, bolt/lib/Core DebugNames.cpp

[BOLT] Make .debug_names emission reproducible

Summary:
--update-debug-sections does not produce the same binary twice when the
input has a .debug_names section, or is given one with
--create-debug-names-section. Three sections vary from run to run:
.debug_str, .debug_names and .debug_str_offsets. On a two-CU
split-DWARF test binary, ten runs of the same llvm-bolt produced three
different outputs.

PR #197859 made the per-bucket work merge in partition order precisely so
the output would be reproducible, but missed this section. Two issues:

 - .debug_str offsets were handed out from the workers, so main.dwo.dwo
   added by the merge step lands in a different place in each
   run. The string offsets stored in .debug_names follow from it, and
   so does .debug_str_offsets;
 - hash colliding names were ordered by insertion (worker) order, also
   non-deterministic.

    [3 lines not shown]
DeltaFile
+21-4bolt/lib/Core/DebugNames.cpp
+6-0bolt/include/bolt/Core/DebugNames.h
+27-42 files

LLVM/project 3374bc3clang/include/clang/CIR/Dialect/IR CIRAttrs.td, clang/lib/CIR/Dialect/IR CIRAttrs.cpp CIRDialect.cpp

[CIR] Split side_effect into memory effects, nounwind, and willreturn (#223890)

`side_effect` was carrying three facts at once. It described the memory
a callee may touch, and it was also the only thing lowering derived
`nounwind` and `willreturn` from, so any callee with a known memory
effect got both. That is wrong for one that can throw, and `willreturn`
had no other representation in CIR at all.

`const`, `pure` and `noalias` now record the three separately, and the
enum is replaced by a structured `#cir.memory_effects` carrying the same
six ModRef slots as the LLVM dialect. It has no keyword syntax of its
own, so on an operation it sits in the attribute dictionary.

The only change in emitted IR is for `__declspec(noalias)`, which the
old enum could not express, and which now gets
`inaccessibleOrArgMemOnly` and `nounwind` to match classic. Everything
else lowers exactly as it did.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+123-25clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+53-71clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+67-50clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+87-0clang/lib/CIR/Dialect/IR/CIRAttrs.cpp
+48-0clang/test/CIR/Lowering/memory-effects.cir
+48-0clang/test/CIR/IR/invalid-effect-attrs.cir
+426-14615 files not shown
+537-21421 files

FreeBSD/ports 31772e2x11/nvidia-driver Makefile, x11/nvidia-driver-340 Makefile

x11/nvidia-driver*: Drop pkg-message

All contents of pkg-message are applicable for kmods part
(x11/nvidia-kmod*) only.

This was the remnant when kmods part were splitted out from
x11/nvidia-driver* at commit ports f4e907a49258.

PR:             298709
Differential Revision:  https://reviews.freebsd.org/D59864
DeltaFile
+1-2x11/nvidia-driver/Makefile
+1-1x11/nvidia-driver-devel/Makefile
+1-1x11/nvidia-driver-580/Makefile
+1-1x11/nvidia-driver-470/Makefile
+1-1x11/nvidia-driver-390/Makefile
+1-1x11/nvidia-driver-340/Makefile
+6-71 files not shown
+7-87 files

LLVM/project 54cfa2bllvm/include/llvm/SandboxIR Value.h, llvm/lib/SandboxIR Value.cpp

[SandboxIR] Implement Value::stripAndAccumulateConstantOffsets() (#224784)

This patch implements the Sandbox IR version of
Value::stripAndAccumulateConstantOffsets(), mirroring LLVM IR.
DeltaFile
+35-0llvm/unittests/SandboxIR/SandboxIRTest.cpp
+30-0llvm/lib/SandboxIR/Value.cpp
+14-0llvm/include/llvm/SandboxIR/Value.h
+79-03 files

LLVM/project d9b6196llvm/lib/DebugInfo/GSYM ObjectFileTransformer.cpp, llvm/test/tools/llvm-gsymutil/X86 macho-symbol-stubs.yaml

Add support for mach-o symbol stubs. (#225155)

This patch add support for making symbols from the symbol stubs in
mach-o files. Symbol stubs are found in sections that whose type is
S_SYMBOL_STUBS and using these setions along with the indirect symbol
table, we can make symbols for the PLT entries for external functions.
Some crashes occur in these stubs and previous to this fix those
addresses might be incorrecty associated with the last real symbol from
the symbol table and cause confusion and incorrect stack attributions in
symbolication workflows.
DeltaFile
+416-0llvm/test/tools/llvm-gsymutil/X86/macho-symbol-stubs.yaml
+115-1llvm/lib/DebugInfo/GSYM/ObjectFileTransformer.cpp
+531-12 files

OpenBSD/ports hmpSEd8x11/gnome/libadwaita Makefile distinfo

   Update to libadwaita-1.9.4.
VersionDeltaFile
1.56+2-2x11/gnome/libadwaita/distinfo
1.63+1-1x11/gnome/libadwaita/Makefile
+3-32 files

LLVM/project 32636ffclang/test/CIR/CodeGen bitfields.cpp, clang/test/CIR/CodeGenCXX uncopyable-args.cpp

[CIR] Drop the stale callconv opt-out from two CIR tests (#225180)

`bitfields.cpp` was waiting on padded, packed and over-aligned record
shapes. `uncopyable-args.cpp` was waiting on parameters of an empty or
tag class. Both files now compile and check clean with the pass running,
so the `-fno-clangir-call-conv-lowering` opt-out and its TODO header are
removed and the tests exercise the pass as written. Neither file changes
a CHECK directive.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+2-4clang/test/CIR/CodeGenCXX/uncopyable-args.cpp
+2-4clang/test/CIR/CodeGen/bitfields.cpp
+4-82 files

LLVM/project d6b4d4aflang/include/flang/Parser openmp-utils.h, flang/lib/Parser openmp-utils.cpp

[flang][OpenMP] Annotate some directive and clause names

There are some directives that share the same spelling, but have
different functionality. The same is true for clauses. When getting
the upper-case name of such a directive or a clause, optionally
(and by default) add an annotation about the kind of the directive
or clause.

For example, a standalone ORDERED directive will be displayed as
"ORDERED (standalone)". This was already done, for this directive,
but not in all cases.
DeltaFile
+32-4flang/lib/Parser/openmp-utils.cpp
+3-10flang/lib/Semantics/check-omp-structure.cpp
+3-3flang/test/Semantics/OpenMP/ordered01.f90
+4-2flang/include/flang/Parser/openmp-utils.h
+42-194 files

FreeBSD/src 9257ae7. MAINTAINERS, .github CODEOWNERS

Add entries for third-party projects I maintain

Add myself formally as the "maintainer" for atf, kyua, and lutok, both
in the GitHub CODEOWNERS and MAINTAINERS files.

This change matches the herald rules I recently setup for these
third-party components.
DeltaFile
+2-0MAINTAINERS
+2-0.github/CODEOWNERS
+4-02 files

LLVM/project 1e7f457llvm/lib/Target/AMDGPU VOP3PInstructions.td, llvm/test/CodeGen/AMDGPU frem.ll mad-mix-lo-bf16.ll

[AMDGPU] Fold fpround of fadd and fsub into v_mad/fma_mixlo and mixhi

MadFmaMixFP32Pats turns (fadd x, y) into (fma x, 1.0, y) and (fsub x, y)
into (fma (-y), 1.0, x) so the mix instructions absorb the operation along
with the f16 or bf16 source modifiers. MadFmaMixFP16Pats and
MadFmaMixFP16Pats_t16 only did this for fmul, so a rounded result still
needed a separate convert for a rounding the mix instructions perform
themselves.

Unlike the f32 patterns these do not require an operand to be an fpextend
of an f16, since an fpround on the result always removes the convert. The
rewrite is exact because the mix instructions round the f32 result again
when they write the 16-bit destination, so it stays f32_to_f16(fma(x, 1.0,
y)).

Assisted-by: Claude Code Opus 5


DeltaFile
+192-285llvm/test/CodeGen/AMDGPU/GlobalISel/fdiv.f16.ll
+61-311llvm/test/CodeGen/AMDGPU/mad-mix-lo.ll
+62-145llvm/test/CodeGen/AMDGPU/mad-mix-hi.ll
+55-36llvm/test/CodeGen/AMDGPU/mad-mix-lo-bf16.ll
+26-52llvm/test/CodeGen/AMDGPU/frem.ll
+70-0llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+466-8294 files not shown
+496-88510 files

LLVM/project e22f06ellvm/lib/Target/AMDGPU AMDGPUISelDAGToDAG.cpp, llvm/test/CodeGen/AMDGPU mad-mix-hi-bf16.ll mad-mix-lo-bf16.ll

[AMDGPU] Do not match an f16 extension as a bf16 mix source (#224912)

Assisted-by: Claude Code Opus 5
DeltaFile
+51-18llvm/test/CodeGen/AMDGPU/mad-mix-lo-bf16.ll
+17-6llvm/test/CodeGen/AMDGPU/mad-mix-hi-bf16.ll
+2-1llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+70-253 files

LLVM/project 9696514clang/lib/CodeGen CGOpenMPRuntimeGPU.cpp, clang/test/OpenMP nvptx_target_teams_ompx_bare_kernel_environment_codegen.cpp

[clang][openmp] Avoid generating geometry for Bare kernels (#225185)

Don't use the information from num_teams or thread_limit clauses to
initialize the Kernel Environment of bare kernels. They only support one
single dimension and for NVIDIA (only) we generate a "nnvm.maxntid"
attribute which is incompatible with the multi-dimensional launch that
happens at runtime.

Fixes a regression introduced by #223772
DeltaFile
+24-20llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+8-5clang/test/OpenMP/nvptx_target_teams_ompx_bare_kernel_environment_codegen.cpp
+0-2clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
+32-273 files

LLVM/project 82cf8d4llvm/examples/OrcV2Examples/LLJITWithRemoteDebugging RemoteJITUtils.cpp, llvm/include/llvm/ExecutionEngine/Orc/Shared ConnectionSpec.h

[ORC] Rename ConnectionSpec's fd transport to socket:adopt (#225075)

A ConnectionSpec's transport field says what kind of thing the
descriptor names, and "fd" named a representation rather than a kind. It
also left no room for a pipe transport, which takes two descriptors and
a different server.

The transport becomes "socket", and adopting a handed-over handle
becomes an explicit "adopt" action rather than the absence of one. So
"tcp" names an endpoint to reach while "socket" names a handle already
held, and a spec states how the process came by its channel -- worth
spelling out, since "adopt", "connect" and "listen" do not carry the
same trust.

llvm-jitlink-executor takes "socket:adopt=<fd>" in place of "fd=<fd>"
and rejects any other action for that transport. The spec is an internal
handoff from llvm-jitlink in every in-tree use, so nothing else needed
updating. The class comment is rewritten around the same split and stops
describing transports that do not exist yet.

Matches the scheme the ORC runtime uses for its connector registry.
DeltaFile
+18-18llvm/include/llvm/ExecutionEngine/Orc/Shared/ConnectionSpec.h
+19-7llvm/unittests/ExecutionEngine/Orc/ConnectionSpecTest.cpp
+10-4llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp
+2-1llvm/examples/OrcV2Examples/LLJITWithRemoteDebugging/RemoteJITUtils.cpp
+1-1llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+50-315 files

LLVM/project 418bedellvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI NativeDylibManagerSPSCI.h, llvm/unittests/ExecutionEngine/Orc EPCGenericDylibManagerTest.cpp

[ORC] Mangle NativeDylibManager CI names as C (#225096)

Flip the NativeDylibManager descriptors (instance + load/lookup) from
Verbatim to C, so their names carry the target's C mangling. Served by
the in-tree SimpleExecutorDylibManager; controller and executor mangle
the same specs and nothing else defines these names.

Also give the CreateFromExecutionSession test EPC the process triple,
matching the memory-manager fix (its bootstrap symbols were keyed with
the process triple but the EPC had an empty target triple).
DeltaFile
+3-3llvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI/NativeDylibManagerSPSCI.h
+2-1llvm/unittests/ExecutionEngine/Orc/EPCGenericDylibManagerTest.cpp
+5-42 files

FreeBSD/ports ef154f3audio/waves Makefile distinfo

audio/waves: Update to 0.1.50

ChangeLog:

1. https://github.com/llehouerou/waves/releases/tag/v0.1.50

Reported by:    "github-actions[bot]" <notifications at github.com>
DeltaFile
+5-5audio/waves/distinfo
+1-1audio/waves/Makefile
+6-62 files

LLVM/project 245d216llvm/lib/Transforms/Scalar LICM.cpp

fix formatting
DeltaFile
+3-3llvm/lib/Transforms/Scalar/LICM.cpp
+3-31 files

LLVM/project 679f99aclang/test/CIR/CodeGen var-arg-aggregate.c

[CIR] Tie the va_arg pair-store checks to their allocas

Assisted-by: Cursor / claude-opus-5
DeltaFile
+6-2clang/test/CIR/CodeGen/var-arg-aggregate.c
+6-21 files