LLVM/project f13b065 — flang-rt CMakeLists.txt

[flang-rt] Add headers as a dependency to the runtime (#228210)

Summary:
The flang-rt runtime implicitly depends on the flang compiler's header
gen. We need to depend on the target for the component.
DeltaFile
+4-1flang-rt/CMakeLists.txt
+4-11 files

LLVM/project 12a24de — polymorphism-benchmark MLIR.cpp CMakeCache.txt, polymorphism-benchmark/CMakeFiles CMakeConfigureLog.yaml

Stray space change noise Leftover dead code

Stray space change noise Leftover dead code
flangast experiments
clang-format

Stray space change noise

Leftover dead code

clang-format

Post-merge fixes

clang-format
DeltaFile
+1,825-0polymorphism-benchmark/CMakeFiles/CMakeConfigureLog.yaml
+925-0polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
+710-0polymorphism-benchmark/third-party/benchmark/src/Makefile
+663-0polymorphism-benchmark/build.ninja
+579-0polymorphism-benchmark/CMakeCache.txt
+575-0polymorphism-benchmark/MLIR.cpp
+5,277-096 files not shown
+8,393-1102 files

LLVM/project b0272bf — clang/test/CodeGen/RISCV rvp-intrinsics.c, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.960bit.ll amdgcn.bitcast.896bit.ll

Merge commit '260501496087e7d26ced9e8818907d4c8e69eed3' into HEAD
DeltaFile
+63,051-63,130llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+13,661-14,035llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+5,069-7,865clang/test/CodeGen/RISCV/rvp-intrinsics.c
+6,191-6,307llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+6,114-6,316llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+6,074-6,312llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+100,160-103,96510,951 files not shown
+660,525-421,06010,957 files

LLVM/project 2605014 — flang/include/flang/Common idioms.h uint128.h, flang/lib/Evaluate character-value-impl.h

Stray space change noise Leftover dead code
DeltaFile
+0-65flang/include/flang/Common/uint128.h
+0-22flang/lib/Evaluate/character-value-impl.h
+0-1flang/include/flang/Common/idioms.h
+0-883 files

LLVM/project b84f4c7 — clang/test/CodeGen/RISCV rvp-intrinsics.c, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.960bit.ll amdgcn.bitcast.896bit.ll

Merge commit '16bd62a88d1b1d4d8cf23df820018197cf75101f' into HEAD
DeltaFile
+63,051-63,130llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+13,661-14,035llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+5,069-7,865clang/test/CodeGen/RISCV/rvp-intrinsics.c
+6,191-6,307llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+6,114-6,316llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+6,074-6,312llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+100,160-103,96510,949 files not shown
+660,585-421,03210,955 files

LLVM/project a7e898c — offload/test/offloading xteam_reduction_no_parallel.c, openmp/device/src Reduction.cpp

[OpenMP][offload] Fix single-thread SPMD cross-team reductions

If a kernel gets SPMDized by OpenMPOpt but does not have a parallel
region, it actually is only executed by a single thread.
forceSingleThreadPerWorkgroupHelper() is responsible for that and had
been introduced by https://reviews.llvm.org/D133120. The cross-team
reduction trusted that SPMD mode means that we're dealing with all
threads. Now, it checks explicitly.

Claude assisted with this patch.
DeltaFile
+46-0offload/test/offloading/xteam_reduction_no_parallel.c
+18-6openmp/device/src/Reduction.cpp
+64-62 files

LLVM/project 8eebbb3 — clang/test/Modules bounds-safety-attributed-type-late-parsed.c, clang/test/PCH bounds-safety-attributed-type-late-parsed.c

[BoundsSafety][test] Add late-parsed counted_by type-attribute coverage

New tests exercising the late-parse fill-in mechanism:
  - Sema/attr-counted-by-weird-type-positions{,-late-parsed}.c: counted_by
    in assorted type positions, nested pointers, and rejection cases.
  - Sema/attr-bounds-safety-function-ptr-param.c: attributes on
    function-pointer-typed members.
  - Modules/ and PCH/ bounds-safety-attributed-type-late-parsed: the
    resolved type round-trips through serialization.

  - Sema/attr-counted-by-late-parsed-regressions.c: guards against the
    double-free on a nested-record decl-spec attribute and the null-count
    escape on a free-function parameter.
DeltaFile
+456-0clang/test/Sema/attr-counted-by-weird-type-positions-late-parsed.c
+454-0clang/test/Sema/attr-counted-by-weird-type-positions.c
+173-0clang/test/Sema/attr-bounds-safety-function-ptr-param.c
+111-0clang/test/Modules/bounds-safety-attributed-type-late-parsed.c
+104-0clang/test/Sema/attr-counted-by-late-parsed-regressions.c
+69-0clang/test/PCH/bounds-safety-attributed-type-late-parsed.c
+1,367-04 files not shown
+1,517-010 files

LLVM/project a9352e0 — clang/lib/Parse ParseDecl.cpp, clang/lib/Sema SemaType.cpp

[BoundsSafety] Create incomplete counted_by types and wire up the refill

Activate late parsing for the counted_by family (counted_by / sized_by and
their _or_null variants) in type-attribute position, under
-fexperimental-late-parse-attributes, on top of the type-attribute handling,
the validation helper and the refill machinery added in the previous commits.

When such an attribute is seen during type construction and its argument
can't be resolved yet, build the CountAttributedType immediately with
getIncompleteCountAttributedType and record it against the enclosing record;
its count expression is filled in at the closing brace via the refill logic.
Because enclosing types refer to the node by pointer, completing it in place
leaves the type chain untouched -- no rebuild, no TypeLoc re-emission.

  - Sema::ActOnLateParsedTypeAttr builds the incomplete node; the parser
    callback stores it on the LateParsedTypeAttribute and records the
    attribute in the record currently being parsed.
    Parser::CompleteLateParsedTypeAttributes drains that list at the closing
    brace; a nested anonymous record hands its pending attributes up to the

    [9 lines not shown]
DeltaFile
+178-25clang/lib/Parse/ParseDecl.cpp
+29-50clang/test/Sema/attr-counted-by-late-parsed-struct-ptrs.c
+65-0clang/lib/Sema/SemaType.cpp
+14-50clang/test/Sema/attr-counted-by-or-null-late-parsed-struct-ptrs.c
+11-42clang/test/Sema/attr-sized-by-or-null-late-parsed-struct-ptrs.c
+10-42clang/test/Sema/attr-sized-by-late-parsed-struct-ptrs.c
+307-20914 files not shown
+407-38520 files

LLVM/project 6dcaa02 — clang/lib/Sema SemaDecl.cpp SemaDeclAttr.cpp

[BoundsSafety] Handle the counted_by family as a type attribute

counted_by / sized_by (and their _or_null variants) were handled in only one
way: a declaration-position attribute went through handleCountedByAttrField,
which validated it and then patched the field afterwards with
FieldDecl::setType. There was no type-position handling at all.

Build the type during type construction instead, from a single handler that
serves both positions:

  - Add HandleCountedByAttrOnType and dispatch the counted_by family to it
    from processTypeAttrs, going through the shared
    validateBoundsAttrTypeForTypePosition leaf.
  - Remove handleCountedByAttrField. Its FieldDecl-based type-shape checks in
    Sema::CheckCountedByAttrOnField are superseded by
    Sema::ValidateBoundsAttrTypeShape, added in the previous commit and now
    reached from the type path, and are deleted; no diagnostic is dropped. The
    checks that genuinely need the FieldDecl (union member, non-flexible
    array, cross-struct count) stay in CheckCountedByAttrOnField and run from

    [11 lines not shown]
DeltaFile
+3-109clang/lib/Sema/SemaBoundsSafety.cpp
+69-1clang/lib/Sema/SemaType.cpp
+0-44clang/lib/Sema/SemaDeclAttr.cpp
+22-1clang/lib/Sema/SemaDecl.cpp
+94-1554 files

LLVM/project 09d4a1a — clang/include/clang/Parse Parser.h, clang/include/clang/Sema DeclSpec.h

[BoundsSafety][NFC] Thread a late-parsed attribute list through declarators

A late-parsed type attribute is written in the middle of a declarator, so the
list it lands in has to travel with the declarator pieces until the enclosing
record can supply its argument. Add that storage and plumbing, with nothing
producing or consuming it yet:

  - Move CachedTokens and LateParsedAttrList earlier in DeclSpec.h so DeclSpec,
    Declarator and DeclaratorChunk can hold one.
  - Give DeclSpec, Declarator and DeclaratorChunk a LateParsedAttrList, and let
    Declarator::AddTypeInfo carry one onto the chunk it appends.
  - Give ParseSpecifierQualifierList and ParseTypeQualifierListOpt an optional
    LateParsedAttrList parameter, passed down to ParseDeclarationSpecifiers.

No functional change: the lists stay empty and no caller passes one. The next
commit populates them.
DeltaFile
+54-33clang/include/clang/Sema/DeclSpec.h
+14-9clang/include/clang/Parse/Parser.h
+12-3clang/lib/Parse/ParseDecl.cpp
+80-453 files

LLVM/project 62ab49d — clang/include/clang/Parse Parser.h, clang/include/clang/Sema Sema.h

[BoundsSafety][NFC] Add the Sema/Parser bridge for late-parsed type attributes

A late-parsed bounds attribute has to build its type when the attribute is
seen, but its argument isn't parseable until the enclosing record is complete.
Building that type needs the Parser (which owns the cached tokens) and Sema
(which owns type construction) to meet:

  - Sema::ActOnLateParsedTypeAttr validates a counted_by-family attribute for
    the type position and, if valid, wraps the type in a CountAttributedType
    whose count is not yet known, handing the node back for completion.

  - Parser::ProcessLateParsedTypeAttrCallback is the Parser-side entry point,
    registered on Sema so Sema can call back without including Parser.h (the
    same pattern as LateTemplateParserCallback). It reuses an already-built
    node so several declarators sharing one attribute share one type.

No functional change: nothing records late-parsed type attributes yet, so the
callback is never invoked. The next commit wires it up.
DeltaFile
+32-0clang/lib/Parse/ParseDecl.cpp
+21-0clang/lib/Sema/SemaType.cpp
+21-0clang/include/clang/Sema/Sema.h
+14-0clang/include/clang/Parse/Parser.h
+5-0clang/lib/Parse/Parser.cpp
+93-05 files

LLVM/project f300200 — offload/include device.h, offload/libompaccsupport device.cpp

[offload][omp] Move strict threads & groups computation to libomptarget
DeltaFile
+180-3offload/libompaccsupport/device.cpp
+0-147offload/plugins-nextgen/common/src/PluginInterface.cpp
+9-63offload/plugins-nextgen/common/include/PluginInterface.h
+40-1offload/include/device.h
+9-9offload/test/offloading/ompx_bare_gridsize.c
+1-1offload/test/offloading/ompx_bare_multi_dim.cpp
+239-2242 files not shown
+240-2278 files

LLVM/project 69d8305 — offload/test/offloading/fortran usm_derived_type_allocatable_member.f90 target-parallel-do-collapse.f90

update fortran tests
DeltaFile
+6-6offload/test/offloading/fortran/target-no-loop.f90
+2-2offload/test/offloading/fortran/do-concurrent-to-omp-nested-derived-type.f90
+1-1offload/test/offloading/fortran/usm_derived_type_allocatable_member.f90
+1-1offload/test/offloading/fortran/target-parallel-do-collapse.f90
+1-1offload/test/offloading/fortran/target-custom-reduction-derivedtype.f90
+1-1offload/test/offloading/fortran/implicit-record-field-mapping.f90
+12-128 files not shown
+20-2014 files

LLVM/project f294f17 — offload/include device.h, offload/libompaccsupport PluginManager.cpp

[offload][omp] Move reading _kernel_environment to libomptarget (#222606)

The xxxx__kernel_environment are only generated for OpenMP kernels. Move
reading them to libomptarget. We still pass the information needed for
launching kernels to the plugins.

Assisted by Claude.
DeltaFile
+57-64offload/plugins-nextgen/common/include/PluginInterface.h
+26-47offload/plugins-nextgen/common/src/PluginInterface.cpp
+62-1offload/libompaccsupport/PluginManager.cpp
+19-0offload/include/device.h
+9-2offload/plugins-nextgen/cuda/src/rtl.cpp
+0-6offload/plugins-nextgen/host/src/rtl.cpp
+173-1202 files not shown
+175-1218 files

LLVM/project a8ba28f — llvm/include/llvm/MC MCSubtargetInfo.h

drop useless comment
DeltaFile
+0-2llvm/include/llvm/MC/MCSubtargetInfo.h
+0-21 files

LLVM/project ceca7fd — .github CODEOWNERS

Add Vassil's responsibilities to the CODEOWNERS file. (#228167)

I'd like to get more reliable github-based routing when pull requests
arrive in the areas I am maintaining.

For reference, see clang/Maintainers.md
DeltaFile
+7-0.github/CODEOWNERS
+7-01 files

LLVM/project 7320cc1 — llvm/lib/CodeGen TargetLoweringObjectFileImpl.cpp, llvm/test/CodeGen/SystemZ zos-landingpad.ll zos-eh.ll

[SystemZ][z/OS] Fix GOFF exception table (LSDA) section generation (#228097)

Fixes #226804

The z/OS Binder rejects LSDA exception tables with `IEW2353E ... ERROR
CODE IS 25000E` when emitted as renamable PRs under an initial-load
`C_WSA64` ED parented to the root code section.

Following the fix suggested by @mms-it-ch in #226804, emit the LSDA
similarly to static WSA data:
- Under its own Section Definition (`SD`) named `GCC_except.<func>` with
`ESD_BSC_Section`.
- With a `C_WSA64` Element Definition (`ED`) using deferred load
(`GOFF::ESD_LB_Deferred`) and doubleword alignment.
- As a non-renamable Part Reference (`PR`).

Co-authored-by: Yusra Syeda <yusra.syeda at ibm.com>
DeltaFile
+8-5llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+4-5llvm/test/CodeGen/SystemZ/zos-landingpad.ll
+5-4llvm/test/CodeGen/SystemZ/zos-eh.ll
+17-143 files

LLVM/project 6c538e7 — llvm/include/llvm/MC MCContext.h MCSubtargetInfo.h, llvm/lib/MC MCContext.cpp

add a clone() function instead and drop the bumpptrallocator
DeltaFile
+3-6llvm/utils/TableGen/SubtargetEmitter.cpp
+5-4llvm/include/llvm/MC/MCSubtargetInfo.h
+2-4llvm/test/TableGen/HwModeBitSet.td
+2-2llvm/lib/MC/MCContext.cpp
+3-1llvm/include/llvm/MC/MCContext.h
+15-175 files

LLVM/project 1e1f35b — compiler-rt/lib/fuzzer FuzzerDriver.cpp FuzzerFlags.def

[libFuzzer] Fix typos and punctuation in flag descriptions (#122619)

Co-authored-by: Stan Ulbrych <stan at python.org>
DeltaFile
+36-36compiler-rt/lib/fuzzer/FuzzerFlags.def
+1-1compiler-rt/lib/fuzzer/FuzzerDriver.cpp
+37-372 files

LLVM/project b7cf639 — llvm/include/llvm/IR IntrinsicsAMDGPU.td, llvm/lib/Target/AMDGPU VOP3Instructions.td AMDGPULowerIntrinsics.cpp

[AMDGPU] Validate scale_sel in v_cvt_scale_*

These instructions can be block16 or block32 depending on the target
and scale_sel bits. Block16 is not supported in strict mode.

Re-enable the rest of the instructions in the strict mode but validate
the scale selector.
DeltaFile
+268-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.scale.pk-scale-range.ll
+135-16llvm/test/MC/AMDGPU/gfx1250-strict_err.s
+61-0llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
+47-0llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+7-9llvm/lib/Target/AMDGPU/VOP3Instructions.td
+6-8llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+524-333 files not shown
+533-489 files

LLVM/project f3eb046 — clang/include/clang/Basic BuiltinsAMDGPU.td, clang/test/SemaOpenCL builtins-amdgcn-error-gfx1250-strict.cl

[AMDGPU] v_cvt_scale_pk8_* are block32 in strict mode (#227426)

Re-enable these instructions in strict mode.

Fixes: LCOMPILER-2841
DeltaFile
+15-14llvm/lib/Target/AMDGPU/VOP3Instructions.td
+0-27llvm/test/MC/AMDGPU/gfx1250-strict_err.s
+10-9llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+9-9clang/include/clang/Basic/BuiltinsAMDGPU.td
+0-9clang/test/SemaOpenCL/builtins-amdgcn-error-gfx1250-strict.cl
+34-685 files

LLVM/project d47315b — compiler-rt/lib/sanitizer_common/symbolizer sanitizer_wrappers.cpp, compiler-rt/test/ubsan/TestCases/Misc/Posix hsa-load-order.cpp shared-libsan-dso.cpp

[compiler-rt] Fix -shared-libsan usage with internal symbolizer (#227717)

Summary:
https://github.com/llvm/llvm-project/pull/226551 exposed a preexisting
issue when using `-shared-libsan` nad the internal symbolizer builds.
The symbolizer will try to look up the symbol via `RTLD_NEXT`, which
goes in load order. If the sanitizer library is loaded *after* `libc.so`
then this `dlsym` call will miss it.

The solution is to have a fallback that checks using `RTLD_DEFAULT`.
This
should allow us to find the symbol in these exceptional cases. I don't
expect much fallout as this covers a case that currently returns `NULL`.
Loading it in means it could grab a reference ahead of the runtime that
was intended to be intercepted, but for this use-case I don't think this
will apply.
DeltaFile
+23-0compiler-rt/test/ubsan/TestCases/Misc/Posix/shared-libsan-dso.cpp
+8-1compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_wrappers.cpp
+0-4compiler-rt/test/ubsan/TestCases/Misc/Posix/hsa-load-order.cpp
+31-53 files

LLVM/project 87db728 — clang/docs ReleaseNotes.md, clang/lib/AST ExprConstant.cpp

[clang] Fix crash constant-evaluating the construction of huge arrays (#226899)

Fixes #173728

The constant evaluator runs on ordinary code all the time (range checks
for `-W` warnings, `isEvaluatable` in codegen), and it
default-constructs an array by building one `APValue` per element. The
element count got truncated to `unsigned` first and nothing checked its
size, so a local like `struct T {} s[0xFFFFFFFF][0]` ran it out of
memory; with the issue's reproducer, where the count wraps to 2^64 - 4,
an assertions build hits the "bounds check failed" assertion in
`adjustIndex` first. Copying such an array, e.g. into a lambda capture,
had the same problem. This goes back to at least Clang 3.4. The bytecode
interpreter has its own version: it emits code for every element, so a
constructor with a member like `T a[0xFFFFFFFF]` runs it out of memory
too.

Array default construction and `ArrayInitLoopExpr` now go through the
existing `CheckArraySize` guard, the same one `new` already uses, so

    [6 lines not shown]
DeltaFile
+61-0clang/test/AST/ByteCode/dynalloc-limits.cpp
+15-2clang/lib/AST/ByteCode/Compiler.cpp
+7-0clang/lib/AST/ByteCode/InterpHelpers.h
+4-0clang/lib/AST/ExprConstant.cpp
+4-0clang/docs/ReleaseNotes.md
+91-25 files

LLVM/project d6a906b — lldb/source/Core Module.cpp

[LLDB] Acquire the module mutex at the start of SetLoadAddress (#227149)

Fixes a potential dead-lock from parallel module loading. 

I received a quick-stack of LLDB hung loading a core with parallel
module loading enabled, where two threads were trying to mutate a given
module and an object file, but having acquired the module mutex first in
one case, and the object file's section mutex first in the second case,
which each trying to subsequently acquire the other lock.

In the update case, [SetLoadAddress acquires the section list mutex and
then tries to acquire the module
mutex](https://github.com/llvm/llvm-project/blob/60f717946cb5ca911b6be22169b9bd646225c59f/lldb/source/Symbol/ObjectFile.cpp#L614)

```
SectionList *ObjectFile::GetSectionList(bool update_module_section_list) {
  std::lock_guard<std::recursive_mutex> guard(m_sections_mutex);
  if (m_sections_up)
    return m_sections_up.get();

    [26 lines not shown]
DeltaFile
+4-0lldb/source/Core/Module.cpp
+4-01 files

LLVM/project 88156f8 — clang/lib/CodeGen CGStmtOpenMP.cpp, clang/test/OpenMP teams_generic_loop_reduction_distribute_codegen.cpp

[clang][OpenMP] Don't use fused dist schedule for teams loop emitted as distribute (#228129)

Fix teams loop reductions lowered as 'distribute' lose their loop.

Claude assisted with this patch.
DeltaFile
+63-0clang/test/OpenMP/teams_generic_loop_reduction_distribute_codegen.cpp
+9-0clang/lib/CodeGen/CGStmtOpenMP.cpp
+72-02 files

LLVM/project 6321d0c — clang/test/CodeGenOpenCL builtins-amdgcn-make-buffer-rsrc.cl, llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp

[AMDGPU] Canonicalize num_records to its actual width in InstCombine

llvm.amdgcn.make.buffer.rsrc is overloaded on the type of its
num_records argument, but the hardware field it ends up in has a fixed
width (32 bits, or 45 bits on gfx1250 and up). Rewrite the intrinsic to
use that width, zero-extending or truncating num_records as needed, so
that IR-level optimizations can see that the extra bits of, for example,
the i64 that Clang emits are not demanded.

Targets that aren't concrete enough for the buffer resource layout to be
known are left alone.

AI disclosure: This was my idea but Claude wrote the code (and I've
tried to tighten up the comments)
DeltaFile
+36-44clang/test/CodeGenOpenCL/builtins-amdgcn-make-buffer-rsrc.cl
+22-12llvm/test/Transforms/InstCombine/AMDGPU/make-buffer-rsrc-num-records.ll
+21-1llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+1-1llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll
+80-584 files

LLVM/project 9247019 — llvm/test/Transforms/InstCombine/AMDGPU make-buffer-rsrc-num-records.ll

[AMDGPU] Pre-commit tests for num_records canonicalizations (#217067)

Add tests for having InstCombine canonicalize the num_records argument
of llvm.amdgcn.make.buffer.rsrc to the width it will ultimately have,
which lets later passes see that, for example, the high bits of the i64
that Clang emits aren't used.

AI disclosure: Claude generated these and I've looked at them
DeltaFile
+153-0llvm/test/Transforms/InstCombine/AMDGPU/make-buffer-rsrc-num-records.ll
+153-01 files

LLVM/project 152d32e — clang/lib/CodeGen/TargetBuiltins RISCV.cpp, clang/test/CodeGen/RISCV rvp-intrinsics.c

[Clang][RISCV][P-ext] Add packed Q-format widening accumulate intrinsics (#228009)

Add support for the Packed "Q-format" Multiply with Widening Accumulate
intrinsics:

- `__riscv_pmqwacc_i32x2`
- `__riscv_pmqrwacc_i32x2`

RV32 selects the direct instructions, while RV64 lowers to the
spec-listed `zip16p` and packed Q-format accumulate sequences.
DeltaFile
+32-0llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+28-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+24-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+17-5llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+16-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+9-0clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
+126-53 files not shown
+144-59 files

LLVM/project 5d9419f — clang/include/clang/CodeGenUtils TargetUtils.h, clang/lib/CIR/CodeGen CIRGenBuiltinAArch64.cpp

[CIR][CodeGen][NFC] Share hasExtraNeonArgument

Deduplicates `hasExtraNeonArgument` between CIR and classic CodeGen into
`TargetUtils.h`.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+2-38clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+3-34clang/lib/CodeGen/TargetBuiltins/ARM.cpp
+25-0clang/lib/CodeGenUtils/TargetUtils.cpp
+6-0clang/include/clang/CodeGenUtils/TargetUtils.h
+36-724 files

LLVM/project 4cfbae7 — clang/include/clang/CodeGenUtils RecordLayoutUtils.h, clang/lib/CIR/CodeGen TargetInfo.h TargetInfo.cpp

[CIR][CodeGen][NFC] Share isEmptyFieldForLayout and isEmptyRecordForLayout

Deduplicates `isEmptyFieldForLayout` and `isEmptyRecordForLayout` between CIR
and classic CodeGen into a new `RecordLayoutUtils.h`. `ABIInfoImpl.h` and CIR's
`TargetInfo.h` re-export them with using-declarations, so the ~30 unqualified
callers are untouched.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+45-0clang/lib/CodeGenUtils/RecordLayoutUtils.cpp
+0-34clang/lib/CIR/CodeGen/TargetInfo.cpp
+34-0clang/include/clang/CodeGenUtils/RecordLayoutUtils.h
+0-33clang/lib/CodeGen/ABIInfoImpl.cpp
+3-9clang/lib/CodeGen/ABIInfoImpl.h
+3-9clang/lib/CIR/CodeGen/TargetInfo.h
+85-851 files not shown
+86-857 files