Changes

Summary

  1. [lldb] Print embedded nuls in char arrays (PR44649) (details)
  2. [lldb] Make the thread_local g_global_boundary accessed from a single file (details)
  3. [SystemZ] Bugfix and refactorization of mem-mem operations (details)
  4. [SystemZ] Reapply memcmp and memcpy patches. (details)
  5. [lldb] Fix TestStackCorefile.py for ca0ce99fc8 (details)
  6. [mlir][linalg] Verify every LinalgOp has a body. (details)
  7. [Flang] flang-omp-report replace std::vector's with llvm::SmallVector (details)
  8. [mlir][linalg] Expose flag to control nofold attribute when padding. (details)
  9. [MLIR] Fix assert crash when an unregistered dialect op is encountered (details)
Commit ca0ce99fc87c9a49b4c4a69cc6e88594bf6eb13c by pavel
[lldb] Print embedded nuls in char arrays (PR44649)

When we know the bounds of the array, print any embedded nuls instead of
treating them as terminators. An exception to this rule is made for the
nul character at the very end of the string. We don't print that, as
otherwise 99% of the strings would end in \0. This way the strings
usually come out the same as how the user typed it into the compiler
(char foo[] = "with\0nuls"). It also matches how they come out in gdb.

This resolves a FIXME left from D111399, and leaves another FIXME for dealing
with nul characters in "escape-non-printables=false" mode. In this mode the
characters cause the entire summary string to be terminated prematurely.

Differential Revision: https://reviews.llvm.org/D111634
The file was modifiedlldb/test/Shell/SymbolFile/DWARF/x86/DW_AT_const_value.s
The file was modifiedlldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
The file was modifiedlldb/source/Core/ValueObject.cpp
The file was modifiedlldb/test/API/functionalities/data-formatter/stringprinter/main.cpp
Commit 7106f588567b59acb17c77f6116ba433b6226333 by martin
[lldb] Make the thread_local g_global_boundary accessed from a single file

This makes the compiler generated code for accessing the thread local
variable much simpler (no need for wrapper functions and weak pointers
to potential init functions), and can avoid toolchain bugs regarding how
to access TLS variables.

In particular, this fixes LLDB when built with current GCC/binutils for
MinGW, see https://github.com/msys2/MINGW-packages/issues/8868.

Differential Revision: https://reviews.llvm.org/D111779
The file was modifiedlldb/include/lldb/Utility/ReproducerInstrumentation.h
The file was modifiedlldb/source/Utility/ReproducerInstrumentation.cpp
Commit 00baad35b2a366437e210a0701173247a3ad5468 by paulsson
[SystemZ] Bugfix and refactorization of mem-mem operations

This patch fixes the bug that consisted of treating variable / immediate
length mem operations (such as memcpy, memset, ...) differently. The variable
length case needs to have the length minus 1 passed due to the use of EXRL
target instructions. However, the DAGCombiner can convert a register length
argument into a constant one, and whenever that happened one byte too little
would end up being performed.

This is also a refactorization by reducing the number of opcodes and variants
involved. For any opcode (variable or constant length), only the length minus
one is passed on to the ISD node. The rest of the logic is now instead
handled during isel pseudo expansion.

Review: Ulrich Weigand

Differential Revision: https://reviews.llvm.org/D111729
The file was modifiedllvm/lib/Target/SystemZ/SystemZISelLowering.cpp
The file was modifiedllvm/test/CodeGen/SystemZ/mverify-optypes.mir
The file was modifiedllvm/lib/Target/SystemZ/SystemZInstrInfo.td
The file was modifiedllvm/test/CodeGen/SystemZ/memset-05.ll
The file was modifiedllvm/lib/Target/SystemZ/SystemZInstrFormats.td
The file was modifiedllvm/lib/Target/SystemZ/SystemZOperators.td
The file was modifiedllvm/lib/Target/SystemZ/SystemZInstrFP.td
The file was modifiedllvm/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp
Commit a33e4c8ae925e99e565b2ca5dcda8ec2edbb78ee by paulsson
[SystemZ] Reapply memcmp and memcpy patches.

