LLVM/project a140313libc/src/stdlib qsort_data.h

[libc] Make cpp::byte alias-safe (#194171)

Change LIBC_NAMESPACE::cpp::byte from an enum-backed type to unsigned
char so libc’s raw-memory utilities and sorting code can legally access
object representations without violating C++ strict-aliasing rules.
DeltaFile
+15-14libc/src/stdlib/qsort_data.h
+15-141 files

LLVM/project c45cd10llvm/include/llvm/Analysis MemoryBuiltins.h, llvm/include/llvm/IR InstrTypes.h

[MemoryBuiltins] Capture more information for alloc/free from attributes

We now read the `alloc_align` attribute to provide better alignment
information to users. `alloc-family` should be used as well, as
described in the LangRef. Two new helpers provide argument numbers,
rather than values.
DeltaFile
+14-19llvm/lib/Analysis/MemoryBuiltins.cpp
+10-3llvm/lib/IR/Instructions.cpp
+5-0llvm/include/llvm/Analysis/MemoryBuiltins.h
+4-0llvm/include/llvm/IR/InstrTypes.h
+33-224 files

LLVM/project 874420dflang/lib/Optimizer/HLFIR/Transforms OptimizedBufferization.cpp, flang/test/HLFIR opt-bufferization-skip-volatile.fir

[flang] Recognize effects on non-addressable resources in opt-bufferization.

opt-bufferization has been only handling `fir::DebuggingResource`
explicitly. This patch adds support for other non-addressable
resources, such as `fir::VolatileMemoryResource`. This allows
merging elemental/assign for the `volatile_src_nonvolatile_dst`
example in the updated LIT test.
DeltaFile
+115-22flang/lib/Optimizer/HLFIR/Transforms/OptimizedBufferization.cpp
+6-8flang/test/HLFIR/opt-bufferization-skip-volatile.fir
+121-302 files

LLVM/project 88459c7flang/include/flang/Optimizer/Dialect FIROps.td, flang/test/HLFIR opt-bufferization-skip-volatile.fir

[flang] Pass-through fir.volatile_cast in FIR AliasAnalysis.

It should be safe to pass-through `fir.volatile_cast` for the purpose
of alias analysis. The missing pass-through prevented optimization
of the `nonvolatile_src_volatile_dst` test (see updated LIT test).
DeltaFile
+98-4flang/test/HLFIR/opt-bufferization-skip-volatile.fir
+12-1flang/include/flang/Optimizer/Dialect/FIROps.td
+110-52 files

LLVM/project 0320f03libc/lib CMakeLists.txt

[libc] Fix install-libc to work with LLVM_LIBC_FULL_BUILD=OFF (#197366)

Initialize variables that are conditionally set to avoid undefined
references in install-libc and install-libc-stripped targets:

- Initialize added_bitcode_targets to empty string (may be undefined
when LIBC_TARGET_OS_IS_GPU=OFF)
- Initialize startup_target to empty string and only set to
"libc-startup" when both LLVM_LIBC_FULL_BUILD=ON and NOT baremetal
(startup directory is only included in full builds)
- Initialize header_install_target to empty string (may be undefined
when LLVM_LIBC_FULL_BUILD=OFF)
DeltaFile
+4-1libc/lib/CMakeLists.txt
+4-11 files

LLVM/project 88afb5amlir/include/mlir/Interfaces InferIntDivisibilityOpInterface.h, mlir/lib/Analysis/DataFlow IntegerDivisibilityAnalysis.cpp

Revert "[MLIR] Add `IntegerDivisibilityAnalysis` and `InferIntDivisibilityOpInterface`" (#198048)

Reverts llvm/llvm-project#197728

unblock bots: 
https://lab.llvm.org/buildbot/#/builders/226
https://lab.llvm.org/buildbot/#/builders/203
DeltaFile
+0-312mlir/lib/Dialect/Affine/IR/InferIntDivisibilityOpInterfaceImpl.cpp
+0-152mlir/test/Analysis/DataFlow/integer-divisibility.mlir
+0-135mlir/lib/Analysis/DataFlow/IntegerDivisibilityAnalysis.cpp
+0-122mlir/lib/Dialect/Arith/IR/InferIntDivisibilityOpInterfaceImpl.cpp
+0-120mlir/include/mlir/Interfaces/InferIntDivisibilityOpInterface.h
+0-93mlir/test/lib/Analysis/DataFlow/TestIntegerDivisibilityAnalysis.cpp
+0-93413 files not shown
+11-1,09519 files

LLVM/project 3864552llvm/lib/Target/DirectX/DXILWriter DXILBitcodeWriter.cpp, llvm/test/tools/dxil-dis di-subprogram.ll

[DirectX] Do not emit !dbg on function definitions (#197449)

This was not done in LLVM 3.7. Instead, the !DISubprogram contains a
reference to the function (already emitted).
DeltaFile
+4-0llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp
+2-0llvm/test/tools/dxil-dis/di-subprogram.ll
+6-02 files

LLVM/project a070a15libc/src/string/memory_utils inline_memmove.h inline_memset.h, libc/src/string/memory_utils/generic builtin.h

[libc] Add config option to use memory builtin functions. (#197977)

Add a new CMake and C++ definition configuration option
`LIBC_CONF_USE_MEM_BUILTINS` to allow users to use compiler builtins for
memory utility functions (memcpy, memset, memmove, memcmp, and bcmp)
instead of LLVM libc's internal implementations. Main use-cases are:
- when users want to bring their own memory functions implementations
that are highly optimized for their targets
- improve portability by providing a fallback for targets for which LLVM
libc does not have memory utility implementations yet
- to be used for libc/shared functions and their testings, as we expect
libc/shared functions to provide their own memory functions.
DeltaFile
+14-2libc/src/string/memory_utils/generic/builtin.h
+6-1libc/src/string/memory_utils/inline_memmove.h
+4-1libc/src/string/memory_utils/inline_memset.h
+4-1libc/src/string/memory_utils/inline_memcpy.h
+4-1libc/src/string/memory_utils/inline_memcmp.h
+4-1libc/src/string/memory_utils/inline_bcmp.h
+36-72 files not shown
+44-78 files

LLVM/project a0176fdlldb/include/lldb/Symbol ObjectFile.h, lldb/source/Symbol ObjectFile.cpp

[lldb] Fix data race in ObjectFile::GetSectionList (#197812)

The early `m_sections_up == nullptr` check was performed outside the
module mutex, so two threads sharing the same Module could both enter
the branch and race on the write in CreateSections. Restructure so the
check and populate both happen under the module mutex; this is a
standard double-checked locking fix.

Found by ThreadSanitizer as part of #197792.
DeltaFile
+10-10lldb/source/Symbol/ObjectFile.cpp
+3-0lldb/include/lldb/Symbol/ObjectFile.h
+13-102 files

LLVM/project cc3f8adllvm/test/Transforms/PGOProfile consecutive-zeros.ll, llvm/test/Transforms/PGOProfile/Inputs consecutive-zeros.proftext

PGO] Drop consecutive-zeros.ll test

pgo-memop-opt has previously validated VP metadata and bailed if it runs
into duplicate values in the VP metadata. VP metadata values will soon
be deduplicated at construction, making this no longer necessary, and
will also cause this test to fail, so drop it. Keep the
verification/deduplication pgo-memop-opt for now to avoid leaving main
in a broken state.

Reviewers: mtrofin, ormris

Pull Request: https://github.com/llvm/llvm-project/pull/197615
DeltaFile
+0-58llvm/test/Transforms/PGOProfile/consecutive-zeros.ll
+0-47llvm/test/Transforms/PGOProfile/Inputs/consecutive-zeros.proftext
+0-1052 files

LLVM/project c7a4fb0llvm/test/CodeGen/AMDGPU/GlobalISel sdivrem.ll, llvm/test/CodeGen/Thumb2 mve-clmul.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+8,633-8,584llvm/test/CodeGen/Thumb2/mve-clmul.ll
+8,195-0llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
+8,182-0llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s
+6,862-0llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+3,436-2,769llvm/test/CodeGen/AMDGPU/GlobalISel/sdivrem.ll
+4,686-918llvm/test/CodeGen/X86/vector-reduce-ctpop.ll
+39,994-12,2714,021 files not shown
+305,249-120,8534,027 files

LLVM/project 26e1238llvm/test/tools/dsymutil/AArch64 typedef-different-types.test

host-byteorder-little-endian derictaive to typedef-different-types.test (#197981)

The test case introduced in
https://github.com/llvm/llvm-project/pull/195749/changes#diff-d9b34bdc428ca5518742902b1226065daa6a89d3fe056e10bc29615b57aa2deb
fails on AIX
(https://lab.llvm.org/staging/#/builders/231/builds/610/steps/6/logs/FAIL__LLVM__typedef-different-types_test)
due to AIX being big endian, add requires directive similar to
https://github.com/llvm/llvm-project/issues/190481
DeltaFile
+2-0llvm/test/tools/dsymutil/AArch64/typedef-different-types.test
+2-01 files

LLVM/project 12e7840llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp, llvm/test/MC/AMDGPU gfx12_asm_vopd_features.s

[AMDGPU] Fix VOPD assembler validation for GFX12+ (#198034)

The related `codegen` side of this change was already landed by
https://github.com/llvm/llvm-project/commit/c510ee553e2057f94c2f023c72abb3c9afec0962
("[AMDGPU] VOPD: AllowSameVGPR on GFX12"), which changed
`GCNVOPDUtils.cpp` to use `hasGFX12Insts()` instead of
`hasGFX1250Insts()`.
However, the assembler validation in `AMDGPUAsmParser.cpp` was not
updated to match, causing it to reject valid VOPD instruction pairs that
share the same VGPR as src0 on `gfx1200`.
This fix aligns the assembler with the `codegen` by changing
`isGFX1250Plus()` to `isGFX12Plus()` in `checkVOPDRegBankConstraints`,
and adds a positive test case to verify same-VGPR src0 pairs assemble
correctly on `gfx12`.
DeltaFile
+8-0llvm/test/MC/AMDGPU/gfx12_asm_vopd_features.s
+1-1llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+9-12 files

LLVM/project f6f0c9ellvm/lib/Transforms/IPO Instrumentor.cpp, llvm/test/Instrumentation/Instrumentor call_allocation_deallocation.ll call_flags.ll

[Instrumentor] Add call instrumentation support

We can now instrument call instructions and extract information about
the arguments, (de)allocation, intrinsic kind, etc.
DeltaFile
+403-0llvm/test/Instrumentation/Instrumentor/call_allocation_deallocation.ll
+228-1llvm/lib/Transforms/IPO/Instrumentor.cpp
+139-0llvm/test/Instrumentation/Instrumentor/call_flags.ll
+77-0llvm/test/Instrumentation/Instrumentor/call_filters.ll
+60-0llvm/test/Instrumentation/Instrumentor/call_flags_config.json
+35-25llvm/test/Instrumentation/Instrumentor/alloca_and_function.ll
+942-266 files not shown
+1,128-2912 files

LLVM/project f675972llvm/docs LangRef.rst

[IR] Note that duplicate profile values are illegal in VP metadata

It is not legal to have duplicate VP metadata as it should be merged
appropriately before it actually ends up transcribed into the IR.

I will put up a verifier patch for this to follow this one, but do so
separately in case we need to revert due to detecting actual issues in
the code base.

Reviewers: david-xl, teresajohnson, mtrofin

Pull Request: https://github.com/llvm/llvm-project/pull/193077
DeltaFile
+3-1llvm/docs/LangRef.rst
+3-11 files

LLVM/project 3cb39bdclang/lib/CIR/CodeGen CIRGenBuiltinNVPTX.cpp CIRGenBuiltin.cpp, clang/test/CIR/CodeGenCUDA device-printf.cu

[CIR][CUDA] Support device-side printf for NVPTX (#196573)

Implement device-side printf lowering for NVPTX targets in CIR codegen.
The variadic arguments are packed into a stack-allocated struct and
passed to vprintf, matching the classic codegen behavior in
CGGPUBuiltin.cpp

When the target triple is NVPTX and the builtin is
printf/__builtin_printf, we route to emitNVPTXDevicePrintfCallExpr
The no-varargs case passes a null pointer directly.

AMDGCN device printf remains NYI.
part of https://github.com/llvm/llvm-project/issues/179278
DeltaFile
+103-0clang/lib/CIR/CodeGen/CIRGenBuiltinNVPTX.cpp
+46-0clang/test/CIR/CodeGenCUDA/device-printf.cu
+11-0clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+3-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+163-04 files

LLVM/project ba0fef9mlir/include/mlir/Interfaces InferIntDivisibilityOpInterface.h, mlir/lib/Analysis/DataFlow IntegerDivisibilityAnalysis.cpp

[MLIR] Add `IntegerDivisibilityAnalysis` and `InferIntDivisibilityOpInterface` (#197728)

This patch is a port from
https://github.com/iree-org/iree/blob/main/compiler/src/iree/compiler/Dialect/Util/Analysis/IntegerDivisibilityAnalysis.cpp
to upstream

It introduces a dataflow analysis that tracks integer divisibility
(divisor + remainder lattice) for SSA values, plus an op interface
`InferIntDivisibilityOpInterface` for ops to participate.

It adds:
* `IntegerDivisibilityAnalysis` produces a `Divisibility` lattice
`{divisor, remainder}`
* `InferIntDivisibilityOpInterface` interface
* External-model implementations for `arith` and `affine` ops
* `test-int-divisibility` test pass + lit tests

Example:
Here is the usual approach to laod element `i` from `i4` buffer emulated

    [11 lines not shown]
DeltaFile
+312-0mlir/lib/Dialect/Affine/IR/InferIntDivisibilityOpInterfaceImpl.cpp
+152-0mlir/test/Analysis/DataFlow/integer-divisibility.mlir
+135-0mlir/lib/Analysis/DataFlow/IntegerDivisibilityAnalysis.cpp
+122-0mlir/lib/Dialect/Arith/IR/InferIntDivisibilityOpInterfaceImpl.cpp
+120-0mlir/include/mlir/Interfaces/InferIntDivisibilityOpInterface.h
+93-0mlir/test/lib/Analysis/DataFlow/TestIntegerDivisibilityAnalysis.cpp
+934-013 files not shown
+1,095-1119 files

LLVM/project 0f8ad47flang/lib/Lower OpenACC.cpp, flang/test/Lower/OpenACC acc-declare-global-component-not-supported.f90 acc-declare-global-component.f90

[flang][acc] Accept component of global variable in `acc declare` (#197819)

This MR partially extends the current implementation to accept cases of
`acc declare` on a `parent%comp` whenever the `parent` has been `acc
declare`d with the same clause. This is done by generating only the acc
global constructor only for mapping the parent as the child is expected
to be part of parent.

The limitations still remain as a TODO unless it can be proven parent is
mapped. A generic implementation would need either compiler generated
ordering on the global constructors used for mapping or runtime managed
ordering.
DeltaFile
+107-19flang/lib/Lower/OpenACC.cpp
+34-7flang/test/Lower/OpenACC/acc-declare-global-component-not-supported.f90
+38-0flang/test/Lower/OpenACC/acc-declare-global-component.f90
+179-263 files

LLVM/project fac333ellvm/lib/Target/AArch64 AArch64A57FPLoadBalancing.cpp

[AArch64] Do not pass debug insn to liveness analysis (#198021)

Fix another stepBackward location.

Debug instructions must not affect liveness analysis. stepBackward has
an assertion failure on debug instructions after
https://github.com/llvm/llvm-project/pull/193104.

Signed-off-by: John Lu <John.Lu at amd.com>
DeltaFile
+2-1llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp
+2-11 files

LLVM/project ae2d83bllvm/test/tools/llvm-mca/RISCV/SiFiveP800 vlseg-vsseg.s, llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv arithmetic.test fp.test

[RISCV][MCA] Use the new infrastructure for SiFive P500 and P800's tests. NFC (#198016)

Some tests -- mostly vector crypto -- are kept for SiFive P800.

NFC.
DeltaFile
+0-4,752llvm/test/tools/llvm-mca/RISCV/SiFiveP800/vlseg-vsseg.s
+4,549-0llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv/arithmetic.test
+3,729-0llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv/fp.test
+3,149-0llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv/vlseg-vsseg.test
+2,901-0llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv/bitwise.test
+2,357-0llvm/test/tools/llvm-mca/RISCV/SiFiveP800/rvv/permutation.test
+16,685-4,75253 files not shown
+31,123-10,18259 files

LLVM/project b5406e4flang/test/Lower array-derived.f90 allocatable-runtime.f90

[flang][NFC] Finishing touches on legacy lowering conversion (#197973)

At the beginning of legacy lowering conversion, some tests were
initially converted to emit FIR. After some discussion, it was decided
to revisit those tests and convert them to emit HLFIR. This change
completes that step and should be the final change in removing vestiges
of legacy lowering.

Assisted-by: AI
DeltaFile
+42-66flang/test/Lower/array-derived.f90
+55-52flang/test/Lower/allocatable-runtime.f90
+42-56flang/test/Lower/array-constructor-index.f90
+47-47flang/test/Lower/allocate-source-allocatables.f90
+30-28flang/test/Lower/allocatable-return.f90
+26-26flang/test/Lower/arithmetic-goto.f90
+242-2755 files not shown
+294-31711 files

LLVM/project 7db1a2blldb/source/Utility ConstString.cpp

[lldb] Avoid unnecessary strlen of mangled names in ConstString (NFC) (#197995)

C++ mangled names are known to be quite long at times. This change makes
use of available length data, instead of using the `StringRef(const char
*)` constructor which calls `strlen`.

The main detail is to replace `selectPool(llvm::StringRef(raw))` with a
call to `selectPool` using a readily available StringRef.
DeltaFile
+11-9lldb/source/Utility/ConstString.cpp
+11-91 files

LLVM/project aaaae52libc/test/integration/src/__support/threads cndvar_test.cpp, libc/test/integration/src/pthread pthread_cond_test.cpp

[libc] Reduce number of iterations in threading tests. (#198030)

Previously the threading tests were running noticeably slowly and
causing flakey timeouts on some buildbots (e.g.
https://lab.llvm.org/buildbot/#/builders/71/builds/48420)
DeltaFile
+3-3libc/test/integration/src/pthread/pthread_cond_test.cpp
+2-2libc/test/integration/src/__support/threads/cndvar_test.cpp
+5-52 files

LLVM/project dd0bb3eclang/lib/CIR/CodeGen CIRGenCXX.cpp, clang/test/CIR/CodeGen global-dtor-union-narrowed.cpp

[CIR] Cast global var address to declared type at dtor call site

A C++ global with a constexpr default constructor that fixes the active member of a union — `std::basic_string`'s SSO `__short` variant is a common example — has a `cir.global` whose stored record type is the narrowed shape of that active variant.  Classic CodeGen does the same (`@g = global { { { [16 x i8] } } } zeroinitializer`) and accepts the resulting `__cxa_atexit(@D1, @g, ...)` because LLVM IR uses opaque pointers.  CIR has typed pointers, so the `cir.call` registering the destructor for `__cxa_atexit` carries an operand type that doesn't match the dtor's `this` parameter.  This trips 16 libcxx tests and 71 cases total across libcxx, MultiSource, SingleSource, and SPEC in our build.

`verifyPointerTypeArgs(oldF, newF, userMap)` in `CIRGenModule::applyReplacements` (`clang/lib/CIR/CodeGen/CIRGenModule.cpp:1700`) catches this when ctor-dtor aliases are enabled and D1 is RAUW'd by D2.  Without aliases, the `cir.call` op verifier rejects the same operand-type mismatch directly.

The fix mirrors the cast pattern `emitGlobalVarDeclLValue` (`clang/lib/CIR/CodeGen/CIRGenExpr.cpp:441-445`) already uses for every AST-level reference to a global: bitcast the result of `getAddrOfGlobalVar` to `convertTypeForMem(type)` before any typed-pointer op consumes it.  `getAddrOfGlobalVar` itself stays raw so callers that walk to the underlying `GetGlobalOp` via `getDefiningOp()` keep working.

`global-dtor-union-narrowed.cpp` pins the CIR bitcast, the lowered LLVM helper-wrapped `__cxa_atexit`, and the equivalent OGCG direct `__cxa_atexit`.
DeltaFile
+41-0clang/test/CIR/CodeGen/global-dtor-union-narrowed.cpp
+14-1clang/lib/CIR/CodeGen/CIRGenCXX.cpp
+55-12 files

LLVM/project 2825dfaclang/test/CodeGen scoped-atomic-ops.c, clang/test/CodeGenCUDA atomic-options.hip amdgpu-kernel-arg-pointer-type.cu

[clang] remove lots of "innocuous" addrspacecasts (#197745)

These originally added many addrspacecast early on, where often it
wasn't needed, or could be added later. This makes these fairly
straightforward to remove (other than changing some tests). By swapping
all calls to this function (except the intended semantic ones for
parameters and variables) with the uncasted version, AMDGPU will
eventually not need to attempt to apply a fix up afterwards by having
different addrspace maps. This PR does not yet fix all calls, but the
main ones that might have been missed are in matrix/vector extensions
(which seem to weirdly override the memory type for temporary values to
be different from the type of the object in all other uses).
DeltaFile
+568-852clang/test/CodeGen/scoped-atomic-ops.c
+144-216clang/test/CodeGenCUDA/atomic-options.hip
+95-103clang/test/CodeGenCUDA/amdgpu-kernel-arg-pointer-type.cu
+60-41clang/test/CodeGenCXX/amdgcn-func-arg.cpp
+36-54clang/test/CodeGenCUDA/builtins-spirv-amdgcn.cu
+32-42clang/test/OpenMP/target_teams_generic_loop_codegen_as_parallel_for.cpp
+935-1,30834 files not shown
+1,156-1,56040 files

LLVM/project ad42ae2llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h, llvm/lib/Frontend/OpenMP OMPIRBuilder.cpp

Fix dynamic map iterator target data lowering

Hoist runtime-sized offload map array allocation for regional target data with
iterator modifiers so the dynamic count and arrays dominate both begin and end
runtime calls.
DeltaFile
+58-30llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+28-2offload/test/offloading/fortran/map-motion-iterator.f90
+28-0mlir/test/Target/LLVMIR/openmp-iterator.mlir
+6-0llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+2-2mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+122-345 files

LLVM/project 97ce93allvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AMDGPU transform-node-gather-struct.ll

[SLP]Consider non-profitable trees with buildvector of struct-returning instructions

Dropping the tree with the struct-returning instructions after
transformations to fix a compiler crash in
https://lab.llvm.org/buildbot/#/builders/10/builds/28684.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/198024
DeltaFile
+49-0llvm/test/Transforms/SLPVectorizer/AMDGPU/transform-node-gather-struct.ll
+12-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+61-02 files

LLVM/project e7f80d6libc/src/stdio/printf_core float_dec_converter_limited.h

[libc] Fix shadowing in printf (#197985)

The 320 bit float converter defined StorageType and DECIMAL_POINT
outside of its functions. This caused issues with other definitions of
the same variables after #197516.
DeltaFile
+4-10libc/src/stdio/printf_core/float_dec_converter_limited.h
+4-101 files

LLVM/project e8daf91llvm/lib/DWARFLinker/Parallel DWARFLinkerCompileUnit.cpp TypePool.h, llvm/test/tools/dsymutil/X86/DWARFLinkerParallel odr-member-functions.cpp odr-fwd-declaration2.test

[DWARFLinker] Preserve source order of member subprograms (#196443)

Children of class/struct/union/interface DIEs in the parallel
DWARFLinker's artificial type unit are sorted lexicographically by the
TypePool synthetic-name key. Data members already get a positional slot
through the synthetic name, but subprograms don't: they collapse to
alphabetical-by-linkage-name order. That breaks LLDB's
SBType::GetMemberFunctionAtIndex(N), which contractually returns members
in DWARF order.

Add a uint32_t SortKey on TypeEntryBody, atomically min-merged across
CUs with the input DIE's ordinal in its parent's child list, and consult
it before the synthetic-name key in TypePool's comparator. The ordinal
is computed by cloneDIE's existing child walk and threaded into
createTypeDIEandCloneAttributes. Scoped to children of
class/struct/union/interface so top-level types in the artificial type
unit keep their existing sort order.
DeltaFile
+17-17llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-member-functions.cpp
+26-5llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp
+15-0llvm/lib/DWARFLinker/Parallel/TypePool.h
+6-6llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-fwd-declaration2.test
+7-3llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.h
+2-2llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-static-member-decl.test
+73-331 files not shown
+75-357 files

LLVM/project bd0c8fdllvm/test/Transforms/SLPVectorizer/X86 arith-mul-smulo.ll arith-sub-ssubo.ll

Revert "[SLP] Vectorize struct-returning intrinsics"

This reverts commit 1c5e395e234b5c4c6048a51842480c0c074f6ccf.
DeltaFile
+615-549llvm/test/Transforms/SLPVectorizer/X86/arith-mul-smulo.ll
+615-449llvm/test/Transforms/SLPVectorizer/X86/arith-sub-ssubo.ll
+615-449llvm/test/Transforms/SLPVectorizer/X86/arith-sub-usubo.ll
+615-449llvm/test/Transforms/SLPVectorizer/X86/arith-add-saddo.ll
+615-449llvm/test/Transforms/SLPVectorizer/X86/arith-add-uaddo.ll
+615-429llvm/test/Transforms/SLPVectorizer/X86/arith-mul-umulo.ll
+3,690-2,7745 files not shown
+3,913-3,29011 files