LLVM/project 659035a — llvm/lib/CodeGen TargetPassConfig.cpp, llvm/lib/Passes CodeGenPassBuilder.cpp

CodeGen: Stop running LiveVariables in the optimized pipeline (#234174)

Nothing in the optimized register allocation pipeline requires
LiveVariables any more. The pass will subsequently be deleted. The
only tricky part here is dealing with the AMDGPU pipeline previously
using LiveVariables as an insertion point.

Co-authored-by: Claude claude-opus-4.8 <noreply at anthropic.com>

Co-authored-by: Claude claude-opus-4.8 <noreply at anthropic.com>
DeltaFile
+31-31llvm/test/CodeGen/AMDGPU/lower-control-flow-live-variables-update.mir
+1-23llvm/test/CodeGen/AMDGPU/materialize-frame-index-sgpr.ll
+1-10llvm/lib/Passes/CodeGenPassBuilder.cpp
+7-4llvm/test/CodeGen/SystemZ/tls-10.mir
+1-9llvm/lib/CodeGen/TargetPassConfig.cpp
+4-4llvm/test/CodeGen/AMDGPU/fncall-implicitdef.ll
+45-8118 files not shown
+50-10624 files

LLVM/project 94a90a6 — llvm/lib/CodeGen/SelectionDAG ScheduleDAGSDNodes.cpp, llvm/test/CodeGen/SystemZ atomicrmw-udec_wrap.ll

SelectionDAG: Mark physreg defs dead on scheduler-cloned nodes (#231154)

When the list scheduler clones a node to break a physreg dependency,
the copies share one SDNode, so InstrEmitter can't tell that a copy's
implicit physreg def (e.g. EFLAGS) lost its users and didn't mark it
dead. LiveVariables recomputes it later, but dead flags are most useful
to earlier optimizations.

Instead, mark the def dead at emission time if the copy has no
scheduler edge for it. This lets convertToThreeAddress form LEAs again,
and is a step toward removing LiveVariables.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+22-0llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
+2-0llvm/test/CodeGen/SystemZ/atomicrmw-udec_wrap.ll
+24-02 files

LLVM/project eb8cddb — compiler-rt CMakePresets.json, compiler-rt/lib/scudo/standalone CMakePresets.json

[compiler-rt][scudo] Add CMake presets for standalone builds (#221089)

Add CMakePresets.json under compiler-rt to configure and test Scudo
standalone without requiring a full LLVM monorepo build. Includes
scudo-debug, scudo-release, and test presets. Used Gemini to clean up
and make the presets more generalized.

Assisted-by: Gemini
DeltaFile
+224-0compiler-rt/lib/scudo/standalone/CMakePresets.json
+11-0compiler-rt/CMakePresets.json
+235-02 files

LLVM/project 86620de — llvm/test/Instrumentation/DataFlowSanitizer reaches_function_args.ll reaches_function_wrapper.ll

[DFSan] Add tests for reaches function argument callbacks (#234011)

With `-dfsan-reaches-function-callbacks`, a reaches function callback
that is marked uninstrumented in the ABI list and registered with the
runtime overflows the stack whenever a stale non-zero label sits in
`__dfsan_arg_tls`. The runtime calls the `dfsw$` wrapper, which reads
argument shadows from `__dfsan_arg_tls` and reports them, re-entering
the callback through the runtime before the callback's own reentrancy
guard runs. Nothing clears the stale label, so this repeats until the
stack overflows.
DeltaFile
+32-0llvm/test/Instrumentation/DataFlowSanitizer/reaches_function_wrapper.ll
+28-0llvm/test/Instrumentation/DataFlowSanitizer/reaches_function_args.ll
+60-02 files

OPNSense/ports 9599bd2 — lang/php85 Makefile distinfo

lang/php85: sync with upstream

Taken from: FreeBSD
DeltaFile
+3-3lang/php85/distinfo
+1-2lang/php85/Makefile
+4-52 files

LLVM/project 0ee8085 — compiler-rt/cmake/Modules CompilerRTDarwinUtils.cmake

[compiler-rt][Darwin] Disable the armv7* sanitizer slices for watchOS (#234051)
DeltaFile
+2-2compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+2-21 files

LLVM/project dce02e4 — clang/lib/CIR/CodeGen CIRGenStmtOpenMP.cpp, clang/test/CIR/CodeGenOpenMP not-yet-implemented.c distribute-parallel-for.c

[CIR][OpenMP] Add support for 'distribute parallel for' with 'target teams'

Adds support for handling the full '[target] teams distribute parallel for'.
Introduces setting the omp.composite attibute for the 'distribute parallel for'
composite construct.

Assisted-by: Cursor / Claude Sonnet 5 High
DeltaFile
+556-0clang/test/CIR/CodeGenOpenMP/target-teams-distribute-parallel-for.c
+296-38clang/lib/CIR/CodeGen/CIRGenStmtOpenMP.cpp
+213-0clang/test/CIR/CodeGenOpenMP/distribute-parallel-for.c
+13-0clang/test/CIR/CodeGenOpenMP/not-yet-implemented.c
+1,078-384 files

LLVM/project e506f48 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenBuilder.h CIRGenExprScalar.cpp

[CIR] Implement support for MatrixSingleSubscript expr (#232079)

Implement support for the MatrixSingleSubscript expr in the HLSL target
with column-major support.

Issue https://github.com/llvm/llvm-project/issues/221772
DeltaFile
+45-4clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+41-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+32-0clang/test/CIR/CodeGenHLSL/matrix-single-subscript.hlsl
+7-5clang/lib/CIR/Lowering/LoweringHelpers.cpp
+6-5clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+6-0clang/lib/CIR/CodeGen/CIRGenBuilder.h
+137-143 files not shown
+142-179 files

LLVM/project 8163d62 — flang/include/flang/Semantics openmp-utils.h, flang/lib/Lower/OpenMP OpenMP.cpp

[flang][OpenMP] Don't drop NOTHING with clauses in METADIRECTIVE (#233981)

A METADIRECTIVE replacement of NOTHING was treated as having no
directive, even when it had clauses. A selected `nothing apply(...)` was
therefore lowered as a no-op, silently dropping the loop transformation.

Keep NOTHING as a replacement when it has clauses, and report it as not
yet implemented in lowering.

Assisted-by: GitHub Copilot (Claude Opus 5.5)
DeltaFile
+12-11flang/lib/Semantics/openmp-utils.cpp
+23-0flang/test/Lower/OpenMP/Todo/metadirective-nothing-apply.f90
+2-2flang/include/flang/Semantics/openmp-utils.h
+2-0flang/lib/Lower/OpenMP/OpenMP.cpp
+39-134 files

LLVM/project 441aea0 — clang/test/OpenMP declare_variant_construct_target.c, flang/test/Lower/OpenMP metadirective-construct.f90

[OpenMP] Fix construct context at TARGET and repeated-construct subsets

OMPContext has two bugs in how construct selectors are matched. Both can
select the wrong variant:

- The construct context should start at the innermost enclosing TARGET,
  but Clang and Flang add every enclosing construct. Inside a TARGET
  region nested in a PARALLEL, construct={parallel} matched the outer
  PARALLEL. OMPContext::addTrait now drops the constructs recorded before
  a target trait.
- A selector that only repeats a construct, such as
  construct={parallel do, parallel} over construct={parallel do}, adds no
  property. isStrictSubset required fewer properties, so a score tie
  between the two fell back to clause order. A shorter ordered construct
  sequence now also makes a strict subset. If the shorter selector has a
  user condition, or an ISA name the longer one lacks, the tie still falls
  back to clause order, since different conditions or ISA names share one
  property.


    [9 lines not shown]
DeltaFile
+163-0llvm/unittests/Frontend/OpenMPContextTest.cpp
+131-0flang/test/Lower/OpenMP/metadirective-construct.f90
+27-16llvm/lib/Frontend/OpenMP/OMPContext.cpp
+31-0clang/test/OpenMP/declare_variant_construct_target.c
+6-0llvm/include/llvm/Frontend/OpenMP/OMPContext.h
+358-165 files

LLVM/project b93b033 — mlir/docs PassManagement.md, mlir/include/mlir/IR Threading.h

[mlir] Reduce contention in parallel pass execution and timing (#232948)

Replace per-operation executor scans with stable per-task worker
indices. Allow default timing callbacks to run concurrently using
thread-local stacks and synchronized parent-scope publication. Existing
instrumentations and custom timing managers retain serialized callbacks
unless they opt in.

Benchmark: 200,000 trivial functions with nested CSE, Release with
assertions disabled. Medians of seven alternating samples against main,
which includes #232520. With timing enabled:

| Metric | Before | After |
|---|---:|---:|
| Pipeline wall | 1.0945 s | 0.1699 s |
| mlir-opt wall | 1.7564 s | 0.8329 s |
| mlir-opt system CPU | 15.4775 s | 2.0195 s |

This is a 6.44x pipeline speedup, 2.11x end-to-end speedup.

Assisted-by: Codex
DeltaFile
+202-0mlir/unittests/Pass/PassManagerTest.cpp
+35-29mlir/lib/Pass/Pass.cpp
+30-26mlir/lib/Pass/PassTiming.cpp
+32-15mlir/include/mlir/IR/Threading.h
+16-3mlir/docs/PassManagement.md
+14-0mlir/include/mlir/Support/Timing.h
+329-731 files not shown
+336-737 files

LLVM/project ca3bb96 — flang/test/Driver bbc-openmp-target-context.f90, flang/tools/bbc bbc.cpp

[flang][OpenMP] Set the target in bbc's semantics context (#233976)

bbc created a target machine but never passed its triple and features to
the semantics context. Without a target triple, semantics treats device
and implementation context selectors as possibly matching, so it checked
METADIRECTIVE replacements that can never be selected for the target.
For example, bbc reported a COLLAPSE error for the SIMD replacement of
when(device={arch(nvptx64)}: simd collapse(2)) on x86-64, while flang
accepts it.

Set the semantics target triple and features from the target machine, as
the flang driver does.

Fixes https://github.com/llvm/llvm-project/issues/233027.

Assisted-by: GitHub Copilot (Claude Opus 5.5)
DeltaFile
+20-0flang/test/Driver/bbc-openmp-target-context.f90
+2-0flang/tools/bbc/bbc.cpp
+22-02 files

LLVM/project 0262c11 — libcxx/utils/ci/docker docker-compose.yml android-builder.dockerfile

[libcxx][docker] Update android libc++ builders (#232887)

The base images were consolidated in #225214. Move to the new base
image.

Ensure we run as root, since the new base image runs as `gha`.

To test:

    $ sudo docker compose --file \
      libcxx/utils/ci/docker/docker-compose.yml build \
      libcxx-android-builder

Link: #223854
DeltaFile
+5-1libcxx/utils/ci/docker/android-builder.dockerfile
+1-1libcxx/utils/ci/docker/docker-compose.yml
+6-22 files

LLVM/project d5efcd0 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 struct-type-store-seeds.ll

[SLP] Do not seed store vectorization with struct-typed stores

Vectorized struct cannot be stored as a single wide store, exclude such
stores from the store seeds.

Fixes #234176

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/234249
DeltaFile
+18-0llvm/test/Transforms/SLPVectorizer/X86/struct-type-store-seeds.ll
+2-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+20-22 files

LLVM/project a31040a — clang/test/CIR/Driver emit-cir-bc.c

[CIR] Fixup emit-cir-bc test that didn't have at triple. (#234246)
DeltaFile
+3-3clang/test/CIR/Driver/emit-cir-bc.c
+3-31 files

LLVM/project 7d81bbb — llvm/test/CodeGen/AMDGPU merge-image-sample.mir merge-buffer.mir

AMDGPU: Stop adding kill flags in SILoadStoreOptimizer (#234189)

No pre-RA pass should try to create kill flags on virtual registers.
They're unused in any pre/mid-RA pass, and stripped by LiveIntervals.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+89-89llvm/test/CodeGen/AMDGPU/merge-sbuffer-load.mir
+75-75llvm/test/CodeGen/AMDGPU/merge-s-load.mir
+57-57llvm/test/CodeGen/AMDGPU/merge-global-load-store.mir
+48-48llvm/test/CodeGen/AMDGPU/merge-buffer-gfx12.mir
+47-47llvm/test/CodeGen/AMDGPU/merge-buffer.mir
+45-45llvm/test/CodeGen/AMDGPU/merge-image-sample.mir
+361-36122 files not shown
+648-65528 files

LLVM/project d6b5a64 — llvm/lib/Target/AMDGPU SIMaterializeWMMAScale.cpp, llvm/test/CodeGen/AMDGPU wmma-scale-sgpr-materialize.mir

[AMDGPU] Count WMMA scale copies against both operands

Copying a shared scale while its partner stays an SGPR adds a va_ssrc
issue without removing one. Choose copies from both scale operands.
DeltaFile
+197-41llvm/lib/Target/AMDGPU/SIMaterializeWMMAScale.cpp
+64-4llvm/test/CodeGen/AMDGPU/wmma-scale-sgpr-materialize.mir
+261-452 files

LLVM/project 7c361da — llvm/test/CodeGen/AMDGPU fptosi-sat-vector.ll amdgcn.bitcast.320bit.ll

[AMDGPU] Materialize WMMA SGPR scales to VGPRs before scheduling

v_wmma_scale scale operands accept an SGPR or a VGPR. On GFX12,
depctr_va_ssrc is a 1-deep counter, so each VALU instruction that reads
an SGPR scale takes the only scalar-source slot. A run of WMMA ops that
all read SGPR scales therefore serializes. One cross-bank copy pays for
that slot once; later WMMA ops then read a VGPR and no longer contend
for va_ssrc.

SIMaterializeWMMAScale runs at the end of the machine SSA optimizations,
after SIShrinkInstructions and before scheduling. It is skipped at -O0
and on targets older than GFX12. GFX1250 is included: the separate VALU
read-after-write hazard no longer applies there, but the dependency
counter still does.

The pass walks every WMMA that has scale_src0 and records virtual SGPR
uses of scale_src0 and scale_src1, grouped by register. Physical
registers and subregister uses are left alone. For each SGPR it inserts
a COPY into a low aligned VGPR (the lo256 class matching the scale's

    [26 lines not shown]
DeltaFile
+4,158-3,987llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+1,125-963llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+847-631llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+591-492llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
+388-360llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+231-187llvm/test/CodeGen/AMDGPU/fptosi-sat-vector.ll
+7,340-6,62032 files not shown
+9,069-7,34738 files

LLVM/project 5164a11 — llvm/lib/Target/AMDGPU SIMaterializeWMMAScale.cpp, llvm/test/CodeGen/AMDGPU wmma-scale-sgpr-materialize.mir

[AMDGPU] Materialize subregister WMMA scales at lane width

Copy an SGPR subregister scale into a VGPR of that lane's size so two
lanes of one tuple stay independent.

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+62-1llvm/test/CodeGen/AMDGPU/wmma-scale-sgpr-materialize.mir
+22-13llvm/lib/Target/AMDGPU/SIMaterializeWMMAScale.cpp
+84-142 files

LLVM/project bccf5c4 — llvm/lib/Target/AArch64 AArch64MIPeepholeOpt.cpp, llvm/test/CodeGen/AArch64 peephole-orr.mir

AArch64: Skip physical registers in MIPeepholeOpt visitORR (#234194)

Doubt this appears in any real case, but ran into this when auditing
cases which could possibly need to clear kill flags on physical
registers. Also stop using getUniqueVRegDef in an SSA pass.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+41-0llvm/test/CodeGen/AArch64/peephole-orr.mir
+6-3llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+47-32 files

LLVM/project bd9f9ef — llvm/include/llvm/CodeGen DeadMachineInstructionElim.h, llvm/lib/CodeGen DeadMachineInstructionElim.cpp

DeadMIElim: Require SSA

Require SSA for DeadMachineInstructionElim. This is only used in the
SSA pipeline. The only test using a non-SSA run is apparently testing
LiveIntervals preservation, which it does not use or preserve.
DeltaFile
+0-38llvm/test/CodeGen/AMDGPU/dce-disjoint-intervals.mir
+14-0llvm/test/CodeGen/AMDGPU/dead-mi-elim-require-ssa.mir
+6-0llvm/lib/CodeGen/DeadMachineInstructionElim.cpp
+4-0llvm/include/llvm/CodeGen/DeadMachineInstructionElim.h
+24-384 files

Dreckly/dreckly 5883b08 — lang/php phpversion.mk, lang/php83 Makefile distinfo

php83: Update to 8.3.36
DeltaFile
+3-3lang/php83/distinfo
+1-1lang/php/phpversion.mk
+0-1lang/php83/Makefile
+4-53 files

LLVM/project ca9316a — mlir/include/mlir/Dialect/Tosa/IR TosaProfileCompliance.h, mlir/lib/Dialect/Tosa/Transforms TosaProfileCompliance.cpp

[mlir][tosa] Fix GCC 7 build failure in TosaProfileCompliance (#234239)

Fixes a GCC 7 build failure introduced by 45b9b97b83db (#233949).

Drop noexcept from the move constructors and move assignment operators
of VersionedTypeInfo and OpComplianceInfo to match their implicit
exception specifications.

Assisted-by: Gemini
DeltaFile
+5-6mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp
+4-4mlir/include/mlir/Dialect/Tosa/IR/TosaProfileCompliance.h
+9-102 files

LLVM/project 0202727 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AArch64 sve-intrinsics.ll

[AArch64]Increase the cost of SVE integer compares with lower throughput

SVE integer compares write a predicate and issue on fewer pipelines than
Neon compares on many cores (Olympus: 2/cycle vs 6/cycle, Neoverse V2:
1/cycle vs 4/cycle). LoopVectorize picked vscale x 32 for an any-of
reduction over i64 compares, which runs about 2x slower than the fixed
VF 16 loop on both cores. Double the cost of scalable icmp when the
scheduling model reports lower throughput for the SVE compare than for
the Neon compare, the same way as for fcmp.

Assisted-by: Cursor

Reviewers: sjoerdmeijer, sdesmalen-arm

Pull Request: https://github.com/llvm/llvm-project/pull/233469
DeltaFile
+86-45llvm/test/Transforms/LoopVectorize/AArch64/conditional-branches-cost.ll
+70-0llvm/test/Transforms/LoopVectorize/AArch64/sve-icmp-cost.ll
+29-29llvm/test/Analysis/CostModel/AArch64/sve-intrinsics.ll
+35-18llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+46-0llvm/utils/TableGen/SubtargetEmitter.cpp
+13-0llvm/test/TableGen/ResolveSchedClass.td
+279-923 files not shown
+287-979 files

LLVM/project 46db5f8 — llvm/bindings/ocaml/llvm llvm.mli, llvm/docs ReleaseNotes.md

[llvm-c][ocaml] Accept Module instead of Context in IRBuilder bindings (#234209)

This deprecates `LLVMCreateBuilderInContext` in favor of
`LLVMCreateBuilderForModule`, which takes `LLVMModuleRef` instead of
`LLVMContextRef`.

In the OCaml bindings, `builder llcontext` is replaced with `builder
llmodule`.

This propagates https://github.com/llvm/llvm-project/pull/229430 to
bindings.
DeltaFile
+5-5llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
+7-2llvm/include/llvm-c/Core.h
+2-4llvm/tools/llvm-c-test/echo.cpp
+3-3llvm/bindings/ocaml/llvm/llvm.mli
+6-0llvm/docs/ReleaseNotes.md
+3-1llvm/unittests/IR/ConstantsTest.cpp
+26-1514 files not shown
+47-3020 files

LLVM/project 36cf223 — clang/lib/CIR/Dialect/Transforms CIRABIClassifierAMDGPU.cpp CallConvLoweringPass.cpp, clang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp

[CIR] Wire AMDGPU into the call-convention lowering pass (#220197)

**Summary:** 
- Add an `AMDGPU` target to `CallConvLowering`
(`-cir-call-conv-lowering=target=amdgpu`), driven by the LLVM ABI
library's AMDGPU classifier.
- Add an AMDGPU `CIRABIClassifier` subclass and pass the calling
convention through `CIRABIClassifierCommon`.
- Report NYI for byref (IndirectAliased) and indirect arguments in
non-default address spaces.
- Add cir-opt tests for the supported cases and the NYI errors.

Clang pipeline does not select AMDGPU yet. The triple mapping and clang
tests are in #233822, stacked on this PR.

Related to issue: #220471

Assisted by: Claude Opus 4.8
DeltaFile
+54-20clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+61-0clang/lib/CIR/Dialect/Transforms/CIRABIClassifierAMDGPU.cpp
+59-0clang/test/CIR/Transforms/abi-lowering/amdgpu-calling-conv.cir
+53-0clang/test/CIR/Transforms/abi-lowering/amdgpu-kernel-hip-ptr.cir
+34-3clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+37-0clang/test/CIR/Transforms/abi-lowering/amdgpu-indirect-nyi.cir
+298-235 files not shown
+338-3611 files

NextBSD/src 7afef6a — . build.sh

Merge pull request #538 from nextbsd/e2/322-quiet-iso-init

build.sh: gate live-ISO init [init] progress behind verbose boot
DeltaFile
+16-9build.sh
+16-91 files

LLVM/project 2395a24 — llvm/include/llvm/Transforms/IPO Attributor.h, llvm/lib/Transforms/IPO Attributor.cpp

Attributor: Add only new attributes when manifesting

manifestAttrs collected the attributes to add in an AttrBuilder, then
copied the position's attribute set into another AttrBuilder to merge
them in. Collect them in an array and merge them into the set in one
pass. This requires the attributes passed to manifestAttrs to be sorted
like an attribute set, which all callers already do. The only one
passing more than one attribute is AMDGPUAttributor, whose implicit
argument attributes are sorted.

Instructions spent in amdgpu-attributor:
  rocPRIM test_device_scan, gfx942:          770.2M -> 710.8M (-7.7%)
  Blender Cycles HIP kernel, gfx1100:        380.0M -> 379.5M (-0.1%)
  rocPRIM 16 tests, full LTO, closed world:  3019.8M -> 2855.9M (-5.4%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+58-43llvm/lib/Transforms/IPO/Attributor.cpp
+3-1llvm/include/llvm/Transforms/IPO/Attributor.h
+61-442 files

LLVM/project 1f66a29 — llvm/include/llvm/IR Attributes.h, llvm/lib/IR AttributeImpl.h Attributes.cpp

IR: Add attributes from an array to an attribute set

Add AttributeSet::addAttributes and AttributeList::addAttributesAtIndex
overloads taking an array of attributes sorted like an attribute set,
with distinct kinds. They merge the attributes into the set in one pass,
without first copying the set into an AttrBuilder and adding each
attribute to it.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+45-15llvm/lib/IR/Attributes.cpp
+37-0llvm/unittests/IR/AttributesTest.cpp
+13-0llvm/include/llvm/IR/Attributes.h
+3-2llvm/lib/IR/AttributeImpl.h
+98-174 files

Dreckly/dreckly 93303ee — lang/php phpversion.mk, lang/php83 Makefile distinfo

php83: Update to 8.3.36
DeltaFile
+3-3lang/php83/distinfo
+1-1lang/php/phpversion.mk
+0-1lang/php83/Makefile
+4-53 files