[all-commits] [llvm/llvm-project] d9b619: Add support for mach-o symbol stubs. (#225155)

Steven Wu via All-commits all-commits at lists.llvm.org
Mon Sep 21 19:18:32 PDT 2026


  Branch: refs/heads/users/cachemeifyoucan/spr/llvmsupport-make-sysfsfile_t-into-a-seperate-type
  Home:   https://github.com/llvm/llvm-project
  Commit: d9b61968481a0cc6fbbef744eeecab16ff9d0c18
      https://github.com/llvm/llvm-project/commit/d9b61968481a0cc6fbbef744eeecab16ff9d0c18
  Author: Greg Clayton <gclayton at fb.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/DebugInfo/GSYM/ObjectFileTransformer.cpp
    A llvm/test/tools/llvm-gsymutil/X86/macho-symbol-stubs.yaml

  Log Message:
  -----------
  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.


  Commit: 54cfa2b76494491dc2e0780b7a5ffea9e55ea529
      https://github.com/llvm/llvm-project/commit/54cfa2b76494491dc2e0780b7a5ffea9e55ea529
  Author: Vasileios Porpodas <vasileios.porpodas at amd.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/include/llvm/SandboxIR/Value.h
    M llvm/lib/SandboxIR/Value.cpp
    M llvm/unittests/SandboxIR/SandboxIRTest.cpp

  Log Message:
  -----------
  [SandboxIR] Implement Value::stripAndAccumulateConstantOffsets() (#224784)

This patch implements the Sandbox IR version of
Value::stripAndAccumulateConstantOffsets(), mirroring LLVM IR.


  Commit: 3374bc31c4e293bb7037abdffacb2308e7ca2ebd
      https://github.com/llvm/llvm-project/commit/3374bc31c4e293bb7037abdffacb2308e7ca2ebd
  Author: Adam Smith <adams at nvidia.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
    M clang/include/clang/CIR/Dialect/IR/CIRDialect.td
    M clang/include/clang/CIR/Dialect/IR/CIROps.td
    M clang/include/clang/CIR/Interfaces/CIROpInterfaces.td
    M clang/include/clang/CIR/MissingFeatures.h
    M clang/lib/CIR/CodeGen/CIRGenCall.cpp
    M clang/lib/CIR/CodeGen/CIRGenModule.cpp
    M clang/lib/CIR/CodeGen/CIRGenModule.h
    M clang/lib/CIR/Dialect/IR/CIRAttrs.cpp
    M clang/lib/CIR/Dialect/IR/CIRDialect.cpp
    M clang/lib/CIR/Dialect/Transforms/CIRTransformUtils.cpp
    M clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
    M clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.h
    M clang/test/CIR/CodeGen/call.c
    M clang/test/CIR/CodeGen/side-effect.cpp
    M clang/test/CIR/IR/call.cir
    M clang/test/CIR/IR/enum-attrs.cir
    A clang/test/CIR/IR/invalid-effect-attrs.cir
    A clang/test/CIR/Lowering/memory-effects.cir
    M clang/test/CIR/Transforms/flatten-preserve-attrs.cir
    M clang/test/CIR/Transforms/idiom-recognizer.cpp

  Log Message:
  -----------
  [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


  Commit: febbf39f76caf3224dda67a5be9f92787356fdc8
      https://github.com/llvm/llvm-project/commit/febbf39f76caf3224dda67a5be9f92787356fdc8
  Author: Kewen Meng <Kewen.Meng at amd.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M offload/ci/hip-tpl.py

  Log Message:
  -----------
  [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.


  Commit: 5dc57157f12f0ff676e823d9b4d98b45c07e5df2
      https://github.com/llvm/llvm-project/commit/5dc57157f12f0ff676e823d9b4d98b45c07e5df2
  Author: Louis Dionne <ldionne.2 at gmail.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M .github/workflows/libcxx-pr-test-tools.yml

  Log Message:
  -----------
  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.


  Commit: 04d36008ff346d1ff9deded1cdf275fb2fb28c69
      https://github.com/llvm/llvm-project/commit/04d36008ff346d1ff9deded1cdf275fb2fb28c69
  Author: Ivan Tadeu Ferreira Antunes Filho <antunesi at google.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M clang/test/AST/ByteCode/module-default-ctor.cpp

  Log Message:
  -----------
  [clang][test] Write obj file into %t in ByteCode/module-default-ctor.cpp (#225192)


  Commit: 83af6956eda8e52d6dfbac143da5d5bd62fff9fe
      https://github.com/llvm/llvm-project/commit/83af6956eda8e52d6dfbac143da5d5bd62fff9fe
  Author: forking-google-bazel-bot[bot] <265904573+forking-google-bazel-bot[bot]@users.noreply.github.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M utils/bazel/llvm-project-overlay/llvm/BUILD.bazel

  Log Message:
  -----------
  [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>


  Commit: f677d3f38f45f318df47d5b5dd59a20c71d6a9bc
      https://github.com/llvm/llvm-project/commit/f677d3f38f45f318df47d5b5dd59a20c71d6a9bc
  Author: Alina Sbirlea <asbirlea at google.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
    A llvm/test/Transforms/ConstraintElimination/pointer-tighten-ne.ll

  Log Message:
  -----------
  [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.


  Commit: d3620a08fe99370161844c11d3a288d64583446f
      https://github.com/llvm/llvm-project/commit/d3620a08fe99370161844c11d3a288d64583446f
  Author: Shilei Tian <i at tianshilei.me>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/Target/AMDGPU/VOPDInstructions.td
    M llvm/test/MC/AMDGPU/gfx1250_asm_unsupported.s
    M llvm/test/MC/AMDGPU/gfx13_asm_vopd_errs.s

  Log Message:
  -----------
  [AMDGPU][MC] Remove two VOPD instructions from gfx1250 and gfx13 (#225199)

V_DUAL_DOT2ACC_F32_F16 and V_DUAL_DOT2ACC_F32_BF16 were removed from
both gfx1250 and gfx13.

Fixes LCOMPILER-2684.


  Commit: bf9a1bb8b032da4cfbad5db2671f1037f69a2107
      https://github.com/llvm/llvm-project/commit/bf9a1bb8b032da4cfbad5db2671f1037f69a2107
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/VPlan.cpp

  Log Message:
  -----------
  [VPlan] Don't require single-pred blocks on path to loop region (NFC). (#225208)

Generalize getVectorLoopRegion logic to not on single
predecessor/successor chain. This won't hold once the epilogue skeleton
is also modeled in VPlan.

Instead stop at any block with multiple predecessors. In plain CFG form,
that is the loop header, in region-based CFG the scalar preheader.

Currently NFC, but preparation to fully model epilogue vectorization in
VPlan natively.


  Commit: dc0abebc8e834bceea9a467f07e124ab944e9be9
      https://github.com/llvm/llvm-project/commit/dc0abebc8e834bceea9a467f07e124ab944e9be9
  Author: Adrian Prantl <aprantl at apple.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/docs/CommandGuide/lit.md
    M llvm/utils/lit/lit/Test.py
    M llvm/utils/lit/lit/cl_arguments.py
    M llvm/utils/lit/lit/main.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially-retries/lit.cfg
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially-retries/needs-four-attempts.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/always-fails.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/fails-once.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/lit.cfg
    R llvm/utils/lit/tests/rerun-failed-serially.py

  Log Message:
  -----------
  Revert "[lit] Add --rerun-failed-serially <REGEX> mechanism (#223504)" (#225205)

This reverts commit 49923e950b3e8f0adb693aa68b99df6a2479418b.

People reported flakyness in the LIT test for this lit change.


  Commit: eb701ae7fdf5071bf4b1dbde37a41fb16df49081
      https://github.com/llvm/llvm-project/commit/eb701ae7fdf5071bf4b1dbde37a41fb16df49081
  Author: Adam Smith <adams at nvidia.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.h
    A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-vaarg-non-pod-nyi.cpp
    M clang/test/CIR/CodeGen/complex.cpp
    M clang/test/CIR/CodeGen/var-arg-aggregate.c
    A clang/test/CIR/CodeGen/var-arg-direct-offset.cpp
    A clang/test/CIR/CodeGen/var-arg-empty.c
    A clang/test/CIR/CodeGen/var-arg-int128.c
    A clang/test/CIR/CodeGen/var-arg-long-double.c
    A clang/test/CIR/CodeGen/var-arg-vector.c
    M clang/test/CIR/CodeGen/var_arg.c
    A clang/test/CIR/Transforms/abi-lowering/x86_64-vaarg-valist-shape-nyi.cir
    M llvm/include/llvm/ABI/FunctionInfo.h
    M llvm/lib/ABI/Targets/X86.cpp
    M mlir/include/mlir/ABI/ABIRewriteContext.h

  Log Message:
  -----------
  [CIR] Expand callee-side va_arg on x86_64 (#222420)

CallConvLowering now classifies every `cir.va_arg` on its own, as an
unnamed argument with a full register budget, and expands it in place. A
fetch that fits the budget reads from the saved register area, and
everything else reads the overflow area and bumps the cursor. An
aggregate, an x87 long double, and an `__int128` all lower correctly
now. Each fetch reads at the alignment the argument area gives it, which
for an over-aligned record is higher than its type reports.

A non-trivially-copyable type still reports NYI.

`rewriteVAArg` takes the register demand from the ABI library rather
than rebuilding it from the shape of the coerced type. The library
computes it in `classifyArgumentType` as the `NeededInt` and `NeededSSE`
out-parameters and used to drop it, so `llvm::abi::ArgInfo` and
`mlir::abi::ArgClassification` now carry it. Expanding a `cir.va_arg`
needs the inputs to that decision rather than its result, because the
choice has to become a runtime branch on the va_list cursor.

Assisted-by: Cursor / claude-opus-5


  Commit: 6854d299e83c7b08d0450bcc85f13a84d3b5a29e
      https://github.com/llvm/llvm-project/commit/6854d299e83c7b08d0450bcc85f13a84d3b5a29e
  Author: Kunal Dubey <xakep8 at protonmail.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
    A clang/test/CIR/CodeGenBuiltins/builtin-stdc-bit-c2y.c

  Log Message:
  -----------
  [CIR] Lowering for the C2Y `stdc` bit builtins  (#218852)

Implemented CIR lowering for the C2Y `stdc` bit builtins currently
covered by this PR.

This adds support for:

- `stdc_rotate_left_*` / `__builtin_stdc_rotate_left`
- `stdc_rotate_right_*` / `__builtin_stdc_rotate_right`
- `stdc_memreverse8u8/u16/u32/u64`
- `stdc_memreverse8` / `__builtin_stdc_memreverse8`

The rotate builtins lower to `cir.rotate`, which then lowers to the LLVM
funnel-shift intrinsics.

For `stdc_memreverse8`, CIR matches classic CodeGen behavior:

- sizes `0` and `1` are no-ops, while still evaluating the pointer
argument
- sizes `2`, `4`, and `8` lower to load / byte-swap / store
- other constant sizes and dynamic sizes fall back to a
`stdc_memreverse8` library call through the isLibFunction path

Reference to discussion in PR #214931
[here](https://github.com/llvm/llvm-project/pull/214931#discussion_r3769544573)


  Commit: 6fe7d97e974d96b0962fdb5f5d975ffa42c9b0ad
      https://github.com/llvm/llvm-project/commit/6fe7d97e974d96b0962fdb5f5d975ffa42c9b0ad
  Author: Alexander Richardson <alexrichardson at google.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M llvm/test/CodeGen/RISCV/target-abi-valid.ll

  Log Message:
  -----------
  [RISC-V] Test ELF e_flags for llc -target-abi without module flag (#225128)

Verify that `llc -filetype=obj -target-abi=...` sets the ELF header
`e_flags`
according to `-target-abi` even when the input IR has no `"target-abi"`
module
flag and the enabled extensions (such as `+d`) would default to a
different ABI.

This commit was created with the help of AI tools


  Commit: 215a9b006a007b315af5c4bb3f669353029da44c
      https://github.com/llvm/llvm-project/commit/215a9b006a007b315af5c4bb3f669353029da44c
  Author: Taufiq Rahman <taufiqrx8 at gmail.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M llvm/docs/ReleaseNotes.md
    M llvm/include/llvm/Support/RISCVISAUtils.h
    M llvm/unittests/TargetParser/RISCVISAInfoTest.cpp

  Log Message:
  -----------
  [RISCV] Update the canonical extension order (#192392)

Fixes #192357.

Update the canonical order of one-letter standard RISC-V extensions in
RISCVISAUtils::AllStdExts to match the updated specification order,
where `p` moves after `v`.


  Commit: 31b28f55900649668bb3dad18ab90f6ce7a77c51
      https://github.com/llvm/llvm-project/commit/31b28f55900649668bb3dad18ab90f6ce7a77c51
  Author: Konstantinos Parasyris <koparasy at gmail.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M clang/lib/CIR/CodeGen/CIRGenModule.cpp
    M clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h
    M clang/lib/CIR/Lowering/CIRPasses.cpp
    A clang/test/CIR/CodeGenCUDA/lowering-lang-options.cu

  Log Message:
  -----------
  [CIR] Consume serialized LangOptions in post-CIRGen lowering (#225224)

Post-CIRGen lowering (LoweringPrepare, CallConvLowering) read a handful
of LangOptions facts from a live clang::LangOptions via the pass's
ASTContext. That prevented a reloaded .cir from lowering the same way it
was compiled, since a serialized module has no ASTContext. PR #224757
serialized those facts onto the module as #cir.lowering_lang_options;
this change makes lowering consume them from there.

To make sure the `lowering_lang_options` attribute is always available,
I moved the constrction of langOpts from release to the constructor. The
overall approach is very close to `LowerModule::getTarget()`

Currently there is still a reliance to `astContext` which I plan to
remove in upcoming PRs. The reliance blocks consuming .cir as an input
and test `cir-opt` with some of such passes.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply at anthropic.com>


  Commit: 69ddc4658fe6742c023043a4760194c530bc86c8
      https://github.com/llvm/llvm-project/commit/69ddc4658fe6742c023043a4760194c530bc86c8
  Author: Jeffrey Byrnes <jeffrey.byrnes at amd.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AMDGPUCoExecSchedStrategy.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUCoExecSchedStrategy.h
    M llvm/test/CodeGen/AMDGPU/coexec-block-carried-latency.mir
    M llvm/test/CodeGen/AMDGPU/coexec-sched-ds-fifo.mir
    M llvm/test/CodeGen/AMDGPU/coexec-sched-effective-stall.mir

  Log Message:
  -----------
  [AMDGPU] Add MemoryPipeline scheduling to Coexec sched (#192325)

This adds two pieces to the new scheduler:

Stalls between ds_load and fence
tryAsyncPipe
For both of these pieces we are making some assumptions about the
pipelining of memory instructions in the incoming IR. Namely, that the
long latency memory operations are pipelined and the shorter latency
memory operations (e.g. ds_loads) aren't. Moreover, this assumes that
any user added waitcnts appear directly before fences. These assumptions
are compensating for the fact that we don't have any analysis of the
pipeline available during scheduling.

Stalls between ds_load and fence
The main concept here is that when legalizing the fences we will insert
wait_dscnts for any outstanding ds_load instructions. By teaching the
scheduler about the stall between these instructions, we can hide
latency between ds_load -> wait_dscnt. A common idiom is:

wait_loadcnt
fence
signal
fence

Since waitcnts are often included with fences, we also add stalls for
these waitcnt instructions.

tryAsyncPipe
This helps us to acheive good memory pipelining without having good
memory pipeline modelling. This assumes the pipeline has been well
designed and amdgpu-barrier-signal-wait-latency is set appropriately.
Then, this heuristic will schedule memory pipeline components as soon as
the stalls are cleared. It will, for example, keep waitcnt and fence
instructions together, and will schedule load instructions as soon as
registers from previous iterations have been consumed (ensuring max
latency between load -> consumer). It errs on the side of hiding too
much latency for long latency loads.

---------

Co-authored-by: Austin Kerbow <Austin.Kerbow at amd.com>


  Commit: 2ce662d124ddf4081993c7980986207444a51305
      https://github.com/llvm/llvm-project/commit/2ce662d124ddf4081993c7980986207444a51305
  Author: Aiden Grossman <aidengrossman at google.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M .github/workflows/containers/libc/Dockerfile

  Log Message:
  -----------
  [Github] Bump libc container to Ubuntu 26.04 (#225212)


  Commit: d43ef1b381ca458bb34c1e79b050db5d3d834abd
      https://github.com/llvm/llvm-project/commit/d43ef1b381ca458bb34c1e79b050db5d3d834abd
  Author: Farzon Lotfi <farzonlotfi at microsoft.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
    M llvm/test/CodeGen/DirectX/RawBufferLoadDouble.ll
    A llvm/test/CodeGen/DirectX/ResourceAccess/load-rawbuffer-wide-double.ll
    M llvm/test/CodeGen/DirectX/TextureLoad.ll

  Log Message:
  -----------
  [DirectX] Fix RawBuffer Loads of double vectors (#224695)

fixes https://github.com/llvm/llvm-project/issues/224684

We need to do the same change we did for Raw Buffer Stores
(https://github.com/llvm/llvm-project/issues/223558) in
https://github.com/llvm/llvm-project/pull/224136 by Create add with the
byte index offsets because were were looking at the wrong argument.


  Commit: 33fcd70991316e238e63684cd4018f618d690668
      https://github.com/llvm/llvm-project/commit/33fcd70991316e238e63684cd4018f618d690668
  Author: Joshua Batista <jbatista at microsoft.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M clang/include/clang/Basic/Builtins.td
    M clang/lib/CodeGen/CGHLSLBuiltins.cpp
    M clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp
    M clang/lib/Sema/HLSLExternalSemaSource.cpp
    M clang/lib/Sema/SemaHLSL.cpp
    A clang/test/CodeGenHLSL/builtins/InterlockedMax.hlsl
    M clang/test/CodeGenHLSL/builtins/RWBuffer-Interlocked.hlsl
    A clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedMax.hlsl
    M clang/test/CodeGenHLSL/builtins/RWTexture-Interlocked.hlsl
    A clang/test/CodeGenHLSL/builtins/RasterizerOrderedByteAddressBuffer-InterlockedMax.hlsl
    A clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedMax-errors.hlsl
    A clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedMax-sm65-errors.hlsl
    A clang/test/SemaHLSL/BuiltIns/InterlockedMax-errors.hlsl

  Log Message:
  -----------
  [HLSL] Add `InterlockedMax` function and resource methods (#222160)

This PR adds the `InterlockedMax` standalone function and resource
methods.
It mimics the implementation of the `InterlockedMin` function and
resource
methods.

Like `min`, `max` is signedness aware. A signed operand lowers to
`atomicrmw max` and an unsigned operand lowers to `atomicrmw umax`. This
matches DXC, which selects between the `IMax` and `UMax` atomic binary
operations.

The PR also adds the 64-bit `InterlockedMax64` methods, which DXIL gates
on
shader model 6.6.

Fixes: https://github.com/llvm/llvm-project/issues/99124
Assisted by: Github Copilot


  Commit: d28da7e5238e8bd81c609ef19170dc6b73ee48ac
      https://github.com/llvm/llvm-project/commit/d28da7e5238e8bd81c609ef19170dc6b73ee48ac
  Author: Med Ismail Bennani <ismail at bennani.ma>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M lldb/include/lldb/Interpreter/Interfaces/ScriptedInterface.h
    M lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadPlanInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/OperatingSystemPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedBreakpointPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedCommandPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFrameProviderPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFramePythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFramePythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedHookPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPlatformPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedProcessPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedStackFrameRecognizerPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedStringSummaryPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedSyntheticChildrenPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedSyntheticChildrenPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPlanPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPlanPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPythonInterface.cpp
    M lldb/source/Target/ScriptedThreadPlan.cpp
    M lldb/test/API/commands/target/stop-hooks/TestStopHookScripted.py
    M lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py

  Log Message:
  -----------
  [lldb] Make ScriptedPythonInterface::Dispatch return llvm::Expected<T> (#224988)

Until now, `Dispatch` returned the extracted value and reported failure
through a `Status &` out-parameter, which leaves the two outcomes
indistinguishable at the value level: a Python method that returns
`None` and one that raises both hand back a default-constructed `T`.
Only `error` told them apart, and because the signature advertises the
value, call sites reached for the value and dropped the error.

Three real instances of that:

- `ScriptedHookPythonInterface::HandleStop` returned `true` whenever the
object was null, discarding the backtrace of a raising `handle_stop`
(fixed separately).
- `GetStatusFromMethod` discarded `Dispatch<Status>`'s return value, so
the `SBError` returned by `ScriptedProcess.launch/attach/resume` and the
three `ScriptedPlatform` entry points was ignored entirely: a `launch()`
returning `SBError("no such file")` reported success.
- `GetThreadPlanMetadataForStepType` string-matched the exception text
to guess whether the method existed, with a FIXME asking for exactly
this.

This switches `Dispatch`, `CallStaticMethod` and
`ExtractValueFromPythonObject` to `llvm::Expected<T>` and drop the
out-parameter. `CheckStructuredDataObject` becomes dead and is removed.

An absent method now yields `UnimplementedError`. Three helpers let each
call site state its intent: `DispatchToOptional` for optional methods a
script may legitimately omit, which reports an unimplemented method as
`std::nullopt` and lets every other failure propagate; `LogAndDefault`
for entry points whose return type cannot express failure, which logs
the error and falls back to a default-constructed value instead of
discarding it; and `LogAndError`, which builds and logs the errors
`Dispatch` returns itself.

Widening the `LogAndDefault` entry points to `Expected` touches every
caller in ScriptedThread/ScriptedProcess/ScriptedFrame and is left as
follow-up.

This patch stops at the interface layer deliberately: it is about
surfacing the error and the Python exception out of `Dispatch` and into
the scripted interface classes. That has to happen to all of them at
once, because they share the same dispatch entry point, which is why
this touches every interface class together. Carrying those exceptions
the rest of the way to the user is per-extension work, and lands as a
follow-up PR for each extension.

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


  Commit: 8d64e84bb915b900a546408143790a578ab4ac19
      https://github.com/llvm/llvm-project/commit/8d64e84bb915b900a546408143790a578ab4ac19
  Author: Konstantinos Parasyris <koparasy at gmail.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp

  Log Message:
  -----------
  [CIR][NFC] Route target facts in LoweringPrepare through LowerModule (#225236)

LowerModule already rebuilds a full clang::TargetInfo
from the module's cir.triple and exposes getTarget() 
and getCXXABIKind(). The changes are a pure routing
change: no new attribute and no CIRGen change, 
since every routed fact is derivable from the triple,
that is already included in the module.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply at anthropic.com>


  Commit: 26c90e1588af2d70ac7cf9b51a01ea56acd9f2cc
      https://github.com/llvm/llvm-project/commit/26c90e1588af2d70ac7cf9b51a01ea56acd9f2cc
  Author: Andy Lim <andysjlim at chromium.org>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    M llvm/test/MC/COFF/ir-to-imgrel.ll

  Log Message:
  -----------
  [TargetLowering][COFF] Only check shouldAssumeDSOLocal on GlobalVariable in lowerRelativeReference (#225160)

In #220674, a check was added to lowerRelativeReference requiring that
LHS be dso_local to prevent image-relative relocations for dllimport
variables. However, this check was applied unconditionally to all
GlobalObjects, including functions.

On Windows COFF, dllimport functions are valid targets for
image-relative relocations because the linker provides import thunks in
the local image. In particular, MSVC C++ exception handling metadata
(ThrowInfo and CatchableType) references imported copy constructors and
destructors via image-relative offsets when throwing exception types
across DLL boundaries. Rejecting them caused compilation failures in
downstream projects like PyTorch with:
"error: symbol '__ImageBase' can not be undefined in a subtraction
expression"

Restrict the shouldAssumeDSOLocal check to GlobalVariables only.


  Commit: d024790161549c4e45828da9fb0ea74be5786403
      https://github.com/llvm/llvm-project/commit/d024790161549c4e45828da9fb0ea74be5786403
  Author: Anshul Nigham <nigham at google.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M clang/test/AST/ByteCode/module-redecl1.cpp

  Log Message:
  -----------
  [clang][test] Fix module cache path in module-redecl1.cpp (#225241)

Fixes commit aa6b03ed5a9ffe5ba6f0d945fac9961884b5c6ed

Use `-fmodules-cache-path=%t` instead of `Inputs/` which fails in
read-only test sandboxes due to permission errors when writing compiled
module files. Also clean `%t` before execution and remove redundant
`-cc1`, matching the RUN lines in
test/Modules/redecl-add-after-load.cpp.


  Commit: 7c47f4218d453031fb5e27b1f99846220e62536b
      https://github.com/llvm/llvm-project/commit/7c47f4218d453031fb5e27b1f99846220e62536b
  Author: Lang Hames <lhames at gmail.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI/CallSPSCI.h

  Log Message:
  -----------
  [ORC] Mangle Call CI names as C (#225227)

Flip the Call descriptors (call_main, call_void_void, call_int32_void,
call_int32_int32) from Verbatim to C, so their names carry the target's
C mangling. Served by the in-tree OrcRTBootstrap; controller and
executor mangle the same specs and nothing else defines these names.


  Commit: 4c36312084fea422bec96f1bdb599b38b144289d
      https://github.com/llvm/llvm-project/commit/4c36312084fea422bec96f1bdb599b38b144289d
  Author: Lang Hames <lhames at gmail.com>
  Date:   2026-09-22 (Tue, 22 Sep 2026)

  Changed paths:
    M lldb/include/lldb/Expression/LLVMUserExpression.h
    M lldb/source/Expression/LLVMUserExpression.cpp
    M lldb/test/API/commands/expression/memory-allocation/TestMemoryAllocSettings.py

  Log Message:
  -----------
  [lldb] Refactor PrepareToExecuteJITExpression (#224888)

Refactor the body of PrepareToExecuteJITExpression into two methods:
AllocateInterpreterStackFrame and AllocateAndMaterializeStruct.

This change is purely mechanical, but improves readability and sets up a
future refactor: AllocateAndMaterializeStruct is generic expression
setup and should remain where it is, but AllocateInterpreterStackFrame
is only needed on the interpreter path and can be sunk into that path in
a future commit.

---------

Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>


  Commit: 4fbeeb8b74e6c314706044a1032f26b192314f4c
      https://github.com/llvm/llvm-project/commit/4fbeeb8b74e6c314706044a1032f26b192314f4c
  Author: Steven Wu <stevenwu at apple.com>
  Date:   2026-09-21 (Mon, 21 Sep 2026)

  Changed paths:
    M .github/workflows/containers/libc/Dockerfile
    M .github/workflows/libcxx-pr-test-tools.yml
    M clang/include/clang/Basic/Builtins.td
    M clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
    M clang/include/clang/CIR/Dialect/IR/CIRDialect.td
    M clang/include/clang/CIR/Dialect/IR/CIROps.td
    M clang/include/clang/CIR/Interfaces/CIROpInterfaces.td
    M clang/include/clang/CIR/MissingFeatures.h
    M clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
    M clang/lib/CIR/CodeGen/CIRGenCall.cpp
    M clang/lib/CIR/CodeGen/CIRGenModule.cpp
    M clang/lib/CIR/CodeGen/CIRGenModule.h
    M clang/lib/CIR/Dialect/IR/CIRAttrs.cpp
    M clang/lib/CIR/Dialect/IR/CIRDialect.cpp
    M clang/lib/CIR/Dialect/Transforms/CIRTransformUtils.cpp
    M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
    M clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.h
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp
    M clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h
    M clang/lib/CIR/Lowering/CIRPasses.cpp
    M clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
    M clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.h
    M clang/lib/CodeGen/CGHLSLBuiltins.cpp
    M clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp
    M clang/lib/Sema/HLSLExternalSemaSource.cpp
    M clang/lib/Sema/SemaHLSL.cpp
    M clang/test/AST/ByteCode/module-default-ctor.cpp
    M clang/test/AST/ByteCode/module-redecl1.cpp
    A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-vaarg-non-pod-nyi.cpp
    M clang/test/CIR/CodeGen/call.c
    M clang/test/CIR/CodeGen/complex.cpp
    M clang/test/CIR/CodeGen/side-effect.cpp
    M clang/test/CIR/CodeGen/var-arg-aggregate.c
    A clang/test/CIR/CodeGen/var-arg-direct-offset.cpp
    A clang/test/CIR/CodeGen/var-arg-empty.c
    A clang/test/CIR/CodeGen/var-arg-int128.c
    A clang/test/CIR/CodeGen/var-arg-long-double.c
    A clang/test/CIR/CodeGen/var-arg-vector.c
    M clang/test/CIR/CodeGen/var_arg.c
    A clang/test/CIR/CodeGenBuiltins/builtin-stdc-bit-c2y.c
    A clang/test/CIR/CodeGenCUDA/lowering-lang-options.cu
    M clang/test/CIR/IR/call.cir
    M clang/test/CIR/IR/enum-attrs.cir
    A clang/test/CIR/IR/invalid-effect-attrs.cir
    A clang/test/CIR/Lowering/memory-effects.cir
    A clang/test/CIR/Transforms/abi-lowering/x86_64-vaarg-valist-shape-nyi.cir
    M clang/test/CIR/Transforms/flatten-preserve-attrs.cir
    M clang/test/CIR/Transforms/idiom-recognizer.cpp
    A clang/test/CodeGenHLSL/builtins/InterlockedMax.hlsl
    M clang/test/CodeGenHLSL/builtins/RWBuffer-Interlocked.hlsl
    A clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedMax.hlsl
    M clang/test/CodeGenHLSL/builtins/RWTexture-Interlocked.hlsl
    A clang/test/CodeGenHLSL/builtins/RasterizerOrderedByteAddressBuffer-InterlockedMax.hlsl
    A clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedMax-errors.hlsl
    A clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedMax-sm65-errors.hlsl
    A clang/test/SemaHLSL/BuiltIns/InterlockedMax-errors.hlsl
    M lldb/include/lldb/Expression/LLVMUserExpression.h
    M lldb/include/lldb/Interpreter/Interfaces/ScriptedInterface.h
    M lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadPlanInterface.h
    M lldb/source/Expression/LLVMUserExpression.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/OperatingSystemPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedBreakpointPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedCommandPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFrameProviderPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFramePythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedFramePythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedHookPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPlatformPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedProcessPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedStackFrameRecognizerPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedStringSummaryPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedSyntheticChildrenPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedSyntheticChildrenPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPlanPythonInterface.cpp
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPlanPythonInterface.h
    M lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedThreadPythonInterface.cpp
    M lldb/source/Target/ScriptedThreadPlan.cpp
    M lldb/test/API/commands/expression/memory-allocation/TestMemoryAllocSettings.py
    M lldb/test/API/commands/target/stop-hooks/TestStopHookScripted.py
    M lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
    M llvm/docs/CommandGuide/lit.md
    M llvm/docs/ReleaseNotes.md
    M llvm/include/llvm/ABI/FunctionInfo.h
    M llvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI/CallSPSCI.h
    M llvm/include/llvm/SandboxIR/Value.h
    M llvm/include/llvm/Support/FileSystem.h
    M llvm/include/llvm/Support/RISCVISAUtils.h
    M llvm/lib/ABI/Targets/X86.cpp
    M llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    M llvm/lib/DebugInfo/GSYM/ObjectFileTransformer.cpp
    M llvm/lib/SandboxIR/Value.cpp
    M llvm/lib/Support/Windows/Path.inc
    M llvm/lib/Target/AMDGPU/AMDGPUCoExecSchedStrategy.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUCoExecSchedStrategy.h
    M llvm/lib/Target/AMDGPU/VOPDInstructions.td
    M llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
    M llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
    M llvm/lib/Transforms/Vectorize/VPlan.cpp
    M llvm/test/CodeGen/AMDGPU/coexec-block-carried-latency.mir
    M llvm/test/CodeGen/AMDGPU/coexec-sched-ds-fifo.mir
    M llvm/test/CodeGen/AMDGPU/coexec-sched-effective-stall.mir
    M llvm/test/CodeGen/DirectX/RawBufferLoadDouble.ll
    A llvm/test/CodeGen/DirectX/ResourceAccess/load-rawbuffer-wide-double.ll
    M llvm/test/CodeGen/DirectX/TextureLoad.ll
    M llvm/test/CodeGen/RISCV/target-abi-valid.ll
    M llvm/test/MC/AMDGPU/gfx1250_asm_unsupported.s
    M llvm/test/MC/AMDGPU/gfx13_asm_vopd_errs.s
    M llvm/test/MC/COFF/ir-to-imgrel.ll
    A llvm/test/Transforms/ConstraintElimination/pointer-tighten-ne.ll
    A llvm/test/tools/llvm-gsymutil/X86/macho-symbol-stubs.yaml
    M llvm/unittests/SandboxIR/SandboxIRTest.cpp
    M llvm/unittests/TargetParser/RISCVISAInfoTest.cpp
    M llvm/utils/lit/lit/Test.py
    M llvm/utils/lit/lit/cl_arguments.py
    M llvm/utils/lit/lit/main.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially-retries/lit.cfg
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially-retries/needs-four-attempts.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/always-fails.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/fails-once.py
    R llvm/utils/lit/tests/Inputs/rerun-failed-serially/lit.cfg
    R llvm/utils/lit/tests/rerun-failed-serially.py
    M mlir/include/mlir/ABI/ABIRewriteContext.h
    M offload/ci/hip-tpl.py
    M utils/bazel/llvm-project-overlay/llvm/BUILD.bazel

  Log Message:
  -----------
  Fix windows another attempt

Created using spr 1.3.7


Compare: https://github.com/llvm/llvm-project/compare/8374c329d264...4fbeeb8b74e6

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list