This reverts 3562076 and includes some refactoring as well.

Review: Ulrich Weigand

Differential Revision: https://reviews.llvm.org/D111733
The file was modifiedllvm/lib/Target/SystemZ/SystemZInstrFormats.td
The file was modifiedllvm/test/CodeGen/SystemZ/loop-03.ll
The file was modifiedllvm/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll
The file was modifiedllvm/test/CodeGen/SystemZ/memcpy-01.ll
The file was modifiedllvm/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp
The file was modifiedllvm/lib/Target/SystemZ/SystemZISelLowering.cpp
The file was modifiedllvm/test/CodeGen/SystemZ/memcmp-01.ll
Commit fa639eda6535732a5fd79c3f551d5a667b810963 by pavel
[lldb] Fix TestStackCorefile.py for ca0ce99fc8
The file was modifiedlldb/test/API/macosx/stack-corefile/main.c
Commit eaa52750ce38e5c5d7c6b681476f50da9d75bc54 by gysit
[mlir][linalg] Verify every LinalgOp has a body.

After removing the last LinalgOps that have no region attached we can verify there is a region. The patch performs the following changes:
- Move the SingleBlockImplicitTerminator trait further up the the structured op base class.
- Adapt the LinalgOp verification since the trait only check if there is 0 or 1 block.
- Introduce a getBlock method on the LinalgOp interface.
- Access the LinalgOp body using either getBlock() or getBody() if the concrete operation type is known.

This patch is a follow up to https://reviews.llvm.org/D111233.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D111393
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Generalization.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
The file was modifiedmlir/lib/Dialect/Linalg/Utils/Utils.cpp
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
The file was modifiedmlir/test/Dialect/Linalg/invalid.mlir
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
The file was modifiedmlir/test/lib/Dialect/Test/TestOps.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Interchange.cpp
The file was modifiedmlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp
Commit 0b48b015b5740ac9e91b21ad4e61188e80b211cf by mats.petersson
[Flang] flang-omp-report replace std::vector's with llvm::SmallVector

This patch replaces all uses of std::vector with llvm::SmallVector in the flang-omp-report plugin.
This is a one of several patches focusing on switching containers from STL to LLVM's ADT library.

Reviewed By: Leporacanthicus

Differential Revision: https://reviews.llvm.org/D111709
The file was modifiedflang/examples/flang-omp-report-plugin/flang-omp-report-visitor.h
Commit a8f69be61fc8892db50b7e37707915ece0344452 by gysit
[mlir][linalg] Expose flag to control nofold attribute when padding.

Setting the nofold attribute enables packing an operand. At the moment, the attribute is set by default. The pack introduces a callback to control the flag.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D111718
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
The file was modifiedmlir/test/Dialect/Linalg/tile-and-pad-tensors.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
Commit 05fb26062c32788c7b320937705fcac772ab21ff by uday
[MLIR] Fix assert crash when an unregistered dialect op is encountered

Fix assert crash when an unregistered dialect op is encountered during
parsing and `-allow-unregistered-dialect' isn't on. Instead, emit an
error.

While on this, clean up "registered" vs "loaded" on `getDialect()` and
local clang-tidy warnings.

https://llvm.discourse.group/t/assert-behavior-on-unregistered-dialect-ops/4402

Differential Revision: https://reviews.llvm.org/D111628
The file was modifiedmlir/lib/IR/Operation.cpp
The file was modifiedmlir/lib/Parser/Parser.cpp
The file was modifiedmlir/include/mlir/IR/Operation.h
The file was modifiedmlir/include/mlir/IR/OperationSupport.h
The file was modifiedmlir/test/IR/invalid-unregistered.mlir