LLVM/project 8b8e1c3 — clang/test/Driver amdgpu-xnack-sramecc-flags.c, llvm/docs AMDGPUUsage.rst

[AMDGPU] Hardwire SRAMECC on for gfx12.5

ECC on gfx12.5 cannot be disabled, so sramecc is not a selectable
target ID feature. Accepting sramecc- produced code relying on D16
loads preserving unused bits, which the loader then rejects.

Change-Id: I331b5d42e80cc6de8d084047f2b84fc2ef9349cb
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-1,555llvm/test/CodeGen/AMDGPU/flat-saddr-load.ll
+0-64llvm/test/CodeGen/AMDGPU/atomic-load-store-16-sramecc.ll
+20-3llvm/unittests/TargetParser/TargetParserTest.cpp
+8-8llvm/docs/AMDGPUUsage.rst
+10-5clang/test/Driver/amdgpu-xnack-sramecc-flags.c
+4-3llvm/test/CodeGen/AMDGPU/sramecc-subtarget-feature-any.ll
+42-1,6383 files not shown
+54-1,6399 files

LLVM/project 5c82d02 — clang/test/CIR/CodeGenBuiltins/X86 sse41-builtins.c, lldb/source/Plugins/Process/Utility RegisterInfo_loongarch64.cpp RegisterInfoPOSIX_arm64.h

rebase to main

Created using spr 1.3.7
DeltaFile
+0-681lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp
+681-0lldb/source/Plugins/Process/Utility/RegisterInfo_arm64.cpp
+253-0clang/test/CIR/CodeGenBuiltins/X86/sse41-builtins.c
+0-226lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
+226-0lldb/source/Plugins/Process/Utility/RegisterInfo_arm64.h
+215-0lldb/source/Plugins/Process/Utility/RegisterInfo_loongarch64.cpp
+1,375-907150 files not shown
+4,662-3,136156 files

FreeBSD/ports c246946 — net/pimd Makefile distinfo

net/pimd: update to 3.4.0
DeltaFile
+3-3net/pimd/distinfo
+1-1net/pimd/Makefile
+4-42 files

LLVM/project 83ee077 — llvm/include/llvm/ObjectYAML BBAddrMapYAML.h, llvm/lib/ObjectYAML BBAddrMapYAML.cpp

