SuccessChanges

Summary

  1. [Debug-Info] handle DW_CC_pass_by_value/DW_CC_pass_by_reference under strict DWARF. (details)
  2. [flang] Change capitalization for Adjustl/r (details)
  3. AArch64: support atomic zext/sextloads (details)
  4. [mlir][linalg] Cleanup left over uses of deprecated LinalgOp methods. (details)
  5. [SelectionDAG] Extend FoldConstantVectorArithmetic to SPLAT_VECTOR (details)
  6. [libcxx] Don't use an undefined '+' in unsigned/octal/hexal print formats (details)
  7. [lldb][NFC] Remove a redundant call to weak_ptr::expired (details)
  8. [test] Fix accidental match in parent_recurse_depth.s (details)
  9. Re-land ae4303b42c, "Track PHI values through register coalescing" (details)
Commit fbfd717197671769e92b1c00b08391a7cac62fed by esme.yi
[Debug-Info] handle DW_CC_pass_by_value/DW_CC_pass_by_reference under strict DWARF.

Summary: When -strict-dwarf=true is specified, the calling convention info
    DW_CC_pass_by_value or DW_CC_pass_by_reference can only be generated at DWARF5.

Reviewed By: shchenz, dblaikie

Differential Revision: https://reviews.llvm.org/D103300
The file was modifiedllvm/test/DebugInfo/Generic/pass-by-value.ll
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
Commit 263a89c9b788b4c6bc174dc169dca2a3b729ea02 by diana.picus
[flang] Change capitalization for Adjustl/r

Rename the definitions of the character runtime functions Adjustl and
Adjustr (used to be AdjustL and AdjustR respectively).

Also add unit tests (and move some of the helpers to the top of the
file, since they're now used in more than one place).

Differential Revision: https://reviews.llvm.org/D103392
The file was modifiedflang/runtime/character.cpp
The file was modifiedflang/unittests/RuntimeGTest/CharacterTest.cpp
Commit b16ddd03753df778181d500d0ea3e2400c35e6fe by Tim Northover
AArch64: support atomic zext/sextloads
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
Commit 67b1c37d9fd1283d7015edb9c0fecb24362751f4 by gysit
[mlir][linalg] Cleanup left over uses of deprecated LinalgOp methods.

Replace all remaining uses of deprecated Structured Op Interface methods. This patch is based on https://reviews.llvm.org/D103394.

Differential Revision: https://reviews.llvm.org/D103673
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
The file was modifiedmlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
The file was modifiedmlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
Commit aec9cbbeb863dbd3ea362f99eb8b84dfbdb568a2 by fraser
[SelectionDAG] Extend FoldConstantVectorArithmetic to SPLAT_VECTOR

This patch extends the SelectionDAG's ability to constant-fold vector
arithmetic to include support for SPLAT_VECTOR. This is not only for
scalable-vector types but also for fixed-length vector types, which
helps Hexagon in a couple of cases.

The original RISC-V test case was in fact an infinite DAGCombine loop.
The pattern `and (truncate v1), (truncate v2)` can be combined to
`truncate (and v1, v2)` but the truncate can similarly be combined back
to `truncate (and v1, v2)` (but, crucially, only when one of `v1` or
`v2` is a constant vector).

It wasn't exposed in on fixed-length types because a TRUNCATE of a
constant BUILD_VECTOR was folded into the BUILD_VECTOR itself, whereas
this did not happen for the equivalent (scalable-vector) SPLAT_VECTOR.

Reviewed By: RKSimon, craig.topper

Differential Revision: https://reviews.llvm.org/D103246
The file was addedllvm/test/CodeGen/RISCV/rvv/constant-folding.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vremu-sdnode-rv32.ll
The file was modifiedllvm/test/CodeGen/Hexagon/isel-memory-vNi1.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vdivu-sdnode-rv32.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
The file was modifiedllvm/test/CodeGen/AArch64/sve-expand-div.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-integer-rv32.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vdivu-sdnode-rv64.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vremu-sdnode-rv64.ll
Commit b0cc7b53a53f180c0b70b8b2f02999be78a32395 by martin
[libcxx] Don't use an undefined '+' in unsigned/octal/hexal print formats

If building code like this:

    unsigned long val = 1000;
    snprintf(buf, sizeof(buf), "%+lu", val);

with clang, clang warns

    warning: flag '+' results in undefined behavior with 'u' conversion specifier [-Wformat]

Therefore, don't construct such undefined format strings. (There's
no compiler warnings here, as the compiler can't inspect dynamically
assembled format strings.)

This fixes number formatting in mingw-w64 if built with
`__USE_MINGW_ANSI_STDIO` defined (there, the '+' flag causes a
leading plus to be printed when formatting unsigned numbers too,
while the '+' flag doesn't cause any extra leading plus in other
stdio implementations).

Differential Revision: https://reviews.llvm.org/D103444
The file was modifiedlibcxx/src/locale.cpp
Commit 0a655c62eca878cd5f366c08a4a5fee1b8723ce8 by Raphael Isemann
[lldb][NFC] Remove a redundant call to weak_ptr::expired

The `lock` call directly will check for us if the `weak_ptr` is expired and
returns an invalid `shared_ptr` (which we correctly handle), so this check is
redundant.

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D103442
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
Commit d7e0948242b8b05c1ebc0f46bf7aa37273a1d521 by thomasp
[test] Fix accidental match in parent_recurse_depth.s

The CHECK-NOT directives in
tools/llvm-dwarfdump/X86/parent_recurse_depth.s can accidentally match
something in the path of the object file created by yaml2obj, for
example:

llvm-project/llvm/test/tools/llvm-dwarfdump/X86/parent_recurse_depth.s:13:12:
error: ONE-NOT: excluded string found in input
           ^
<stdin>:1:22: note: found here
builds/llvm-projects/mainline/release/test/tools/llvm-dwarfdump/X86/Output/parent_recurse_depth.s.tmp.o: file format elf64-x86-64
                     ^~~~

This commit alleviate this issue by consuming the file name from the
output, forcing all the CHECK-NOT to match what comes after.

Reviewed By: Higuoxing

Differential Revision: https://reviews.llvm.org/D103676
The file was modifiedllvm/test/tools/llvm-dwarfdump/X86/parent_recurse_depth.s
Commit 4501928eb2fdec9af1908e008fa748924db0f688 by jeremy.morse
Re-land ae4303b42c, "Track PHI values through register coalescing"

Was reverted in 0507fc2ffc9, in phi-coalesce-subreg.mir I'd explicitly named
some passes to run instead of specifying a range. As a result some
two-address-instrs weren't correctly rewritten and the verifier got upset.
Original commit message:

[DebugInstrRef][2/3] Track PHI values through register coalescing

In the instruction referencing variable location model, we store variable
locations that point at PHIs in MachineFunction during register allocation.
Unfortunately, register coalescing can substantially change the locations
of registers, and so that PHI-variable-location side table needs
maintenence during the pass.

This patch builds an index from the side table, and whenever a vreg gets
coalesced into another vreg, update the index to record the new vreg that
the PHI happens in. It also accepts a limited range of subregister
coalescing, for example merging a subregister into a larger class.

Differential Revision: https://reviews.llvm.org/D86813
The file was modifiedllvm/lib/CodeGen/RegisterCoalescer.cpp
The file was addedllvm/test/DebugInfo/MIR/InstrRef/phi-coalescing.mir
The file was addedllvm/test/DebugInfo/MIR/InstrRef/phi-coalesce-subreg.mir