LLVM/project 98f029cllvm/lib/Transforms/Vectorize LoopVectorizationPlanner.cpp, llvm/test/Transforms/LoopVectorize gather-scatter.ll if-conversion-scalable.ll

[LV] Introduce -force-target-supports-gather-scatter-ops testing option (#196947)

This introduces a new force-target-supports-gather-scatter-ops CLI
option for testing. It can be used to show that the lack of
gather/scatter support prevents if-conversion.
DeltaFile
+165-0llvm/test/Transforms/LoopVectorize/gather-scatter.ll
+123-0llvm/test/Transforms/LoopVectorize/if-conversion-scalable.ll
+7-1llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.cpp
+295-13 files

LLVM/project bf9916alibclc CMakeLists.txt

[libclc][CMake] Use set instead of APPEND for LIBCLC_ARCHS_ALL initialization (#197866)
DeltaFile
+1-1libclc/CMakeLists.txt
+1-11 files

LLVM/project a9b6710llvm/test/CodeGen/X86 vector-shuffle-combining-avx512f.ll avx512-vbroadcast.ll

[X86] Avoid repeated select masks in avx512 tests (#197886)

Don't reuse the selection masks in unit tests just for expediency -
#197799 will attempt to fold these into single selects

Also remove an ancient test_vbroadcast test that hasn't actually done
anything since we started using mask vpternlog for mask expansion (and
the test now folds away anyhow).
DeltaFile
+38-20llvm/test/CodeGen/X86/vector-shuffle-combining-avx512f.ll
+0-17llvm/test/CodeGen/X86/avx512-vbroadcast.ll
+9-6llvm/test/CodeGen/X86/fma-fneg-combine.ll
+47-433 files

LLVM/project 7395584mlir/include/mlir/Dialect/Tosa/IR TosaOps.td, mlir/lib/Dialect/Tosa/IR TosaOps.cpp

[mlir][tosa] Use traits to check output type aligns with input type (#193961)

Reduces code duplication and ensures the output shape aligns with the
input shape.
DeltaFile
+24-0mlir/test/Dialect/Tosa/verifier.mlir
+1-15mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+6-2mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td
+7-0mlir/test/Dialect/Tosa/ops.mlir
+38-174 files

LLVM/project 47e1dbeclang/lib/Tooling/Syntax Tokens.cpp, clang/unittests/Tooling/Syntax TokensTest.cpp

[Syntax] Append EOF token to truncated expanded token stream when the parser halts prematurely (#196861)

Fixes #196244.

This PR addresses cases where this assertion is triggered in
`TokenCollector::Builder::build()`:
https://github.com/llvm/llvm-project/blob/dff356d47cfc4413f78c858dd8339cb1c9fca255/clang/lib/Tooling/Syntax/Tokens.cpp#L715

`TokenCollector` collects the expanded token stream by registering a
token watcher callback in the preprocessor. Normally, the preprocessor
calls the callback for every token up to and including the `tok::eof`
token. However, when the parser hits a hard limit such as exceeding the
maximum function scope depth (this is the case covered by #196244) or
exceeding the bracket depth limit, it bails out via
`Parser::cutOffParsing()`. `cutOffParsing` forces the current token to
`eof`, but the token watcher callback is never called for it. The result
is a truncated token stream.

Fix by checking if `ExpandedTokens` is missing the final `tok::eof`. If

    [4 lines not shown]
DeltaFile
+16-3clang/unittests/Tooling/Syntax/TokensTest.cpp
+9-1clang/lib/Tooling/Syntax/Tokens.cpp
+25-42 files

LLVM/project 2ee06c8libc/src/__support/OSUtil/linux/syscall_wrappers mmap.h

[libc] Fix truncation warning/error in #197694 (#197889)
DeltaFile
+1-1libc/src/__support/OSUtil/linux/syscall_wrappers/mmap.h
+1-11 files

LLVM/project 86225b7libcxx/include/__ranges enumerate_view.h, libcxx/test/std/ranges/range.adaptors/range.enumerate adaptor.pass.cpp

[libc++][ranges] Fix missing `forward` in `views::enumerate` (#197635)

This fixes #197404

---------

Co-authored-by: danielcm585 <danielchristianmandolang at gmail.com>
DeltaFile
+35-0libcxx/test/std/ranges/range.adaptors/range.enumerate/adaptor.pass.cpp
+3-3libcxx/include/__ranges/enumerate_view.h
+38-32 files

LLVM/project eeffaf8lldb/source/Core IOHandlerCursesGUI.cpp Debugger.cpp, lldb/test/API/commands/gui/console-output TestGuiConsoleOutput.py main.cpp

Revert "Fix for #177160 : [lldb] Real-time console pane for output in lldb tui (#197473) (#197884)

This reverts commit cd25475854ecf2b564f91db7f6267edca7868d41.

This test is timing out on GreenDragon
(https://ci.swift.org/view/all/job/llvm.org/job/as-lldb-cmake/42857/)

the PR https://github.com/llvm/llvm-project/pull/197473
DeltaFile
+23-357lldb/source/Core/IOHandlerCursesGUI.cpp
+0-162lldb/test/API/commands/gui/console-output/TestGuiConsoleOutput.py
+0-39lldb/test/API/commands/gui/console-output/main.cpp
+0-6lldb/source/Core/Debugger.cpp
+0-4lldb/source/Core/CoreProperties.td
+0-2lldb/test/API/commands/gui/console-output/Makefile
+23-5702 files not shown
+23-5738 files

LLVM/project 9144646lldb/source/Target AssertFrameRecognizer.cpp, lldb/test/Shell/Recognizer assert.test

[lldb][windows] add assert frame recognizer Windows (#197282)

This patch implements `AssertFrameRecognizer` on Windows.

Since the Windows C Runtime can be either statically or dynamically
linked, lldb can't match the module name to be able to support both.
Therefore, the matches on `abort` and `_wassert` do not check the name
of the module.

The `assert.test` test was also relaxed to check the Windows error
format (`Exception 0xc0000409`), since Windows surfaces `__fastfail` as
a `STATUS_STACK_BUFFER_OVERRUN` exception rather than a POSIX signal.

rdar://175328961
DeltaFile
+40-13lldb/source/Target/AssertFrameRecognizer.cpp
+1-2lldb/test/Shell/Recognizer/assert.test
+41-152 files

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

Merge branch 'main' into users/gbossu/isScalarWithPredication.check.interleave.test
DeltaFile
+7,377-7,311llvm/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
+38,738-10,9982,743 files not shown
+216,670-77,2582,749 files

LLVM/project 225ada9llvm/include/llvm/IR CmpPredicate.h, llvm/lib/IR Instructions.cpp

[ConstraintElim] use icmpLike when creating facts to support trunc nuw to i1 (#197550)

Adding `trunc nuw %x to i1` support in facts the same way as `icmp ne %x, 0`
DeltaFile
+158-0llvm/test/Transforms/ConstraintElimination/trunc.ll
+12-17llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+4-0llvm/lib/IR/Instructions.cpp
+3-0llvm/include/llvm/IR/CmpPredicate.h
+177-174 files

LLVM/project fd9aeedcompiler-rt/lib/builtins/arm divdf3.S

[compiler-rt] [arm] Fix compilation on non-ELF targets (#197880)

0c539fc057b2e838dc30c7e3229110d0c0e168c8 added new assembly files,
with a literal '.rodata' directive. This doesn't build for non-ELF
targets. Switch to the preexisting CONST_SECTION macro instead, which
expands to either '.const', '.section .rdata,"rd"' or '.section .rodata'
depending on platform.
DeltaFile
+1-1compiler-rt/lib/builtins/arm/divdf3.S
+1-11 files

LLVM/project 00e31abclang/docs ReleaseNotes.rst, clang/lib/Sema SemaDecl.cpp

[Sema] Reject unqualified lookup of local nested class name (#192678)

Clang incorrectly accepts unqualified use of a nested class declared
inside a local class, even when it is not visible in the current scope.

Fixes #184622.
DeltaFile
+77-0clang/test/Sema/unqualified-lookup-local-class.cpp
+22-2clang/lib/Sema/SemaDecl.cpp
+1-0clang/docs/ReleaseNotes.rst
+100-23 files

LLVM/project 954a729clang/lib/AST/ByteCode InterpBuiltin.cpp, clang/test/AST/ByteCode records.cpp

[clang][bytecode] Diagnose reading mutable fields in Memcpy op (#197197)
DeltaFile
+6-4clang/lib/AST/ByteCode/InterpBuiltin.cpp
+10-0clang/test/AST/ByteCode/records.cpp
+16-42 files

LLVM/project de3d924mlir/test/Dialect/Transform inliner-legality.mlir

keep the test
DeltaFile
+18-0mlir/test/Dialect/Transform/inliner-legality.mlir
+18-01 files

LLVM/project 89cded0mlir/docs/Dialects LLVM.md, mlir/lib/IR Verifier.cpp

address comments
DeltaFile
+5-9mlir/lib/IR/Verifier.cpp
+1-2mlir/docs/Dialects/LLVM.md
+6-112 files

LLVM/project b3426acllvm/test/Transforms/LoopVectorize gather-scatter.ll if-conversion-scalable.ll

Use --check-globals none
DeltaFile
+1-12llvm/test/Transforms/LoopVectorize/gather-scatter.ll
+1-10llvm/test/Transforms/LoopVectorize/if-conversion-scalable.ll
+2-222 files

LLVM/project 7ca8218mlir/lib/Dialect/Transform/IR Utils.cpp

[mlir] only verify moved symbols in transform

When merging named sequences from an external module in the transform
interpreter, only run the inliner verification for operations that were
actually moved rather than all pre-existing operations. This avoids
verifying inlining conditions for operations that wouldn't be inlined by
this logic, and is also more parsimonious.

Reverts #195770. This is a more generic fix.
DeltaFile
+56-50mlir/lib/Dialect/Transform/IR/Utils.cpp
+56-501 files

LLVM/project 6b124bfmlir/lib/Dialect/Transform/IR Utils.cpp, mlir/test/Dialect/Transform inliner-legality.mlir

Revert "[MLIR][Transform] Don't error when a structurally inlinable call exists (#195770)"

This reverts commit 10db733a21d070816dc38f8953c8060e4b8e9a6d.
DeltaFile
+2-30mlir/lib/Dialect/Transform/IR/Utils.cpp
+0-18mlir/test/Dialect/Transform/inliner-legality.mlir
+2-482 files

LLVM/project 8ce5868llvm/include/llvm/IR InstructionListener.h Function.h, llvm/lib/IR Function.cpp Value.cpp

review
DeltaFile
+10-4llvm/include/llvm/IR/InstructionListener.h
+0-11llvm/lib/IR/Function.cpp
+2-3llvm/lib/IR/Value.cpp
+1-1llvm/include/llvm/IR/Function.h
+1-1llvm/lib/IR/Instruction.cpp
+14-205 files

LLVM/project 0c8606cllvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp, llvm/test/MC/AMDGPU literals.s

[AMDGPU] Error out on too large lit() constants
DeltaFile
+7-7llvm/test/MC/AMDGPU/literals.s
+9-1llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+16-82 files

LLVM/project 4221a20clang/lib/AST ItaniumMangle.cpp

[Clang][NFC] Replace AdditionalAbiTags pointer parameters with ArrayRef (#191253)
DeltaFile
+64-62clang/lib/AST/ItaniumMangle.cpp
+64-621 files

LLVM/project 4aeb7e3libcxx/docs/Status Cxx2cIssues.csv, libcxx/include mdspan

[libc++] LWG4266: `layout_stride::mapping` should treat empty mappings as exhaustive (#191629)

Fixes: #171325

---------

Co-authored-by: S. B. Tam <cpplearner at outlook.com>
DeltaFile
+15-27libcxx/include/__mdspan/layout_stride.h
+13-6libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp
+5-5libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp
+1-1libcxx/include/mdspan
+1-1libcxx/docs/Status/Cxx2cIssues.csv
+35-405 files

LLVM/project 54789b9libcxx/include/__mdspan extents.h, libcxx/test/std/containers/views/mdspan/extents ctor_from_integral.pass.cpp

[libc++][mdspan] Refactor bounds checking in `std::extents` (#197001)

Perform bounds checking and casting to `index_type` together, which is
necessary for checking move-only index arguments.

See also: https://github.com/llvm/llvm-project/pull/196574

---------

Co-authored-by: A. Jiang <de34 at live.cn>
DeltaFile
+46-32libcxx/include/__mdspan/extents.h
+11-0libcxx/test/std/containers/views/mdspan/extents/ctor_from_integral.pass.cpp
+57-322 files

LLVM/project f68c7f7llvm/include/llvm/IR ConstantRange.h, llvm/lib/IR ConstantRange.cpp

[ConstantRange] Optimize multiply with nowrap (#197481)

multiplyWithNoWrap() may currently call all of multiply(), umul_sat()
and smul_sat(), where the former may perform up to 6 double-width
multiplies, and the other two perform 2 and 4 single-width multiplies
respectively.

Optimize this a bit by moving the nowrap handling directly into
multiply(): If we're already doing double-width multiplies, then doing
more on top of that is unnecessary.

Additionally, this also allows us to use only single-width multiplies
for the nuw case. (This is also possible for the nsw case, but the
implementation would be more involved.)
DeltaFile
+43-48llvm/unittests/IR/ConstantRangeTest.cpp
+37-38llvm/lib/IR/ConstantRange.cpp
+5-12llvm/include/llvm/IR/ConstantRange.h
+85-983 files

LLVM/project d2a54bellvm/include/llvm/TableGen Record.h, llvm/lib/TableGen Record.cpp

[TableGen] Fix assertion when initializing a bit from !cond or !foldl (#197224)

TableGen hit an assertion when trying to initialize a bit in a bits
field from an unfolded !cond expression like this:

    let word{0} = !cond(val : flag);

Fixed by changing CondOpInit::getBits to check for the case that it
already has a bit type, matching the pattern used in OpInit::getBit and
elsewhere.

Fixes #197217
DeltaFile
+19-0llvm/test/TableGen/getbit-foldl.td
+19-0llvm/test/TableGen/getbit-cond.td
+4-4llvm/lib/TableGen/Record.cpp
+3-1llvm/include/llvm/TableGen/Record.h
+45-54 files

LLVM/project a9927f5lldb/include/lldb/Core EmulateInstruction.h, lldb/source/Core EmulateInstruction.cpp

[lldb] Use Expected in BreakpointLocationPredictor (#197730)

This makes it easier to not have long-lived Status objects. Forgetting
to clear those was a problem I ran into in #196891.
DeltaFile
+28-32lldb/source/Core/EmulateInstruction.cpp
+15-20lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp
+12-14lldb/source/Plugins/Process/Utility/NativeProcessSoftwareSingleStep.cpp
+4-4lldb/include/lldb/Core/EmulateInstruction.h
+3-3lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.h
+62-735 files

LLVM/project 5d9e711libc/src/__support/OSUtil/linux/syscall_wrappers mmap.h CMakeLists.txt, libc/test/src/sys/mman/linux mmap_test.cpp CMakeLists.txt

[libc] Add some checks to the mmap wrapper (#197694)

- check that the discarded offset bits (both high and low) are zero
(page alignment is checked in the kernel, but this cannot be done values
we discard for mmap2, nor for truncated values on 32-bit systems)
- check for negative offsets (the kernel interface uses unsigned values,
but our off_t is signed)

One thing I'm not checking, but other implementations do, is the size of
the allocation (after page alignment) fits into a ptrdiff_t. I didn't do
that now as it requires figuring how to get (and whether to cache) the
page size. This is mainly relevant for 32-bit systems as no 64-bit
system will let you allocate 2^63 bytes of (virtual) memory.
DeltaFile
+37-2libc/test/src/sys/mman/linux/mmap_test.cpp
+14-8libc/src/__support/OSUtil/linux/syscall_wrappers/mmap.h
+3-1libc/test/src/sys/mman/linux/CMakeLists.txt
+1-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+55-114 files

LLVM/project 7cfb9bcbolt/include/bolt/Profile YAMLProfileReader.h, bolt/lib/Profile YAMLProfileReader.cpp

[BOLT] Allow name matching stale profiles with infer-stale-profile (#165493)

Exact name matching of a YAML profile to a BinaryFunction is
conditional on `profileMatches`:

https://github.com/llvm/llvm-project/blob/5c7854c8ed1998650af6f01761df385712f5295a/bolt/lib/Profile/YAMLProfileReader.cpp#L419-L421

With stale profile, both function hash and block count can mismatch, so
exact name matching fails. After it, we run other function matching
plus fallback exact-name-matching of unused profiles:


https://github.com/llvm/llvm-project/blob/a7e4e2521e77f638e6740059109725c9a4d89453/bolt/lib/Profile/YAMLProfileReader.cpp#L833-L843

In effect, for stale profile, both with and without stale matching, we
ignore the strong signal of exactly matching function name, run a batch
of looser checks, and finally assign the profile in the fallback.

Change to record exact-name-matching profiles if stale matching is used

    [3 lines not shown]
DeltaFile
+16-6bolt/lib/Profile/YAMLProfileReader.cpp
+9-3bolt/test/X86/reader-stale-yaml.test
+3-0bolt/include/bolt/Profile/YAMLProfileReader.h
+28-93 files

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

[GlobalISel][AArch64] Add lowering for G_UMULFIX (#197018)

G_UMULFIX is generated for LLVM intrinsic `llvm.umul.fix`.
DeltaFile
+179-0llvm/test/CodeGen/AArch64/GlobalISel/legalize-umulfix.mir
+114-55llvm/test/CodeGen/AArch64/umul_fix.ll
+25-8llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+12-12llvm/test/CodeGen/AArch64/GlobalISel/legalize-smulfix.mir
+3-2llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
+1-1llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
+334-781 files not shown
+335-797 files