[ObjectYAML][NFC] Hoist BBAddrMap obj2yaml decoder into a shared helper (#231071)

Preparatory NFC refactor to let the upcoming COFF dumper reuse the
BBAddrMap payload decoder, mirroring the encoder hoisted in #205991.
DeltaFile
+6-116llvm/tools/obj2yaml/elf2yaml.cpp
+121-0llvm/lib/ObjectYAML/BBAddrMapYAML.cpp
+9-0llvm/include/llvm/ObjectYAML/BBAddrMapYAML.h
+136-1163 files

LLVM/project ff50a5f — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/X86 asm-constraints-rm-callbr-fold.ll asm-constraints-rm-isel.ll

[TargetLowering][X86] Prefer 'r' over 'm' for foldable "rm" inline asm operands

An "rm" (register-or-memory) inline asm operand has always resolved to
'm', because getConstraintPreferences() picks the most general
constraint present, and 'm' is more general than 'r'. That's safe, since
memory can't run out, but it forces a value that could stay in a
register through a stack slot even when there's no register pressure
(https://github.com/llvm/llvm-project/issues/20571).

Prefer 'r' instead where the register allocator can fold the register
back to a stack slot when it runs out of registers, and mark the
register operand foldable (InlineAsm::Flag::setRegMayBeFolded()) so it
does. Both allocators can: the greedy allocator folds an operand when it
spills its value, and the fast allocator folds operands up front when
the asm's register operands wouldn't fit.

ParseConstraints() sets AsmOperandInfo::MayFoldRegister for an operand
whose constraint codes include 'r' and 'm' and are otherwise only
immediate codes, above -O0, on a target that opts in through the new

    [26 lines not shown]
DeltaFile
+788-0llvm/test/CodeGen/X86/asm-constraints-rm-pressure.ll
+767-0llvm/test/CodeGen/X86/asm-constraints-torture.ll
+227-0llvm/test/CodeGen/X86/inline-asm-callbase.ll
+157-0llvm/test/CodeGen/X86/asm-constraints-rm-isel.ll
+73-2llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+74-0llvm/test/CodeGen/X86/asm-constraints-rm-callbr-fold.ll
+2,086-29 files not shown
+2,175-1715 files

LLVM/project 3158eb2 — llvm/test/CodeGen/X86 asm-constraints-rm.ll inline-asm-direct-mem-output-error.ll

[X86] Address review: test a tied input's untied read under -regalloc=fast

Add the case from the #229630 review, one value passed to an untied "r"
input and to the "0" input tied to an "rm" output, to show that the fast
register allocator no longer folds the output when everything fits.

Drop the -O0 RUN line from inline-asm-direct-mem-output-error.ll: it only
showed that "=rm" still picks memory at -O0, which asm-constraints-rm.ll
already tests, and there make the -O0 line name the instruction selector
and say that it tests the optimization level.

Assisted-by: Claude Opus 5.5
DeltaFile
+87-0llvm/test/CodeGen/X86/asm-constraints-rm-pressure.ll
+2-7llvm/test/CodeGen/X86/inline-asm-direct-mem-output-error.ll
+5-1llvm/test/CodeGen/X86/asm-constraints-rm.ll
+94-83 files

LLVM/project a90d636 — llvm/lib/CodeGen RegAllocFast.cpp, llvm/test/CodeGen/X86 regallocfast-inline-asm-fold.mir regallocfast-inline-asm-fold-pressure.mir

[RegAllocFast] Fold foldable inline asm operands under register pressure

An inline asm register operand marked foldable (from an "rm" constraint)
may be replaced with a stack slot when the register allocator runs out
of registers. The greedy allocator does that when it spills the value.
The fast allocator can't: it assigns the operands of an instruction one
at a time, and folding replaces the instruction. So it reported
"inline assembly requires more registers than available" instead.

Before allocating a block, estimate from each inline asm's own operands
whether they fit in registers, and fold as many foldable registers as
needed to make them fit, so the common case without pressure still gets
a register. Values that only live across the asm don't count, since the
allocator spills them when it needs their registers. The estimate
follows allocateInstruction():

- First all defs get distinct registers, avoiding physreg defs; then all
  uses, along with the defs still occupied while the uses are read
  (early-clobber and tied defs, see isLiveThroughDef()), get distinct

    [26 lines not shown]
DeltaFile
+479-0llvm/test/CodeGen/X86/regallocfast-inline-asm-fold-pressure.mir
+320-0llvm/lib/CodeGen/RegAllocFast.cpp
+80-0llvm/test/CodeGen/X86/regallocfast-inline-asm-fold.mir
+879-03 files

LLVM/project 37f521a — llvm/lib/CodeGen RegAllocFast.cpp

[RegAllocFast] Reformat

Assisted-by: Claude Opus 5.5
DeltaFile
+2-2llvm/lib/CodeGen/RegAllocFast.cpp
+2-21 files

LLVM/project 9102dc2 — llvm/lib/CodeGen RegAllocFast.cpp, llvm/test/CodeGen/X86 regallocfast-inline-asm-fold-tied-input.mir

[RegAllocFast] Address review: don't recount a tied input's untied reads

When one value is passed to both a tied operand and an untied one, e.g.
"=rm"(r) : "r"(v), "0"(v), with an explicit -regalloc=fast above -O0 (so
TwoAddress doesn't run and the ties reach RegAllocFast), the fold estimate
counted three registers where lowerTiedUse() uses one. Tied uses are
allocated first, so the value moves into the def's register and the untied
read is rewritten to it. tiedUseNeedsOwnReg() still assumed another read of
the value could get it a register first, and the untied read was counted on
its own as well, so the asm's output was folded to the stack needlessly.

Model the tied input itself: while one of its tied defs is in a register,
it needs no register of its own unless tiedUseNeedsOwnReg() says so (only
an early-clobber def now makes another read matter), and its untied reads
share whichever register it has. Once its tied defs are folded, the untied
reads need a register again, so choose what to fold by counting again with
each candidate folded, and fold both halves when neither alone helps.

Assisted-by: Claude Opus 5.5
DeltaFile
+209-0llvm/test/CodeGen/X86/regallocfast-inline-asm-fold-tied-input.mir
+69-19llvm/lib/CodeGen/RegAllocFast.cpp
+278-192 files

LLVM/project a5dd50f — llvm/lib/Target/AMDGPU AMDGPUTargetMachine.cpp

[AMDGPU] Fix sramecc value in subtarget cache key

The sramecc component of the subtarget cache key encoded the xnack
setting. Modules sharing a TargetMachine with equal xnack but different
sramecc module flags reused the same cached subtarget, giving the wrong
sramecc mode.

Change-Id: I727ff71298ede9846cf2ace98a88c8b0114c7e68
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1-1llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+1-11 files

LLVM/project b3914be — llvm/lib/Target/NVPTX NVPTXISelLowering.cpp, llvm/test/CodeGen/NVPTX convert-fp-i128.ll mulwide.ll

Revert "[NVPTX] Select mul.wide.u64 based on known bits (#228285)"

This reverts commit 28bc9f592160d1d30f0de6729ac1706e8e28f00e.
DeltaFile
+0-591llvm/test/CodeGen/NVPTX/mulwide.ll
+49-69llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+10-12llvm/test/CodeGen/NVPTX/convert-fp-i128.ll
+59-6723 files

FreeBSD/src bdcfeac — lib/libsys sysarch.2, lib/libsys/x86 Makefile.sys sysarch.x86.2

sysarch.x86.2: manual page for the sysarch(2) functions on x86

Reviewed by:    ziaee
Discussed with: jhb
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D60047
DeltaFile
+659-0lib/libsys/x86/sysarch.x86.2
+2-1lib/libsys/x86/Makefile.sys
+2-1lib/libsys/sysarch.2
+663-23 files

LLVM/project 53c4b61 — mlir/lib/Dialect/LLVMIR CMakeLists.txt

[mlir][LLVMIR] Precompile NVVM and ROCDL operation declarations (#232976)

The eight source shards in each dialect repeatedly parse their operation
headers after loading the shared LLVM PCH. Give each dialect a local PCH
containing LLVMIR/pch.h followed by its operation header. Disable
downstream reuse so other libraries retain their existing PCH selection.

Both pairs save CPU (32.55 s and 57.33 s). Focused serial compilation of
all 21 affected sources, including 13.65 s of new PCH creation, reduces
CPU from 103.12 to 87.48 s (-15.17%).

Assisted-by: Codex
DeltaFile
+14-0mlir/lib/Dialect/LLVMIR/CMakeLists.txt
+14-01 files

LLVM/project 138e889 — llvm/lib/TargetParser TargetDataLayout.cpp

Restore more data layout comments
DeltaFile
+58-9llvm/lib/TargetParser/TargetDataLayout.cpp
+58-91 files

LLVM/project dbf490f — clang/lib/CodeGen BackendUtil.cpp, llvm/include/llvm/MC MCAsmInfo.h

CodeGen: Remove TargetOptions::ExceptionModel

The exception model now comes only from the "exception-model" module
flag. Remove the TargetOptions field and its copy into MCAsmInfo, so
MCAsmInfo only knows the target's default model.

The WebAssembly model checks move from the TargetMachine constructor
into the Emscripten EH/SjLj lowering pass. Clang relied on the backend
to reject non-wasm models for wasm targets, so it now rejects them
itself.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2-31llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+13-17llvm/include/llvm/MC/MCAsmInfo.h
+22-4llvm/test/CodeGen/AMDGPU/exception-model.ll
+0-11clang/lib/CodeGen/BackendUtil.cpp
+9-2llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
+4-5llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+50-7020 files not shown
+93-10726 files

LLVM/project 2bc934f — llvm/lib/CodeGen TargetPassConfig.cpp, llvm/lib/Passes CodeGenPassBuilder.cpp

CodeGen: Read the exception model from the module flag

Module::getExceptionModel() now falls back to the triple's default
model instead of falling back to the TargetMachine.

The pass pipeline is built before the module is known, so schedule each
EH preparation pass when the target supports a model, and let the pass
check the module's model. Add TargetMachine::supportsExceptionModel so
the pass config can skip definitely irrelevant passes. SjLjEHPrepare is
now scheduled on every target with exception handling, and WinEHPrepare
only on COFF and Wasm targets. WinEHPrepare and WasmEHPrepare are
scheduled for Wasm by the base pass configs, replacing the WebAssembly
override.

This is almost the last step towards removing TargetOptions::ExceptionModel.

Co-authored-by: Claude Opus <noreply at anthropic.com>
DeltaFile
+38-35llvm/lib/CodeGen/TargetPassConfig.cpp
+35-34llvm/lib/Passes/CodeGenPassBuilder.cpp
+69-0llvm/test/CodeGen/X86/exception-model-flag-eh-prepare.ll
+64-0llvm/test/CodeGen/X86/exception-model.ll
+31-0llvm/lib/Target/TargetMachine.cpp
+25-0llvm/test/CodeGen/AMDGPU/exception-model.ll
+262-6940 files not shown
+362-15046 files

LLVM/project cf42a69 — llvm/test/CodeGen/AArch64 windows-trap-unreachable.ll

Drop dead checks
DeltaFile
+0-2llvm/test/CodeGen/AArch64/windows-trap-unreachable.ll
+0-21 files

LLVM/project 75d65b5 — clang/lib/CodeGen CGExpr.cpp, clang/test/CodeGen attr-counted-by-or-null-for-pointers.c attr-sized-by-or-null-for-pointers.c

[Clang][counted_by] Don't re-evaluate the base of a counted_by pointer access for -fsanitize=array-bounds

When indexing a 'counted_by' pointer field with -fsanitize=array-bounds,
EmitCountedByBoundsChecking was handed an invalid address and re-emitted
the field's l-value to locate the count. That re-evaluated the struct
base, duplicating its side-effects:

  struct p { int count; int *buf __counted_by(count); };
  struct p *q;
  int f(int i) { return q++->buf[i]; }   // 'q' incremented twice
  int g(int i) { return get()->buf[i]; } // 'get' called twice

i.e. enabling the sanitizer changed the program's behavior.

When the subscript base is exactly the field load, emit the field's
l-value once, load the pointer from it (as the default case of
EmitPointerWithAlignment does, through EmitLoadOfLValue so that a
'__ptrauth'-qualified field is still authenticated), and pass the
field's address to the bounds check. When there's an intervening cast (e.g.

    [6 lines not shown]
DeltaFile
+136-26clang/test/CodeGen/attr-counted-by-base-exprs.c
+50-13clang/lib/CodeGen/CGExpr.cpp
+12-12clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+12-12clang/test/CodeGen/attr-sized-by-for-pointers.c
+24-0clang/test/CodeGen/attr-counted-by-ptrauth.c
+6-6clang/test/CodeGen/attr-counted-by-or-null-for-pointers.c
+240-691 files not shown
+246-757 files

LLVM/project 969d45e — clang/test/CodeGen attr-counted-by-union-storage.c attr-counted-by-base-exprs.c, clang/test/Sema builtin-counted-by-ref.c

[Clang][counted_by][NFC] Add missing tests for counted_by and __builtin_counted_by_ref

Add Sema coverage for __builtin_counted_by_ref:
  - a bit-field counter on a 'counted_by' pointer (not just a FAM),
  - the '_or_null' and 'sized_by' variants, which return 'void *',
  - qualified, enum, and typedef counter types, which determine the
    returned pointee type,
  - nested, anonymous, by-value, and subscripted bases.

Add CodeGen coverage for the base-expression shapes reaching a counted_by
flexible array member, for both __builtin_dynamic_object_size and
-fsanitize=array-bounds: call and side-effecting bases (which __bdos
must not re-evaluate), pointer chains, conditional bases, negative
constant indices, enum counters, and mixed index widths.

Assisted-by: Claude Opus 5.5
DeltaFile
+306-0clang/test/CodeGen/attr-counted-by-base-exprs.c
+105-0clang/test/Sema/builtin-counted-by-ref.c
+21-0clang/test/CodeGen/attr-counted-by-union-storage.c
+432-03 files

LLVM/project 314f2b9 — clang/test/Sema builtin-counted-by-ref.c

Rename test functions for clarity and consistency
DeltaFile
+6-6clang/test/Sema/builtin-counted-by-ref.c
+6-61 files

LLVM/project d9bd922 — llvm/docs/CommandGuide llvm-readobj.md llvm-readelf.md

[llvm-readobj][docs] Update the --stack-sizes description

The description said that --stack-sizes is only implemented for GNU
style output, which hasn't been the case for a while. Describe the LLVM
and JSON output instead, including the address that each entry in a
linked file now has.

Assisted-by: Gemini
DeltaFile
+3-2llvm/docs/CommandGuide/llvm-readobj.md
+3-2llvm/docs/CommandGuide/llvm-readelf.md
+6-42 files

LLVM/project cbb4301 — llvm/tools/llvm-readobj ELFDumper.cpp

Say why Address is not printed for a relocatable file
DeltaFile
+2-2llvm/tools/llvm-readobj/ELFDumper.cpp
+2-21 files

FreeBSD/ports 20a5316 — textproc/fcitx-qt5 Makefile

textproc/fcitx-qt5: ECM is provided by the latest KDE Frameworks
DeltaFile
+1-1textproc/fcitx-qt5/Makefile
+1-11 files

LLVM/project a07fefd — clang/test/OpenMP task_codegen.cpp, llvm/test/CodeGen/AMDGPU setcc-i64-to-i32.ll clmul.ll

Merge branch 'main' into users/void/lld-macho-cstring-dedup-path
DeltaFile
+2,795-3,867llvm/test/CodeGen/AMDGPU/clmul.ll
+1,897-1,897clang/test/OpenMP/task_codegen.cpp
+1,933-0mlir/test/Dialect/X86/vector-contract-multi-level-unroll-for-amx.mlir
+1,325-0llvm/test/CodeGen/AMDGPU/setcc-i64-to-i32.ll
+0-1,299mlir/test/Dialect/LLVMIR/mem2reg.mlir
+1,299-0mlir/test/Transforms/Mem2Reg/llvm.mlir
+9,249-7,0631,027 files not shown
+55,458-24,4721,033 files

LLVM/project 52715e5 — lld/test/MachO cstring-dedup.s

[lld][MachO] Address review: use --no-leading-headers in cstring-dedup.s

Instead of running llvm-objdump from inside %t, pass --no-leading-headers
so the output file's path isn't printed. That also suppresses the
"Contents of (__TEXT,__cstring) section" line, so drop that STR check;
--section already restricts the output to __cstring.

Assisted-by: Claude Opus 5.5
DeltaFile
+1-2lld/test/MachO/cstring-dedup.s
+1-21 files

LLVM/project f4cbd5f — llvm/lib/TargetParser TargetDataLayout.cpp

Address review comments

Don't split string literals around comments, and drop comments that
just restate the layout components.
DeltaFile
+24-116llvm/lib/TargetParser/TargetDataLayout.cpp
+24-1161 files

LLVM/project 2d39318 — llvm/lib/TargetParser TargetDataLayout.cpp

TargetParser: Clean up data layout string construction

Instead of building many small string fragments, use longer
concatenated literals. The mips case in particular was hard
to follow and had an unused enum value.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+142-222llvm/lib/TargetParser/TargetDataLayout.cpp
+142-2221 files

LLVM/project fc06a02 — clang/test/OpenMP parallel_for_simd_codegen.cpp ordered_doacross_codegen.cpp

[clang][OpenMP][NFC] Anchor "bar" CHECK-LABELs on the function definition (#232628)

ordered_doacross_codegen.cpp and parallel_for_simd_codegen.cpp use a
bare "bar" as a CHECK-LABEL. That also matches the ModuleID and
source_filename lines when the source path contains "bar" (e.g. a home
directory like /home/isanbard), which splits the input at the wrong
place and makes the tests fail. Match the define of @_Z3barv instead.

Assisted-by: Claude Opus 5.5
DeltaFile
+1-1clang/test/OpenMP/parallel_for_simd_codegen.cpp
+1-1clang/test/OpenMP/ordered_doacross_codegen.cpp
+2-22 files

LLVM/project 9180d99 — clang/include/clang/Basic DiagnosticSemaKinds.td LangOptions.h, clang/include/clang/Sema Sema.h

[BoundsSafety][NFC] Add counted_by type-shape validation helper (#227774)

This is groundwork for properly supporting late parsing of counted_by as
a type attribute, following the direction set in #223267, which allows a
CountAttributedType's count to be filled in later.

Under that model, counted_by diagnostics are split into two phases:
- When the type is built, we check only what the type itself can tell
us, e.g., whether it is a pointer or array
- During late parsing, once the relevant scope is complete (e.g., the
end of a struct definition), we check the declaration the attribute is
attached to and resolve the count expression.

This PR adds the shared validation for the phase 1. It covers
counted_by, sized_by and their _or_null variants, preparing eager and
late-parsed type-attribute handling to use the same checks across
declaration contexts.

`Sema::ValidateBoundsAttrTypeShape`checks pointer or array shape and

    [17 lines not shown]
DeltaFile
+189-0clang/lib/Sema/SemaBoundsSafety.cpp
+44-0clang/include/clang/Sema/Sema.h
+8-0clang/include/clang/Basic/LangOptions.h
+3-0clang/include/clang/Basic/DiagnosticSemaKinds.td
+244-04 files

OpenBSD/src W6Fy8l3 — sys/dev/ic bcmgenet.c

   The TX-done interrupt should read from consumer register, not producer. I
   made this mistype during conversion bse(4) output to MP-safe.

   From Acts1631. OK kettenis.
VersionDeltaFile
1.13+2-2sys/dev/ic/bcmgenet.c
+2-21 files