LLVM/project 0633b7e — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPUtils.cpp SLPCostAnalysis.h

[𝘀𝗽𝗿] initial version

Created using spr 2.0.0-beta.1
DeltaFile
+75-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPCostAnalysis.cpp
+54-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+10-15llvm/test/Transforms/SLPVectorizer/X86/divrem-lane-pair.ll
+17-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPCostAnalysis.h
+12-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.cpp
+2-6llvm/test/Transforms/SLPVectorizer/X86/revec-divrem-lane-pair.ll
+170-212 files not shown
+178-228 files

LLVM/project 90db03f — llvm/test/Transforms/Attributor light-preserved-analyses.ll

[Attributor] Disable analysis-invalidation verification in light-preserved-analyses.ll (#242001)

0f7faf803fdd added light-preserved-analyses.ll, whose CHECK-NEXT chain
assumes nothing is printed between "Running pass: AttributorLightPass"
and the next RequireAnalysisPass. With EXPENSIVE_CHECKS (as on
clang-stage1-RA-expensive), -verify-analysis-invalidation defaults to
on, so the PreservedFunctionHashAnalysis/PreservedModuleHashAnalysis
helpers are invalidated by the pass and recomputed, adding extra
"Invalidating analysis"/"Running analysis" lines and breaking
CHECK-NEXT.

Pass -verify-analysis-invalidation=false in the RUN line, as other
-debug-pass-manager tests do (e.g.
LoopVersioning/preserved-analyses.ll), so the test no longer depends on
whether the build enables expensive checks.

rdar://192409356

Co-Authored-By: Claude Sonnet 5.5 <noreply at anthropic.com>
DeltaFile
+1-1llvm/test/Transforms/Attributor/light-preserved-analyses.ll
+1-11 files

LLVM/project 6aa8d34 — clang/test/C/C23 n2940.c, clang/test/C/drs dr3xx.c

[SystemZ] Update clang lit tests for default trigraphs on z/OS (#238549)

Update the clang lit tests so they work (or marked as xfail) on z/OS
with trigraphs being on by default.
DeltaFile
+8-0clang/test/C/drs/dr3xx.c
+4-0clang/test/SemaCXX/cxx2a-nttp-printing.cpp
+1-1clang/test/Lexer/bcpl-escaped-newline.c
+1-0clang/test/C/C23/n2940.c
+14-14 files

LLVM/project b73f0fa — llvm/lib/Target/Sparc SparcInstrInfo.h SparcInstrInfo.cpp, llvm/test/CodeGen/SPARC postra-sched.ll

[SPARC] Treat RESTORE as a scheduling boundary (#240337)

The post-RA scheduler runs after the PEI pass that adds the RESTORE
instruction and could move instructions around the RESTORE so that they
accidentally use the caller's registers instead.

No SPARC processor currently enables post-RA scheduling.

Assisted-by: Claude
DeltaFile
+60-0llvm/test/CodeGen/SPARC/postra-sched.ll
+13-0llvm/lib/Target/Sparc/SparcInstrInfo.cpp
+4-0llvm/lib/Target/Sparc/SparcInstrInfo.h
+77-03 files

LLVM/project 1d28c37 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination vector-with-overflow.ll

[ConstraintElim] Use ConstantInt::getFalse in replaceOverflowUses. (#241998)

We also support simplifying ops on vector values, so use
ConstantInt::getFalse instead of Builder.getFalse() which returns a
plain bool.

Fixes a crash in the added tests.
DeltaFile
+38-0llvm/test/Transforms/ConstraintElimination/vector-with-overflow.ll
+1-1llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+39-12 files

LLVM/project 1464a03 — clang/test lit.cfg.py, clang/test/ClangScanDeps modules-pch.c modules-pch-dangling.c

[SystemZ][z/OS] Mark scan-dep tests as unsupported/xfail (#238557)

Most of these are unsupported b/c z/OS doesn't have the __clangast
section just like in AIX. The others are like not handling multiple
threads.
DeltaFile
+2-3clang/test/ClangScanDeps/modules-symlink.c
+5-0clang/test/lit.cfg.py
+1-3clang/test/PCH/gch-probe.c
+1-3clang/test/PCH/debug-info-pch-path.c
+1-3clang/test/ClangScanDeps/modules-pch.c
+1-3clang/test/ClangScanDeps/modules-pch-dangling.c
+11-1511 files not shown
+23-3017 files

LLVM/project f444c42 — llvm/lib/Target/AMDGPU AMDGPUHWEvents.cpp, llvm/test/CodeGen/AMDGPU waitcnt-tensor-xcnt.mir

[AMDGPU] Do not track TENSOR_SAVE/TENSOR_STOP with xcnt (#239519)

Follow-up to #236045.

The VGLOBAL tensor ops don't increment xcnt, but TENSOR_SAVE and
TENSOR_STOP take the generic FLAT path in `getEventsForImpl` and get
`VMEM_GROUP`. Counting them weakens the wait for older VMEM operations:
the address of an earlier global load can be overwritten after
`s_wait_xcnt 1` when `s_wait_xcnt 0` is needed. It also adds an
unnecessary `s_wait_xcnt 0` before a later `$exec` write.

Skip `VMEM_GROUP` for these two opcodes.

---------

Co-authored-by: Cursor <cursoragent at cursor.com>
Co-authored-by: Matt Arsenault <arsenm2 at gmail.com>
DeltaFile
+76-0llvm/test/CodeGen/AMDGPU/waitcnt-tensor-xcnt.mir
+5-1llvm/lib/Target/AMDGPU/AMDGPUHWEvents.cpp
+81-12 files

LLVM/project 197fdab — llvm/test/tools/llubi intr_vp_merge.ll, llvm/tools/llubi/lib Interpreter.cpp

[llubi] Add support for vp.merge (#241727)

A vp.merge is unique from other VP intrinsics in that the lanes past EVL
(or the pivot as the langref calls it) aren't poison, they're taken from
the false branch.

It's defined in terms of `select %EVLMask, %true, %false`. I've factored
out the SelectInst logic so it can be shared. But it can be duplicated
if reviewers prefer.

Assisted-by: Opus 5.5
DeltaFile
+31-16llvm/tools/llubi/lib/Interpreter.cpp
+38-0llvm/test/tools/llubi/intr_vp_merge.ll
+69-162 files

LLVM/project 2005d0c — llvm/test/Transforms/SLPVectorizer/X86 revec-divrem-lane-pair.ll divrem-lane-pair.ll

[SLP][NFC]Add tests for scalar divs paired with vector rems, NFC

Pull-request: https://github.com/llvm/llvm-project/pull/242015
DeltaFile
+483-0llvm/test/Transforms/SLPVectorizer/X86/divrem-lane-pair.ll
+40-0llvm/test/Transforms/SLPVectorizer/X86/revec-divrem-lane-pair.ll
+523-02 files

LLVM/project f453643 — clang/lib/CodeGen CGOpenMPRuntime.cpp, flang/test/Integration/OpenMP mapper-present-propagation.f90

[OpenMP][OpenMPIRBuilder] Enable non-pointee storage present propagation in mappers (#241537)

Add a boolean to emitUserDefinedMapper to toggle on present propagation
for non-pointee storage members, effectively storage shared with/part of
the top-level parent. This will remain off for the main clang path for
the moment but is switched on for Flang/CIR. This is due to the fact
that Clang still predominantly uses OBJ_AND_PTR style maps, whereas the
MLIR path only uses it for declare target at the moment, which bypasses
the mapper route making it a non-issue for this change.
DeltaFile
+249-0flang/test/Integration/OpenMP/mapper-present-propagation.f90
+32-21llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+15-9llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+6-2clang/lib/CodeGen/CGOpenMPRuntime.cpp
+3-3mlir/test/Target/LLVMIR/omptarget-llvm.mlir
+2-1mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+307-366 files

LLVM/project c53f076 — llvm/lib/Support VirtualFileSystem.cpp, llvm/unittests/Support VirtualFileSystemTest.cpp

[Support] Resolve real path lazily for RealFile (#239020)

`RealFileSystem` resolves the real path of every file it opens, so
that `RealFile::getName()` can return it later. Not every caller asks
for the name: clang's dependency scanner opens a file by the path it
already has and only reads its contents.

On Windows, the real path comes from `GetFinalPathNameByHandleW`,
which queries the Mount Manager, and that query serializes. Parallel
compile processes wait in `mountmgr.sys`.

Resolve the path on the first `getName()` call, using
`getRealPathFromHandle` on the open file. Callers that ask for the
name get the same result as before. Callers that never ask no longer
pay for it.

When the OS cannot resolve the path from the open file, or the
file is already closed, fall back to the `real_path` of the original
path.

    [3 lines not shown]
DeltaFile
+21-9llvm/lib/Support/VirtualFileSystem.cpp
+28-0llvm/unittests/Support/VirtualFileSystemTest.cpp
+49-92 files

LLVM/project 573aba3 — clang/include/clang/CIR CIRDataLayoutSpec.h, clang/include/clang/CIR/Dialect/IR CIRAttrs.td

[CIR] Use target-specific maximum for _BitInt alignment (#241466)

CIR had been using a hard-coded 64-bit maximum alignment for _BitInt
types, which matches x86-64 targets but not AArch64. This change adds an
MLIR data layout entry to record the target's maximum _BitInt alignment
so that this value can be retrieved by post-codegen queries.

Assisted-by: Cursor / various models
DeltaFile
+54-5clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+58-0clang/test/CIR/CodeGen/bitint-max-align.c
+36-0clang/test/CIR/IR/bitint-data-layout.cir
+26-0clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+11-5clang/include/clang/CIR/CIRDataLayoutSpec.h
+9-6clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+194-166 files not shown
+232-2112 files

LLVM/project 423d7fd — llvm/lib/Transforms/IPO Attributor.cpp, llvm/test/Transforms/FunctionAttrs nonnull.ll

Attributor: Don't seed functions without exact definitions in the light pass

attributor-light seeded abstract attributes for every function in the
SCC, including functions without an exact definition, e.g. linkonce_odr
C++ inline functions. Their attributes cannot be derived from the body
that may be replaced at link time, so these AAs only reached a
pessimistic state. FunctionAttrs skips such functions as well. NFC in
the output of the light pass for CTMark, kimwitu++ and several clang
sources.

CTMark instructions:u with -attributor-enable=light:
  O3: -1.30% (tramp3d-v4 -10.43%)
  ThinLTO: -0.83% (tramp3d-v4 -4.01%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+7-3llvm/lib/Transforms/IPO/Attributor.cpp
+1-1llvm/test/Transforms/FunctionAttrs/nonnull.ll
+8-42 files

LLVM/project 18b0bc8 — llvm/include/llvm/IR PassManagerImpl.h PassManager.h

IR: Track analysis invalidation state by result list index

AnalysisManager::invalidate recorded whether each cached result was
invalidated in a 32 entry SmallDenseMap, and the Invalidator found
dependencies through the AnalysisResults map. Keep the states in a
vector parallel to the IR unit's result list instead, and find
dependencies by scanning that short list. With N cached analyses for
the IR unit, each lookup is O(N) and invalidation O(N^2) in the worst
case. N is bounded by the number of registered analyses rather than
the size of the IR: functions have about 11 cached results in O3 (at
most 22), and the average scan costs about as much as the hash probe
it replaces.

CTMark instructions:u, geomean: O3 -0.27%, ThinLTO -0.30%

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+39-30llvm/include/llvm/IR/PassManager.h
+11-33llvm/include/llvm/IR/PassManagerImpl.h
+50-632 files

LLVM/project fd5d3cf — cmake README.md

[cmake][docs] Rewrite cmake rst docs to md [2/2] (#234025)

Tracking issue:
[#201242](https://github.com/llvm/llvm-project/issues/201242)

See the [migration
guide](https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines)
for more information.

this is the second part of migrating the cmake readme from rst to md
the content conversion is provided by this pr, following the rename in
the previous pr

Depends on #234023
the first commit is from the base pr (rename), the second commit
contains the content conversion
DeltaFile
+26-32cmake/README.md
+26-321 files

LLVM/project 4837151 — clang/docs ReleaseNotes.md, clang/lib/CodeGen CGOpenMPRuntime.h CGStmtOpenMP.cpp

[Clang][OpenMP] Emit device kernels for target regions in lambdas without an enclosing function (#240840)

Fixes #136652

A `target` region in a lambda at namespace scope no longer crashes the
host after #226691, but with offloading the device still emitted no
kernel for it. The device finds target regions by scanning function
bodies, and a lambda in a global initializer, a default argument or a
default member initializer is reached from none of them. The host
registers the entry, the device image has nothing behind it.

The device scan now walks those initializers and names a region the way
the host does: after the enclosing non-closure function, or after the
call operator itself when there is none, through one helper shared by
both sides. Such closures also get a mangling number when offloading, as
under CUDA, so the two compilations agree on the name.

AI Assisted!
DeltaFile
+126-6clang/test/OpenMP/target_global_ref_namespace_scope_lambda_codegen.cpp
+74-22clang/lib/CodeGen/CGOpenMPRuntime.cpp
+10-13clang/lib/CodeGen/CGStmtOpenMP.cpp
+12-0clang/lib/CodeGen/CGOpenMPRuntime.h
+7-1clang/lib/Sema/SemaLambda.cpp
+1-1clang/docs/ReleaseNotes.md
+230-436 files

LLVM/project bc6c065 — llvm/lib/CodeGen TargetLoweringObjectFileImpl.cpp, llvm/lib/IR AutoUpgrade.cpp

[CodeGen] Set the SignedClassRO bit in __objc_imageinfo (#238444)

Since #147899, clang emits the "Objective-C Enforce ClassRO Pointer
Signing" module flag. Its value is `SignedClassRO (1 << 4)` when clang
signs `class_ro_t` pointers, which it does by default on arm64e, and 0
otherwise. `GetObjCImageInfo` doesn't OR this key into the image info
flags so the bit never reaches `__objc_imageinfo`. For the same arm64e
Objective-C file, Xcode's clang writes flags 0x50 and upstream clang
0x40.

The Objective-C runtime reads a clear bit as "this image's class_ro_t
pointers are not signed". When an arm64e process loads such an image,
objc4 quietly stops authenticating `class_ro_t` pointers for the whole
process.

Here, we add the key to the set. `ptrauth-objc-imageinfo.ll` checks an
arm64e module with the flag set and one where clang emits the flag as 0
and the flags stay 0x40.

Assisted-by: Claude Code
DeltaFile
+52-0llvm/test/Linker/objectivec-classro-signing-flag.ll
+45-0llvm/test/CodeGen/AArch64/ptrauth-objc-imageinfo.ll
+13-0llvm/lib/IR/AutoUpgrade.cpp
+3-2llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+1-1llvm/test/DebugInfo/sroa-handle-dbg-value.ll
+1-0llvm/test/Bitcode/upgrade-module-flag.ll
+115-36 files

LLVM/project d70ed75 — cmake README.rst README.md

[cmake][docs] Rename cmake rst docs to md [1/2] (#234023)

Tracking issue:
[#201242](https://github.com/llvm/llvm-project/issues/201242)

See the [migration
guide](https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines)
for more information.

this is the first part of renaming the cmake readme from rst to md
the content conversion is provided by the next PR in this stack
DeltaFile
+0-59cmake/README.rst
+59-0cmake/README.md
+59-592 files

LLVM/project 384d99d — openmp/tools/Modules README.md

[openmp][docs] Rewrite openmp rst docs to md [2/2] (#234020)

Tracking issue:
[#201242](https://github.com/llvm/llvm-project/issues/201242)

See the [migration
guide](https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines)
for more information.

this is the second part of migrating the remaining openmp readme from
rst to md
the content conversion is provided by this pr, following the rename in
the previous pr

Depends on #234018

the first commit is from the base pr (rename), the second commit
contains the content conversion
DeltaFile
+19-21openmp/tools/Modules/README.md
+19-211 files

LLVM/project 2fdabe9 — clang/lib/Sema SemaOpenMP.cpp, clang/test/OpenMP structured-bindings-messages.cpp

[Clang][OpenMP] Fix crash on a tuple-like structured binding in a task (#241357)

Fixes #116258

A tuple-like structured binding (`std::pair`, `std::tuple`) referenced
in a `task` or named in `firstprivate` crashed clang right after the
"not yet supported" error. `isOpenMPCapturedDecl` maps struct and array
bindings to their `DecompositionDecl` but let tuple-like ones fall into
the data-member path, which dereferences a private copy that a binding's
DSA never has.

`isOpenMPCapturedDecl` now reports the holding variable for a privatized
tuple-like binding, so its uses still reach the capture checks instead
of a null private copy; unprivatized ones keep returning null. Outside
any construct, `getDSA` now classifies a tuple-like binding by the
storage of the variable it decomposes, so a namespace-scope one is
shared like that variable.

LLM tools were used for this contribution.
DeltaFile
+67-0clang/test/OpenMP/structured-bindings-messages.cpp
+18-5clang/lib/Sema/SemaOpenMP.cpp
+85-52 files

LLVM/project 8ecdc4f — clang/test/TableGen builtin-arg-range.td

Check exact output in test
DeltaFile
+13-2clang/test/TableGen/builtin-arg-range.td
+13-21 files

LLVM/project 4ea4cf8 — clang/include/clang/Basic Builtins.def BuiltinsBase.td

Document that ArgRange matches the IR range attribute
DeltaFile
+2-1clang/include/clang/Basic/BuiltinsBase.td
+1-0clang/include/clang/Basic/Builtins.def
+3-12 files

LLVM/project c0f5f41 — clang/include/clang/Basic BuiltinsBase.td Builtins.h, clang/lib/Basic Builtins.cpp

clang: Add ArgRange builtin attribute for constant argument ranges

Many target builtins take constant arguments that must be in a
specific range. These usually correspond directly to the Range
annotation on the IR intrinsic, which the verifier enforces. Today
this requires manual verification with a large builtin ID switch in
Sema, and missed cases will emit code that fails the IR verifier.

Add an ArgRange<Index, Lo, Hi> builtin attribute declaring that a
_Constant argument must be in the half-open range [Lo, Hi), the same
as the IR declaration.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+87-0clang/test/TableGen/builtin-arg-range.td
+50-24clang/lib/Sema/SemaChecking.cpp
+48-0clang/utils/TableGen/ClangBuiltinsEmitter.cpp
+23-0clang/lib/Basic/Builtins.cpp
+10-0clang/include/clang/Basic/Builtins.h
+7-0clang/include/clang/Basic/BuiltinsBase.td
+225-241 files not shown
+226-247 files

LLVM/project 69addf1 — flang/test/Lower/OpenMP declare-mapper-iterator.f90, llvm/test/CodeGen/NVPTX mixed-precision-fma-f32x2-upconvert.ll mixed-precision-fma-f32x2-upconvert-invalid.ll

Merge branch 'main' into users/lukel97/llubi/vp-merge
DeltaFile
+769-0mlir/unittests/IR/RemarkTest.cpp
+721-0llvm/test/CodeGen/NVPTX/mixed-precision-fma-f32x2-upconvert-invalid.ll
+657-0llvm/test/CodeGen/NVPTX/mixed-precision-fma-f32x2-upconvert.ll
+43-572llvm/tools/llvm-strings/llvm-strings.cpp
+474-0flang/test/Lower/OpenMP/declare-mapper-iterator.f90
+234-175mlir/test/lib/Dialect/Test/TestOps.td
+2,898-747810 files not shown
+20,714-4,553816 files

LLVM/project 39e45e1 — openmp/tools/Modules README.rst README.md

[openmp][docs] Rename opemp rst docs to md [1/2] (#234018)

Tracking issue:
[#201242](https://github.com/llvm/llvm-project/issues/201242)

See the [migration
guide](https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines)
for more information.

this is the first part of renaming the openmp readme from rst to md
the content conversion is provided by the next PR in this stack

renamed files:
- openmp/tools/Modules/README.rst
DeltaFile
+0-44openmp/tools/Modules/README.rst
+44-0openmp/tools/Modules/README.md
+44-442 files

LLVM/project 18b5ba9 — flang/lib/Optimizer/HLFIR/IR HLFIROps.cpp, flang/lib/Optimizer/HLFIR/Transforms BufferizeHLFIR.cpp

[flang] Fuse chained character concatenations into one buffer

Lowering creates one binary hlfir.concat per // operator, so a // b // c
was evaluated into an intermediate buffer that was then copied into the
result buffer. Add a canonicalization that folds a single-use hlfir.concat
into its user when no operation in between may modify or release its
operands, and bufferize hlfir.concat with any number of operands. The
buffer is now sized with the hlfir.concat length operand, which can be
computed outside of elemental loops, instead of the sum of the operand
lengths computed in the loop body.
DeltaFile
+57-60flang/test/HLFIR/concat-bufferization.fir
+59-0flang/lib/Optimizer/HLFIR/IR/HLFIROps.cpp
+51-0flang/test/HLFIR/character-expression-lifetimes.fir
+22-15flang/test/HLFIR/associate-codegen.fir
+23-14flang/lib/Optimizer/HLFIR/Transforms/BufferizeHLFIR.cpp
+10-10flang/test/Transforms/character-expression-storage.f90
+222-996 files not shown
+243-10512 files

LLVM/project eec5cec — flang/include/flang/Optimizer/Builder Character.h, flang/lib/Optimizer/Builder Character.cpp

[flang] Address review comments on chained concatenation fusion

Let concatenation fusion cross operations that only allocate, like the
hlfir.declare of a character literal operand, so that chains ending with a
literal are fused into one buffer. Only operations that may write or free
memory, or whose effects are unknown, now prevent the fusion.

Remove CharacterExprHelper::createConcatenate, which no longer has users.

Add bufferization tests for concatenations whose operands all have a
compile-time length, and for character kind 4.
DeltaFile
+68-0flang/test/HLFIR/concat-bufferization.fir
+27-0flang/test/HLFIR/character-expression-lifetimes.fir
+0-25flang/lib/Optimizer/Builder/Character.cpp
+4-2flang/lib/Optimizer/HLFIR/IR/HLFIROps.cpp
+0-4flang/include/flang/Optimizer/Builder/Character.h
+99-315 files

LLVM/project ed5c830 — llvm/lib/Passes PassBuilderPipelines.cpp, llvm/test/ThinLTO/X86 pass-pipeline.ll cfi-icall-pgo-icp.ll

[ThinLTO] Run LowerTypeTests after indirect call promotion (#241582)

In ThinLTO backends, `LowerTypeTestsPass` ran before
`SampleProfileLoaderPass`
and `PGOIndirectCallPromotion`, renaming each CFI jump-table member
`foo` to
`foo.cfi` and leaving a `foo` declaration for the jump-table entry:

* `SampleProfileLoader` canonicalizes `foo.cfi` to `foo`, colliding with
the
`foo` declaration in `SymbolMap` and skipping sample annotation and ICP.
* Running ICP first lets it promote calls to `foo` under its original
name;
`LowerTypeTestsPass` then keeps direct calls to `foo.cfi` and redirects
the
  promoted pointer comparison to `foo`.

Move `LowerTypeTestsPass` after ICP in
`buildModuleSimplificationPipeline`,

    [4 lines not shown]
DeltaFile
+23-11llvm/lib/Passes/PassBuilderPipelines.cpp
+12-10llvm/test/ThinLTO/X86/cfi-icall-samplepgo-icp.ll
+5-5llvm/test/ThinLTO/X86/cfi-icall-pgo-icp.ll
+2-2llvm/test/ThinLTO/X86/pass-pipeline.ll
+42-284 files

LLVM/project 90b8379 — llvm/include/llvm/Analysis ObjCARCInstKind.h ObjCARCUtil.h, llvm/lib/Analysis ObjCARCInstKind.cpp

[ObjCARC] Treat objc_claimAutoreleasedReturnValue as RetainRV (#241436)

In spite of the names, claimRV really has much more in common with
retainRV than with unsafeClaimRV. Semantically claimRV is just retainRV
without the marker nop.

Currently GetFunctionClass doesn't handle claimRV at all, and it
defaults to CallOrUser. In well-behaved pass pipelines this omission
shouldn't be observable, but in the face of unusual pass ordering we
could have e.g. a situation where inlining happens after contraction,
and then the inliner gets confused and sends the claimRV down the
unsafeClaimRV +0 path, resulting in an over-release.

As a hardening against such situations, this patch classifies claimRV as
kind RetainRV. The additional changes in InlineFunction.cpp are just NFC
clarifications. Some of its mentions of "claimRV" are a bit too loose
when they actually mean unsafeClaimRV specifically.

Assisted-by: claude

rdar://191370661
DeltaFile
+99-0llvm/test/Transforms/ObjCARC/claim-rv.ll
+32-0llvm/test/Transforms/Inline/inline-retainRV-call.ll
+12-12llvm/lib/Transforms/Utils/InlineFunction.cpp
+2-2llvm/include/llvm/Analysis/ObjCARCUtil.h
+4-0llvm/lib/Analysis/ObjCARCInstKind.cpp
+2-1llvm/include/llvm/Analysis/ObjCARCInstKind.h
+151-156 files

LLVM/project 1deca0d — libc/include/llvm-libc-macros/linux time-macros.h

[libc] Add CLOCK_TAI (#241692)

`CLOCK_TAI` is the kernel's clock for International Atomic Time, number
11. It was missing from the Linux time macros

AI disclosure: this patch was written with Claude Code. I reviewed the
change and built and ran the new test in a full build; it does not build
without the change

Assisted-by: Claude
DeltaFile
+1-0libc/include/llvm-libc-macros/linux/time-macros.h
+1-01 files