LLVM/project 9e1be60bolt/lib/Core DebugData.cpp, bolt/test/X86 mixed-dwarf32-dwarf64-str-offsets.test mixed-dwarf32-dwarf64-rnglists.test

[BOLT][DebugInfo] Add DWARF64 support for BOLT (#206437)

BOLT currently assumes the DWARF32 format when it rewrites debug
sections. As a result, rewriting a binary that was compiled with
`-gdwarf64` either produces a corrupted output or fails `llvm-dwarfdump
--verify`. This patch adds DWARF64 support to the BOLT DWARF rewriter,
honoring each unit's DwarfFormat and emitting correct encodings DWARF64
for binaries, including mix DWARF32 and DWARF64.
DeltaFile
+269-0bolt/test/X86/mixed-dwarf32-dwarf64-str-offsets.test
+241-0bolt/test/X86/mixed-dwarf32-dwarf64-rnglists.test
+188-0bolt/test/X86/dwarf4-dwarf64-ranges.test
+173-0bolt/test/X86/mixed-dwarf32-dwarf64-debug-names.test
+166-0bolt/test/X86/dwarf64-loclists.test
+98-61bolt/lib/Core/DebugData.cpp
+1,135-6115 files not shown
+2,025-12421 files

LLVM/project 6e68094llvm/include/llvm/ADT GenericUniformityImpl.h

[UniformityAnalysis] Make BlockLabels transient and switch to SmallVector. NFC (#211734)

Drop the field from the descriptor and keep the labels in a
propagator-local SmallVector indexed by block number.
DeltaFile
+23-22llvm/include/llvm/ADT/GenericUniformityImpl.h
+23-221 files

LLVM/project aa590d1llvm/tools/spirv-tools CMakeLists.txt

[SPIR-V] Fix SPIRVTools download step failing on rerun (#211561)

Customized DOWNLOAD_COMMAND ran a raw `git clone`, which fails with
"destination path already exists" whenever ninja reruns the download
step against an already cloned checkout. Use the native
GIT_REPOSITORY/GIT_TAG (with default DOWNLOAD_COMMAND) step instead,
which handles this case correctly
DeltaFile
+1-3llvm/tools/spirv-tools/CMakeLists.txt
+1-31 files

LLVM/project ee407f7libc/cmake/modules LLVMLibCTestRules.cmake, libc/test/UnitTest ExecuteFunctionUnix.cpp HermeticTestUtils.cpp

Reapply "[libc] Port process utilities to hermetic mode and enable some tests" (#211484)

This reverts https://github.com/llvm/llvm-project/pull/210889
(https://github.com/labath/llvm-project/commit/b7f642fdb262e2ed3c2209b9a10017084e1595ad,
"Revert
recent changes to the hermetic tests"), re-applying
https://github.com/llvm/llvm-project/pull/209999

(https://github.com/labath/llvm-project/commit/9e2e9b33e14808541c0470b92ade34bee6608bf6,
"[libc] Port process
utilities to hermetic mode and enable some tests") and
https://github.com/llvm/llvm-project/pull/210715

(https://github.com/labath/llvm-project/commit/4bd1a447e136e60ea441370ac5d7b898aa4efab0,
"[libc] Make hermetic test
syscall deps linux-only"), which was reverted due to failures on the GPU
bots.

There are a couple of small changes w.r.t the original patches:

    [8 lines not shown]
DeltaFile
+41-15libc/test/UnitTest/ExecuteFunctionUnix.cpp
+17-28libc/test/src/stdlib/CMakeLists.txt
+5-14libc/test/UnitTest/HermeticTestUtils.cpp
+18-0libc/cmake/modules/LLVMLibCTestRules.cmake
+15-2libc/test/UnitTest/CMakeLists.txt
+2-3libc/test/UnitTest/LibcDeathTestExecutors.cpp
+98-621 files not shown
+99-627 files

LLVM/project 3cba294llvm/test/TableGen aarch64-register-info-stats.td, llvm/utils/TableGen RegisterInfoEmitter.cpp

[TableGen] Add register-info statistics (#211528)

Add statistics for the numbers of explicit and synthesized register
classes, along with the number of register pressure sets. This makes
growth in the generated register model easier to spot since it can be
surprising.

Assisted-by: codex
DeltaFile
+18-0llvm/test/TableGen/aarch64-register-info-stats.td
+15-0llvm/utils/TableGen/RegisterInfoEmitter.cpp
+33-02 files

LLVM/project 2a0942dlibunwind/test aix_vapi_signal_unwind.pass.cpp

[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (as signal handler) (#209662)

Further to https://github.com/llvm/llvm-project/pull/209306, test a case
where a signal handler is a Virtual API function triggered synchronously
while the VAPI is not active. Resuming an ancestor context of the signal
frame should call the VAPI return glue.

---------

Assisted-by: IBM Bob
(cherry picked from commit dbaabbc920fcd60aeed5109c3c6353830e7605c5)
DeltaFile
+115-0libunwind/test/aix_vapi_signal_unwind.pass.cpp
+115-01 files

LLVM/project 9edfdc2llvm/lib/Transforms/AggressiveInstCombine AggressiveInstCombine.cpp, llvm/test/Transforms/AggressiveInstCombine lower-table-based-cttz-basics.ll lower-table-based-cttz-dereferencing-pointer.ll

[AggressiveInstCombine] Avoid converting first table element when folding table-based cttz (#211202)

Do not attempt to zext (or truncate) the table's first element into the
cttz input type, as the element type may be wider than the input type.
Instead, convert the cttz result and emit the select directly in the
table's access type, which is the final expected type as well. Minor
opportunity to favor using APInt when the first element has more than 64
active bits to avoid crashing.

Fixes: https://github.com/llvm/llvm-project/issues/210890.
DeltaFile
+64-21llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-basics.ll
+10-11llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+2-2llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-dereferencing-pointer.ll
+2-2llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-zero-element.ll
+2-2llvm/test/Transforms/AggressiveInstCombine/lower-table-based-cttz-non-argument-value.ll
+80-385 files

LLVM/project 77b1291libunwind/test aix_vapi_unw_resume.pass.cpp CMakeLists.txt, libunwind/test/configs cmake-bridge.cfg.in

[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (non-signal-handler case) (#209306)

Test detection, during stepping, of the backchain mutation introduced by
a VAPI call (see https://github.com/llvm/llvm-project/pull/209280).
Further, test resumption of contexts using cursors obtained while a VAPI
is active on the thread.

Testing is done via FileCheck inspection of trace output enabled by
`LIBUNWIND_PRINT_UNWINDING=1`. When Live Library Update is not enabled,
synthetic trace output is generated by the test program itself.

---------

Assisted-by: IBM Bob
(cherry picked from commit 861efe03d96d93cd7e475d15bbc676f6d521f4fd)
DeltaFile
+167-0libunwind/test/aix_vapi_unw_resume.pass.cpp
+2-0libunwind/test/configs/cmake-bridge.cfg.in
+1-0libunwind/test/CMakeLists.txt
+170-03 files

LLVM/project f2efd35llvm/docs/AMDGPU AMDGPUAsmGFX11.rst AMDGPUAsmGFX10.rst, llvm/test/CodeGen/AMDGPU maximumnum.ll minimumnum.ll

Merge branch 'main' into revert-186093-aarch64-enable-copy-spill-elim
DeltaFile
+5,041-5,418llvm/test/CodeGen/AMDGPU/maximumnum.ll
+4,920-5,284llvm/test/CodeGen/AMDGPU/minimumnum.ll
+0-3,307llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
+0-2,268llvm/docs/AMDGPU/AMDGPUAsmGFX10.rst
+0-2,175llvm/docs/AMDGPU/AMDGPUAsmGFX1030.rst
+0-2,160llvm/docs/AMDGPU/AMDGPUAsmGFX940.rst
+9,961-20,6122,355 files not shown
+26,113-62,6632,361 files

LLVM/project 4977a9allvm/lib/DWARFLinker/Parallel DWARFLinkerCompileUnit.cpp, llvm/test/tools/dsymutil/X86/DWARFLinkerParallel alloc-type.s

[DWARFLinker] Treat DW_AT_LLVM_alloc_type as a type reference (#211655)

The parallel linker's getODRAttributes() did not list
`DW_AT_LLVM_alloc_type`, so the dependency tracker treated it as a live
reference rather than a type reference. A type reachable only through
DW_AT_LLVM_alloc_type was therefore never kept: the enclosing subprogram
is marked live, and its type-table-candidate children are skipped during
live marking on the assumption they are retained through the type path.

The attribute then resolved to offset 0, landing on the compile unit
header, which got correctly caught by the DWARF verifier.

The classic linker already lists `DW_AT_LLVM_alloc_type` in
isODRAttribute(), so this PR restores parity between the two.

Assisted-by: Claude

rdar://182715403
(cherry picked from commit bb17e718bc419b46bb2596c2f25c9cc0f76a2d5a)
DeltaFile
+165-0llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/alloc-type.s
+2-1llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp
+167-12 files

LLVM/project 2284deallvm/lib/Analysis LoopInfo.cpp, llvm/test/Transforms/LoopSimplify drop-ub-attributes.ll

[LoopInfo] Fix makeLoopInvariant to strip UB-implying attributes. (#211413)

isSafeToSpeculativelyExecute gained an argument to check for UB-implying
attributes in 830cf36bd4c49, but the default is to ignore them. Update
this code to account for that.

Fixes #210137

(cherry picked from commit fcff12829ecee44d715d9f901c0195fb1f30a881)
DeltaFile
+36-0llvm/test/Transforms/LoopSimplify/drop-ub-attributes.ll
+1-1llvm/lib/Analysis/LoopInfo.cpp
+37-12 files

LLVM/project 5bb1351llvm/lib/DWARFLinker/Parallel DependencyTracker.cpp DWARFLinkerCompileUnit.h, llvm/unittests/DWARFLinkerParallel DIEInfoPlacementTest.cpp CMakeLists.txt

[DWARFLinker] Fix placement lost-update crash in parallel marking (#211009)

(cherry picked from commit acb8fbe83ff12711317118b8c9831905d301b56a)
DeltaFile
+104-0llvm/unittests/DWARFLinkerParallel/DIEInfoPlacementTest.cpp
+57-34llvm/lib/DWARFLinker/Parallel/DependencyTracker.cpp
+30-0llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.h
+7-0llvm/unittests/DWARFLinkerParallel/CMakeLists.txt
+198-344 files

LLVM/project 1bbf445llvm/lib/Target/AArch64 AArch64Processors.td, llvm/test/tools/llvm-mca/AArch64/Cortex A78-basic-instructions.s A76-basic-instructions.s

[AArch64] Reuse NeoverseN1 and N2 scheduling models for A76/A77/A78. (#211209)

We do not have native scheduling models for some of the Cortex-A
generations of CPUs, so they were still using the old Cortex-A57 model.
Whilst not perfectly accurate, the NeoverseN1 and NoeverseN2 scheduling
models should be a better fit for these CPUs. I mostly just tried to
make sure the number of pipelines matches between the neoverse core and
the cortex core. If we need something more accurate then we can start
adding new models for the CPUs.

(cherry picked from commit 54a0f730d9f8df4e7f5e4bfd4c03acbc182eb3cf)
DeltaFile
+46-0llvm/test/tools/llvm-mca/AArch64/Cortex/A78-basic-instructions.s
+38-0llvm/test/tools/llvm-mca/AArch64/Cortex/A76-basic-instructions.s
+13-6llvm/lib/Target/AArch64/AArch64Processors.td
+97-63 files

LLVM/project 5e7b435lldb/source/Plugins/Process/Windows/Common ProcessDebugger.cpp NativeProcessWindows.cpp, lldb/test/API/attach TestWindowsAttachBreakpoint.py main.c

[lldb][Windows] ignore loader breakpoints in system modules (#208233)

Currently, when debugging a program with `lldb-dap` on Windows and using
the `integratedTerminal` option, lldb-dap immediatly stops with an
`0x80000003` Exception. This is because `ntdll` executes an `int3`
breakpoint during process initialization when a debugger is attached.

This patch makes `lldb` and `lldb-server` skip the first `int3` after
launch when it originates from a system module (the loader's debugger
notification). Only that first loader breakpoint is skipped. Any later
int3, including `__debugbreak()`, `__builtin_debugtrap()` in the
debuggee's own code, still stops the debugger.

Fixes https://github.com/llvm/llvm-project/issues/198763

(cherry picked from commit 83530ce356dd55fdc981b5325ca1f5117b4a58f8)
DeltaFile
+160-0lldb/test/API/attach/TestWindowsAttachBreakpoint.py
+65-0lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.cpp
+15-43lldb/source/Plugins/Process/Windows/Common/NativeProcessWindows.cpp
+27-3lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
+5-0lldb/source/Plugins/Process/Windows/Common/ProcessDebugger.h
+4-0lldb/test/API/attach/main.c
+276-464 files not shown
+283-4710 files

LLVM/project e39f33cllvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86/apx ccmp.ll

[X86][CCMP] Fix invalid CCMP emission (#211161)

This patch ports AArch64's negation-aware conjunction algorithm to fix
invalid CCMP emission when OR nested inside an AND.

Example: https://godbolt.org/z/ave7f61hK

Before the change, the above case returns 5 rather the 9 when CCMP
enabled.

Assisted-by: Claude Opus 4.8
(cherry picked from commit 45b30651cf94ddb32676550cca7ddd3f6a5e66e0)
DeltaFile
+140-59llvm/lib/Target/X86/X86ISelLowering.cpp
+60-18llvm/test/CodeGen/X86/apx/ccmp.ll
+200-772 files

LLVM/project 060d53fllvm/include/llvm/DebugInfo/DWARF DWARFTypePrinter.h, llvm/test/tools/llvm-dwarfdump/X86 verify_simplified_template_names.yaml

[DebugInfo] Don't assert on missing template parameter names (#211412)

The DWARF verifier reconstructs simplified template names through
DWARFTypePrinter to compare them against the original DW_AT_name. On
malformed input, a template parameter can have no recoverable name,
which tripped assert(RawName) and aborted instead of letting the
verifier report the problem.

Assisted-by: Claude

rdar://182715403
(cherry picked from commit bdddd134c1af6b0c5196ea944edf4c5c76019306)
DeltaFile
+83-0llvm/test/tools/llvm-dwarfdump/X86/verify_simplified_template_names.yaml
+4-2llvm/include/llvm/DebugInfo/DWARF/DWARFTypePrinter.h
+87-22 files

LLVM/project 09b884allvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize fmax-without-fast-math-flags.ll

[VPlan] Use VPlan::hasTailFolded in materializeConstantVectorTC. (#209502)

The current checks in materializeConstantVectorTripCount miss
tail-folded cases when vectorizing loops with fmax without fast-math
flags. Use recently added hasTailFolded helper to ensure we always bail
out on tail-folded loops.

Fixes https://github.com/llvm/llvm-project/issues/209159.
DeltaFile
+1-1llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-1llvm/test/Transforms/LoopVectorize/fmax-without-fast-math-flags.ll
+2-22 files

LLVM/project 18f4b59llvm/test/Transforms/LoopVectorize fmax-without-fast-math-flags.ll

[LV] Add test showing incorrect trip count materialization (NFC) (#209460)

Add test case showing mis-compile for
https://github.com/llvm/llvm-project/issues/209159.
DeltaFile
+105-0llvm/test/Transforms/LoopVectorize/fmax-without-fast-math-flags.ll
+105-01 files

LLVM/project 906f520mlir/include/mlir/IR BuiltinAttributes.td, mlir/lib/IR BuiltinAttributes.cpp

[mlir] Fix alignment assertion for empty DenseArrayAttr (#211730)

After #207274, libc++ fails __assume_aligned assertion in
__assume_valid_range.

https://lab.llvm.org/buildbot/#/builders/25/builds/18994

`DenseArrayAttrImpl<T>::operator ArrayRef<T>()` is just a cast of
`raw.data()`. `raw` is aligned copy of range from
from BytecodeReader done by
Builtin_DenseArrayRawDataParameter allocator.
However, if range is empty, aligned copying was
omitted, leaving unaligned `ArrayRef<char>`.

The fix is to replace unaligned `ArrayRef<>` with
aligned default constructed.
DeltaFile
+3-0mlir/include/mlir/IR/BuiltinAttributes.td
+2-0mlir/lib/IR/BuiltinAttributes.cpp
+5-02 files

LLVM/project bac13e7libc/src/string/memory_utils op_x86.h, libc/src/string/memory_utils/x86_64 inline_memcpy.h

[libc] Fix compilation when AVX is not available (#211726)
DeltaFile
+23-15libc/src/string/memory_utils/x86_64/inline_memcpy.h
+11-1libc/src/string/memory_utils/op_x86.h
+34-162 files

LLVM/project ff11bbfmlir/lib/IR BuiltinAttributes.cpp

format

Created using spr 1.3.7
DeltaFile
+1-1mlir/lib/IR/BuiltinAttributes.cpp
+1-11 files

LLVM/project 6fa48eamlir/include/mlir/IR BuiltinAttributes.td, mlir/lib/IR BuiltinAttributes.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+3-0mlir/include/mlir/IR/BuiltinAttributes.td
+2-0mlir/lib/IR/BuiltinAttributes.cpp
+5-02 files

LLVM/project 2f73fdcclang/lib/Sema SemaOverload.cpp, clang/test/SemaCXX deleted-function-deduction-failure.cpp cxx-deprecated.cpp

[clang][sema] Call expressions are constructed for undeduced deleted functions (#208488)

The deleted function path of overload resolution always constructed a CallExpr node
for the called function even if the function could not be deduced.
This case is handled in other paths by DiagnoseUseOfDecl which does perform that
test. The delete path cannot use that path though, as DiagnoseUseOfDecl rejects
deleted functions, and the entire point of this code is to permit the continued
evaluation of code even if the resolved function was deleted.

To fix this we now manually check for a complete type before continuing to construct
a potentially bogus CallExpr.
DeltaFile
+49-0clang/test/SemaCXX/deleted-function-deduction-failure.cpp
+4-2clang/test/SemaCXX/cxx-deprecated.cpp
+4-0clang/lib/Sema/SemaOverload.cpp
+3-0clang/test/SemaCXX/deduced-return-type-cxx14.cpp
+60-24 files

LLVM/project 7d13e22.github/workflows/containers/libc Dockerfile

Create symlink for llvm-link in libc docker image (#210929)
DeltaFile
+3-2.github/workflows/containers/libc/Dockerfile
+3-21 files

LLVM/project 1be72f0llvm/lib/Target/AMDGPU SISchedule.td GCNHazardRecognizer.cpp, llvm/test/CodeGen/AMDGPU wmma-hazards-gfx1250-w32.mir wmma-coexecution-valu-hazards.mir

[AMDGPU] Fix gfx1250 WMMA latencies (#202522)

- 16x16x64 FP8/BF8 WMMA run in 4 cycles, not 8. Add a 4-cycle
WriteXDL1PassWMMA write and split the FP8/BF8 InstRW by shape so that
16x16x128 FP8/BF8 (and F16/BF16) keep the 8-cycle latency.
- f8f6f4 WMMA run in 4 cycles when both matrix inputs are f4 and 8
cycles when any input is f6 or f8, instead of the previous 8/16. Update
the scheduling predicate accordingly.
DeltaFile
+0-117llvm/test/CodeGen/AMDGPU/wmma-hazards-gfx1250-w32.mir
+0-67llvm/test/CodeGen/AMDGPU/wmma-coexecution-valu-hazards.mir
+66-0llvm/test/tools/llvm-mca/AMDGPU/gfx1250-wmma-cycles.s
+17-10llvm/lib/Target/AMDGPU/SISchedule.td
+14-8llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+0-4llvm/test/CodeGen/AMDGPU/misched-into-wmma-hazard-shadow.mir
+97-2066 files

LLVM/project 8e075ecllvm/utils profcheck-xfail.txt

[ProfCheck] XFail 3 coro tests (#211719)

These are still failing after 4f8de7694a0aab7a55c21970855dd8659f3700c6.
DeltaFile
+3-0llvm/utils/profcheck-xfail.txt
+3-01 files

LLVM/project be43dcelibc/src/__support/CPP string.h, libc/test/src/__support/CPP string_test.cpp

Handle self-move-assignment
DeltaFile
+7-0libc/test/src/__support/CPP/string_test.cpp
+3-0libc/src/__support/CPP/string.h
+10-02 files

LLVM/project 5cac910libc/src/string/memory_utils utils.h op_generic.h

[libc][memory_utils] Rename shadowed load/store to avoid ADL ambiguity

When compiling with MSVC for non-x86 architectures, `op_generic.h` picks a non-builtin type for generic_v128 and friends: https://github.com/llvm/llvm-project/blob/cad3c95a89c48d714a71f6e8b4af6f3e3ab100ea/libc/src/string/memory_utils/op_generic.h#L54-L57

This means calls to `load` and `store` trigger ADL with the `load` definition in `memory_utils/utils.h` as the other candidate.
DeltaFile
+5-5libc/src/string/memory_utils/utils.h
+3-3libc/src/string/memory_utils/op_generic.h
+8-82 files

LLVM/project f5c4beelibc/src/__support/CPP string.h CMakeLists.txt, libc/test/src/__support/CPP string_test.cpp

Handling aliasing
DeltaFile
+86-40libc/src/__support/CPP/string.h
+36-9libc/test/src/__support/CPP/string_test.cpp
+1-0libc/src/__support/CPP/CMakeLists.txt
+123-493 files

LLVM/project ed99f7elibc/src/__support/CPP string.h CMakeLists.txt, libc/test/UnitTest LibcTest.cpp

[libc][cpp::string] Allocate fewer temp strings in operator= and +=

This PR generally updates `cpp::string` to avoid incidental allocations. Specifically, it:

- Updates `opreator=(string_view)` to avoid allocating a temporary string: https://github.com/llvm/llvm-project/blob/67ebc4b221c3e94028b33004cd5cd08deee95048/libc/src/__support/CPP/string.h#L106-L108
- Changes `operator+=(const string&)` to accept a `string_view` so that strings may be appended without allocation.
- Makes the `string(string_view)` constructor explicit. Before, there were non-obvious allocations because of the implicit conversion.

This PR assumes that self-assignment and self-appends are not supported with `cpp::string`, and adds debug asserts preventing them. Currently, assignment doesn't work. `cpp::string s = "abc"; s = s;` will just zero out the string. This PR is a slight regression in that `operator+=(const cpp::string&)` previously worked, but now it errors in debug mode, and would result in a use-after-free without the assert statement. I don't think self-append/self-assignment is something `cpp::string` needs to support, so I omitted it, but if a reviewer thinks this behavior is important happy to amend this PR.
DeltaFile
+24-14libc/src/__support/CPP/string.h
+13-0libc/test/src/__support/CPP/string_test.cpp
+4-1libc/test/src/stdlib/realpath_test.cpp
+4-1utils/bazel/llvm-project-overlay/libc/test/src/__support/CPP/BUILD.bazel
+2-0libc/src/__support/CPP/CMakeLists.txt
+1-1libc/test/UnitTest/LibcTest.cpp
+48-172 files not shown
+51-178 files