LLVM/project 61fd29eclang/include/clang/Analysis/Analyses/LifetimeSafety Facts.h, clang/lib/Analysis/LifetimeSafety Facts.cpp LoanPropagation.cpp

[clang][LifetimeSafety] Split live origins into persistent and block-local (#213543)

LoanPropagation already keeps origins that cross block boundaries apart
from those confined to one block, so that only the former take part in
joins. Do the same for LiveOrigins, and share the single prepass that
classifies them.

Block-local origins are not merely a minor share of the liveness state:
many expression origins are made live by a `UseFact` but never killed,
because several `OriginFlow` sites propagate only the outermost origin
of an expression's list (see the FIXMEs in `handleFunctionCall`), and a
`StringLiteral` glvalue origin is only ever a flow's source. Those
origins survived to the top of their block and then propagated backward
across the whole function. In `EmitARMMVEBuiltinExpr`, of 68644 origins
only 490 are persistent, and the liveness map at a block boundary peaked
at 11725 entries; it now peaks at 326.

`computePersistentOrigins` moves to `FactManager`, which computes it on
first use and hands the same bit vector to both analyses. Sharing it is

    [27 lines not shown]
DeltaFile
+93-52clang/lib/Analysis/LifetimeSafety/LiveOrigins.cpp
+41-39clang/lib/Analysis/LifetimeSafety/Checker.cpp
+4-64clang/lib/Analysis/LifetimeSafety/LoanPropagation.cpp
+57-0clang/lib/Analysis/LifetimeSafety/Facts.cpp
+25-0clang/include/clang/Analysis/Analyses/LifetimeSafety/Facts.h
+12-7clang/unittests/Analysis/LifetimeSafetyTest.cpp
+232-1623 files not shown
+256-1709 files

LLVM/project fc7ec52mlir/lib/Dialect/Linalg/Transforms TilingInterfaceImpl.cpp, mlir/test/Dialect/Linalg transform-op-fuse.mlir tile-semi-affine-maps.mlir

[mlir][linalg] Constrain tiling semi-affine maps (#212240)

Expands checks in Linalg's tiling implementation in presence of
semi-affine indexing maps to reject unsafe tiling configurations.

Current tiling can produce incorrect results when tiling occurs on a
dimension accessed via semi-affine map. This is due to lack of tile
offset tracking as shift in tiled slices cannot be represented today
using symbol-free indexing maps.

Assisted-by: Claude
DeltaFile
+541-0mlir/test/Dialect/Linalg/tile-semi-affine-maps.mlir
+121-0mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp
+58-1mlir/test/Dialect/Linalg/transform-op-fuse.mlir
+720-13 files

LLVM/project efa2303llvm/lib/Target/AMDGPU AMDGPULibCalls.cpp

[review] Sink second argument closer to where it is used
DeltaFile
+1-3llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
+1-31 files

LLVM/project 4e41485llvm/lib/Target/AMDGPU AMDGPULibCalls.cpp

[review] Move asserts and simplify return
DeltaFile
+10-6llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
+10-61 files

LLVM/project 7448e3emlir/lib/Dialect/Tosa/Transforms TosaFolders.cpp, mlir/test/Dialect/Tosa tosa-layerwise-constant-fold.mlir

[mlir][tosa] Support more float types in resource transpose folding (#213226)

Add support for f4, f8, f16, bf16, and f64 constants backed by
DenseResourceElementsAttr.
DeltaFile
+120-0mlir/test/Dialect/Tosa/tosa-layerwise-constant-fold.mlir
+40-4mlir/lib/Dialect/Tosa/Transforms/TosaFolders.cpp
+160-42 files

LLVM/project 91dfa26clang/include/clang/StaticAnalyzer/Checkers BoundsChecking.h, clang/lib/StaticAnalyzer/Checkers CMakeLists.txt BoundsChecking.cpp

[NFC][analyzer] Introduce the BoundsChecking library (#213957)

Building on my recent commit 25d51a8156da0845928e2fc09bb2736507fc5adf
this commit moves the general-purpose bounds checking logic from
ArrayBoundChecker.cpp to the new files BoundsChecking.{cpp,h}.

This new library currently only serves the needs of
`security.ArrayBound`, but it will be gradually expanded, generalized
and used to bring other bounds checking checkers out of alpha stage.

The code is moved without modifications, except for the removal of a
TODO note that asks for moving the code into a separate library.
DeltaFile
+1-294clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp
+229-0clang/lib/StaticAnalyzer/Checkers/BoundsChecking.cpp
+105-0clang/include/clang/StaticAnalyzer/Checkers/BoundsChecking.h
+1-0llvm/utils/gn/secondary/clang/lib/StaticAnalyzer/Checkers/BUILD.gn
+1-0clang/lib/StaticAnalyzer/Checkers/CMakeLists.txt
+337-2945 files

LLVM/project 269979bclang/lib/Sema SemaDecl.cpp, clang/test/Sema loadtime-comment-vars.c

nit: Minor updates to the comments
DeltaFile
+2-3clang/lib/Sema/SemaDecl.cpp
+1-2clang/test/Sema/loadtime-comment-vars.c
+3-52 files

LLVM/project 3bee38fclang/docs LanguageExtensions.md, clang/lib/Sema SemaDecl.cpp

[Clang][AIX] Preserve -mloadtime-comment-vars variables across serialization

Named internal-linkage variables were silently dropped when their
definition crossed a PCH or C++20 named-module (BMI-to-object) boundary:
DeclMustBeEmitted did not know the implicit attribute, so the PCH writer
never marked the unreferenced variable as required, and for named modules
only non-discardable variables are recorded in the module-initializer
lists that EmitModuleInitializers walks. Teach DeclMustBeEmitted about
the attribute (the CodeGen-side check becomes redundant and is removed)
and record validated internal-linkage module-purview variables in the
module-initializer list.

Since DeclMustBeEmitted now sees the attribute, a preserved variable no
longer triggers -Wunused-const-variable: it is materially used.

Add tests for C++20 module preservation, importer behavior, and
instantiation diagnostics; PCH preservation; unused-warning suppression;
the non-AIX cc1 no-op; and char8_t element-type exclusion. Document the
modules/PCH rules.
DeltaFile
+101-0clang/test/CodeGen/PowerPC/loadtime-comment-vars-modules.cpp
+28-0clang/test/PCH/loadtime-comment-vars.c
+21-2clang/test/Sema/loadtime-comment-vars.c
+8-5clang/docs/LanguageExtensions.md
+10-0clang/lib/Sema/SemaDecl.cpp
+5-1clang/test/CodeGen/PowerPC/loadtime-comment-vars.cpp
+173-82 files not shown
+180-108 files

LLVM/project 4395e6allvm/lib/Target/AMDGPU DSInstructions.td, llvm/test/CodeGen/AMDGPU ds-atomic-barrier-convergent.ll

[AMDGPU] Add `isConvergent=1` to `DS_ATOMIC_*_BARRIER` instructions (#214166)

The intrinsic already has it. The instructions may issue a wake-up
signal on barrier completion so the set of waves that execute the
instruction
may not change.

The test case shows taildup duplicating the MachineInstrs when
`isConvergent=0`.

Assisted-By: Claude Opus 4.8
Claude found the reproducer for me after I found the lack of
`isConvergent=1` on those
instructions.
DeltaFile
+12-26llvm/test/CodeGen/AMDGPU/ds-atomic-barrier-convergent.ll
+16-12llvm/lib/Target/AMDGPU/DSInstructions.td
+28-382 files

LLVM/project 17fe2ecutils/bazel/llvm-project-overlay/libc BUILD.bazel, utils/bazel/llvm-project-overlay/libc/test/src/stdlib BUILD.bazel

[bazel][libc] Add targets for realpath
DeltaFile
+142-12utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+28-0utils/bazel/llvm-project-overlay/libc/test/src/stdlib/BUILD.bazel
+170-122 files

LLVM/project 0b8087clibc/config/linux/aarch64 entrypoints.txt, libc/config/linux/riscv entrypoints.txt

[libc] Add realpath to linux entrypoints
DeltaFile
+1-4libc/config/linux/x86_64/entrypoints.txt
+1-4libc/config/linux/riscv/entrypoints.txt
+1-0libc/config/linux/aarch64/entrypoints.txt
+3-83 files

LLVM/project 4db3dc2lldb/docs/resources build.md, lldb/packages/Python/lldbsuite/test/builders builder.py

[lldb][test] Improve error for C++ compiler detection and improve docs (#214199)

I did not realise that LLDB_TEST_COMPILER should be the C compiler, so I
got:
    cxx = cc_dir / (cc_prefix + cxx_type + cc_ext)
TypeError: can only concatenate str (not "NoneType") to str
Config=aarch64-/usr/bin/g++

I have simplified the logic and added a more informative error: 
RuntimeError: Could not infer C++ compiler name from compiler type "g++"

Added a note to the documentation.

The CMake description does say "C compiler", but it's easy to gloss over
that so I extended that to say how we get the C++ compiler.
DeltaFile
+11-3lldb/packages/Python/lldbsuite/test/builders/builder.py
+6-0lldb/docs/resources/build.md
+1-1lldb/test/API/CMakeLists.txt
+18-43 files

LLVM/project 3500322clang-tools-extra/docs/clang-tidy/checks/bugprone unused-return-value.md unhandled-self-assignment.md

[clang-tidy][docs] Rewrite bugprone check docs to Markdown [4/4]
DeltaFile
+213-211clang-tools-extra/docs/clang-tidy/checks/bugprone/tagged-union-member-count.md
+196-219clang-tools-extra/docs/clang-tidy/checks/bugprone/unchecked-optional-access.md
+155-165clang-tools-extra/docs/clang-tidy/checks/bugprone/use-after-move.md
+152-153clang-tools-extra/docs/clang-tidy/checks/bugprone/unsafe-functions.md
+82-83clang-tools-extra/docs/clang-tidy/checks/bugprone/unhandled-self-assignment.md
+55-56clang-tools-extra/docs/clang-tidy/checks/bugprone/unused-return-value.md
+853-88716 files not shown
+1,330-1,37222 files

LLVM/project 4e67825libc/test/include CMakeLists.txt, libc/test/src/string/memory_utils CMakeLists.txt

[libc] (Re)skip tests failing after #213860 (#214425)

(At least) two tests enabled by #213860 are failing on the amdgpu bot
(which only runs hermetic tests). This patch skips them, but it a
different way, so that they keep running in hermetic mode on supported
targets.

For the sched_test, I add a dependency on the sched_getscheduler target
(used in the test) to trigger the auto-skipping logic.

The memory utils test fails due to a missing cmp_is_expensive
specialization, so I enable the test only on targets which have them
(listing targets explicitly).
DeltaFile
+25-20libc/test/src/string/memory_utils/CMakeLists.txt
+1-0libc/test/include/CMakeLists.txt
+26-202 files

LLVM/project a597d14clang-tools-extra/docs/clang-tidy/checks/bugprone use-after-move.rst use-after-move.md

[clang-tidy][docs] Rename bugprone check docs to Markdown [4/4]
DeltaFile
+0-349clang-tools-extra/docs/clang-tidy/checks/bugprone/unchecked-optional-access.rst
+349-0clang-tools-extra/docs/clang-tidy/checks/bugprone/unchecked-optional-access.md
+0-303clang-tools-extra/docs/clang-tidy/checks/bugprone/tagged-union-member-count.rst
+303-0clang-tools-extra/docs/clang-tidy/checks/bugprone/tagged-union-member-count.md
+0-281clang-tools-extra/docs/clang-tidy/checks/bugprone/use-after-move.rst
+281-0clang-tools-extra/docs/clang-tidy/checks/bugprone/use-after-move.md
+933-93338 files not shown
+2,172-2,17244 files

LLVM/project 78c9e64clang/include/clang/Parse Parser.h, clang/lib/Parse Parser.cpp

Revert "[Modules] Handle decl attributes on deserialization the same as during parsing. (#208348)" (#214407)

This reverts commit 3ce0df7ca8027229618de9802eeffe1f0023bf74. See
https://github.com/llvm/llvm-project/issues/214091 for backgrounds.
DeltaFile
+0-79clang/test/Modules/decl-attr-merge-explicit-modules.c
+37-18clang/lib/Serialization/ASTReaderDecl.cpp
+0-54clang/test/Modules/decl-attr-merge2.c
+4-6clang/include/clang/Parse/Parser.h
+3-2clang/lib/Parse/Parser.cpp
+0-4clang/lib/Sema/Sema.cpp
+44-1636 files not shown
+49-16912 files

LLVM/project f2c0945clang-tools-extra/docs/clang-tidy/checks/bugprone stringview-nullptr.md suspicious-enum-usage.md

[clang-tidy][docs] Rewrite bugprone check docs to Markdown [3/4]
DeltaFile
+206-222clang-tools-extra/docs/clang-tidy/checks/bugprone/sizeof-expression.md
+77-78clang-tools-extra/docs/clang-tidy/checks/bugprone/signed-char-misuse.md
+76-77clang-tools-extra/docs/clang-tidy/checks/bugprone/redundant-branch-condition.md
+58-62clang-tools-extra/docs/clang-tidy/checks/bugprone/signal-handler.md
+50-50clang-tools-extra/docs/clang-tidy/checks/bugprone/suspicious-enum-usage.md
+40-39clang-tools-extra/docs/clang-tidy/checks/bugprone/stringview-nullptr.md
+507-52814 files not shown
+865-91020 files

LLVM/project 8b823f8clang-tools-extra/docs/clang-tidy/checks/bugprone redundant-branch-condition.rst redundant-branch-condition.md

[clang-tidy][docs] Rename bugprone check docs to Markdown [3/4]
DeltaFile
+0-328clang-tools-extra/docs/clang-tidy/checks/bugprone/sizeof-expression.rst
+328-0clang-tools-extra/docs/clang-tidy/checks/bugprone/sizeof-expression.md
+0-125clang-tools-extra/docs/clang-tidy/checks/bugprone/signed-char-misuse.rst
+125-0clang-tools-extra/docs/clang-tidy/checks/bugprone/signed-char-misuse.md
+0-107clang-tools-extra/docs/clang-tidy/checks/bugprone/redundant-branch-condition.rst
+107-0clang-tools-extra/docs/clang-tidy/checks/bugprone/redundant-branch-condition.md
+560-56034 files not shown
+1,449-1,44940 files

LLVM/project 2f4043ecompiler-rt/test/profile instrprof-coroutine-profile.cpp

[compiler-rt][pgo] Add profile instrumentation test for coroutines (#213801)

This PR adds a compiler-rt test (`instrprof-coroutine-profile.cpp`) to
verify PGO profile counter generation and ingestion for C++20
coroutines.

During investigating the iFDO profile ingested for coroutine pass, we
found that the profile data contains entry counts for the original
coroutine function (`foo`), but lacks the entry counters for the split
`foo.resume` function.

After inspecting
[PassBuilderPipelines.cpp](https://github.com/llvm/llvm-project/blob/f7b7ec8d5542dcede1ae607aa74dfe36d7a3c530/llvm/lib/Passes/PassBuilderPipelines.cpp#L1273)
confirms that `PGOInstrumentationGen` runs before `CoroSplitPass`.
Therefore,
- 1) the iFDO profile correctly ingests and associates profile counters
with coroutine function `foo`.
- 2) Separate function entry counters for `foo.resume` are not expected
in the iFDO profile.

    [16 lines not shown]
DeltaFile
+46-0compiler-rt/test/profile/instrprof-coroutine-profile.cpp
+46-01 files

LLVM/project 5bba307clang-tools-extra/docs/clang-tidy/checks/bugprone optional-value-conversion.md invalid-enum-default-initialization.md

[clang-tidy][docs] Rewrite bugprone check docs to Markdown [2/4]
DeltaFile
+85-86clang-tools-extra/docs/clang-tidy/checks/bugprone/narrowing-conversions.md
+66-75clang-tools-extra/docs/clang-tidy/checks/bugprone/not-null-terminated-result.md
+67-69clang-tools-extra/docs/clang-tidy/checks/bugprone/missing-end-comparison.md
+67-67clang-tools-extra/docs/clang-tidy/checks/bugprone/multiple-new-in-one-expression.md
+53-55clang-tools-extra/docs/clang-tidy/checks/bugprone/invalid-enum-default-initialization.md
+45-46clang-tools-extra/docs/clang-tidy/checks/bugprone/optional-value-conversion.md
+383-39814 files not shown
+783-81120 files

LLVM/project df56b80clang-tools-extra/docs/clang-tidy/checks/bugprone multiple-new-in-one-expression.rst multiple-new-in-one-expression.md

[clang-tidy][docs] Rename bugprone check docs to Markdown [2/4]
DeltaFile
+0-134clang-tools-extra/docs/clang-tidy/checks/bugprone/not-null-terminated-result.rst
+134-0clang-tools-extra/docs/clang-tidy/checks/bugprone/not-null-terminated-result.md
+0-127clang-tools-extra/docs/clang-tidy/checks/bugprone/narrowing-conversions.rst
+127-0clang-tools-extra/docs/clang-tidy/checks/bugprone/narrowing-conversions.md
+0-99clang-tools-extra/docs/clang-tidy/checks/bugprone/multiple-new-in-one-expression.rst
+99-0clang-tools-extra/docs/clang-tidy/checks/bugprone/multiple-new-in-one-expression.md
+360-36034 files not shown
+1,314-1,31440 files

LLVM/project 08936cdllvm/lib/CodeGen/GlobalISel LegalizerHelper.cpp, llvm/lib/Target/AArch64/GISel AArch64LegalizerInfo.cpp

[AArch64][GlobalISel] Add legalisation to G_EXRACT_SUBVECTOR (#207956)

Prevent legalisation of this opcode falling back to SDAG.

In situations where a G_EXTRACT_SUBVECTOR is being performed on two
vectors which aren't double/half the size of each other, represent the
extract as build_vector(extract_vector_element, extract_vector_element,
...).
DeltaFile
+391-0llvm/test/CodeGen/AArch64/GlobalISel/extract-subvector.ll
+60-4llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+27-14llvm/test/CodeGen/AArch64/extract-vector-elt.ll
+22-14llvm/test/CodeGen/AArch64/complex-deinterleaving-f16-add.ll
+7-0llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
+2-2llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
+509-341 files not shown
+509-377 files

LLVM/project 8877db4libc/src/__support/OSUtil/linux/syscall_wrappers nanosleep.h, libc/src/time/linux nanosleep.cpp

[libc] Implement sleep and usleep for Linux (#213912)

Implemented the sleep and usleep entrypoints for Linux. Refactored the
syscall implementation out of the public nanosleep entrypoint into a
standard internal syscall wrapper.

Fixes #214293.

Co-authored-by: Jeff Bailey <jbailey at raspberryginger.com>
DeltaFile
+51-0libc/src/__support/OSUtil/linux/syscall_wrappers/nanosleep.h
+43-0libc/test/src/unistd/usleep_test.cpp
+40-0libc/test/src/unistd/sleep_test.cpp
+36-0libc/src/unistd/linux/sleep.cpp
+35-0libc/src/unistd/linux/usleep.cpp
+11-23libc/src/time/linux/nanosleep.cpp
+216-2315 files not shown
+413-3121 files

LLVM/project c6cbcaeclang/docs LanguageExtensions.md, clang/lib/Sema SemaDecl.cpp

[Clang][AIX] Preserve -mloadtime-comment-vars variables across serialization

Named internal-linkage variables were silently dropped when their
definition crossed a PCH or C++20 named-module (BMI-to-object) boundary:
DeclMustBeEmitted did not know the implicit attribute, so the PCH writer
never marked the unreferenced variable as required, and for named modules
only non-discardable variables are recorded in the module-initializer
lists that EmitModuleInitializers walks. Teach DeclMustBeEmitted about
the attribute (the CodeGen-side check becomes redundant and is removed)
and record validated internal-linkage module-purview variables in the
module-initializer list.

Since DeclMustBeEmitted now sees the attribute, a preserved variable no
longer triggers -Wunused-const-variable: it is materially used.

Add tests for C++20 module preservation, importer behavior, and
instantiation diagnostics; PCH preservation; unused-warning suppression;
the non-AIX cc1 no-op; and char8_t element-type exclusion. Document the
modules/PCH rules.
DeltaFile
+101-0clang/test/CodeGen/PowerPC/loadtime-comment-vars-modules.cpp
+28-0clang/test/PCH/loadtime-comment-vars.c
+21-2clang/test/Sema/loadtime-comment-vars.c
+14-5clang/docs/LanguageExtensions.md
+10-0clang/lib/Sema/SemaDecl.cpp
+5-1clang/test/CodeGen/PowerPC/loadtime-comment-vars.cpp
+179-82 files not shown
+186-108 files

LLVM/project 3899fa2clang-tools-extra/docs/clang-tidy/checks/bugprone chained-comparison.md exception-escape.md

[clang-tidy][docs] Rewrite bugprone check docs to Markdown [1/4]
DeltaFile
+180-182clang-tools-extra/docs/clang-tidy/checks/bugprone/easily-swappable-parameters.md
+165-166clang-tools-extra/docs/clang-tidy/checks/bugprone/argument-comment.md
+74-78clang-tools-extra/docs/clang-tidy/checks/bugprone/empty-catch.md
+72-74clang-tools-extra/docs/clang-tidy/checks/bugprone/branch-clone.md
+65-66clang-tools-extra/docs/clang-tidy/checks/bugprone/exception-escape.md
+47-51clang-tools-extra/docs/clang-tidy/checks/bugprone/chained-comparison.md
+603-61714 files not shown
+1,014-1,04720 files

LLVM/project 14f7a78clang-tools-extra/docs/clang-tidy/checks/bugprone empty-catch.rst empty-catch.md

[clang-tidy][docs] Rename bugprone check docs to Markdown [1/4]
DeltaFile
+0-276clang-tools-extra/docs/clang-tidy/checks/bugprone/easily-swappable-parameters.rst
+276-0clang-tools-extra/docs/clang-tidy/checks/bugprone/easily-swappable-parameters.md
+0-275clang-tools-extra/docs/clang-tidy/checks/bugprone/argument-comment.rst
+275-0clang-tools-extra/docs/clang-tidy/checks/bugprone/argument-comment.md
+0-149clang-tools-extra/docs/clang-tidy/checks/bugprone/empty-catch.rst
+149-0clang-tools-extra/docs/clang-tidy/checks/bugprone/empty-catch.md
+700-70034 files not shown
+1,741-1,74140 files

LLVM/project 073f509libc/cmake/modules LLVMLibCTestRules.cmake, libc/test/include CMakeLists.txt

[libc] Enable UNIT_TEST_ONLY tests in hermetic mode (#213860)

This mainly consists of removing the UNIT_TEST_ONLY lines as previous
patches made sure the tests work. The only slightly nontrivial part is
adding support for C_TEST to the hermetic test macro.

After this, the only UNIT_TEST_ONLY tests are those that require the
MPFR library.
DeltaFile
+0-13libc/test/include/CMakeLists.txt
+7-6libc/cmake/modules/LLVMLibCTestRules.cmake
+0-12libc/test/src/math/smoke/CMakeLists.txt
+0-2libc/test/src/stdio/CMakeLists.txt
+0-2libc/test/src/libgen/CMakeLists.txt
+0-2libc/test/src/fenv/CMakeLists.txt
+7-376 files not shown
+8-4312 files

LLVM/project ed5f9f9llvm/lib/Transforms/Scalar TailRecursionElimination.cpp, llvm/test/Transforms/TailCallElim shl-accumulator-opt.ll

[TailRecElim] Introduce support for shift accumulator optimization (#181331)

This PR enables Tail Recursion Elimination (TRE) for functions where the
accumulator operation is a shift (`shl`, `lshr`, `ashr`) by a constant
amount -- i.e., pseudo-associative relation.

As pointed out in #178805, `InstCombine` often strength-reduces
multiplications (or `f(x-1) + f(x-1)`) into `shl`.
Currently, TRE strictly requires operations to be associative and
commutative:

https://github.com/llvm/llvm-project/blob/05e908609227e1e8d993659e604a63668dfd2825/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp#L377-L379
This prevents TRE from transforming recursive shifts into loops,
creating a phase-ordering problem where canonicalization blocks a
structural optimization.

This PR does **not** perform shift accumulator optimization when there
are multiple base cases: it is reserved for future work.

Fixes #178805.
DeltaFile
+156-37llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
+188-0llvm/test/Transforms/TailCallElim/shl-accumulator-opt.ll
+344-372 files

LLVM/project ec966ccllvm/lib/Target/AMDGPU SILowerSGPRSpills.cpp SIInstrInfo.h, llvm/test/CodeGen/AMDGPU llvm.amdgcn.perm.pk.ll vperm-pk16-exec-hazard.ll

[AMDGPU] Insert exec-forced V_NOP after V_PERM_PK16 (gfx1250 hazard)

On gfx1250 the V_PERM_PK16 family (V_PERM_PK16_B4/B6/B8_U4) has a hazard:
the instruction must be immediately followed by a "safe" instruction that
issues on the pipe which clears the hazard. Insert V_NOP with forced
non-zero EXEC as needed.

Assisted-by: Opus 4.8 Medium
DeltaFile
+348-0llvm/test/CodeGen/AMDGPU/vperm-pk16-exec-hazard.mir
+80-0llvm/test/CodeGen/AMDGPU/vperm-pk16-exec-hazard.ll
+59-0llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+46-0llvm/lib/Target/AMDGPU/SIInstrInfo.h
+22-3llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
+16-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.perm.pk.ll
+571-33 files not shown
+589-49 files

LLVM/project 6250bdfllvm/lib/Target/AMDGPU SILowerSGPRSpills.cpp SIInstrInfo.h, llvm/test/CodeGen/AMDGPU llvm.amdgcn.perm.pk.ll vperm-pk16-exec-hazard.ll

[AMDGPU] Insert exec-forced V_NOP after V_PERM_PK16 (gfx1250 hazard)

On gfx1250 the V_PERM_PK16 family (V_PERM_PK16_B4/B6/B8_U4) has a hazard:
the instruction must be immediately followed by a "safe" instruction that
issues on the pipe which clears the hazard. Insert V_NOP with forced
non-zero EXEC as needed.

Assisted-by: Opus 4.8 Medium
DeltaFile
+348-0llvm/test/CodeGen/AMDGPU/vperm-pk16-exec-hazard.mir
+80-0llvm/test/CodeGen/AMDGPU/vperm-pk16-exec-hazard.ll
+59-0llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+49-0llvm/lib/Target/AMDGPU/SIInstrInfo.h
+22-3llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
+16-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.perm.pk.ll
+574-33 files not shown
+591-49 files