Changes

Summary

  1. [VE] disable cmake caches until resolved (details)
  2. Enable retry on failed git operations (details)
Commit 99821277c29d5565a8f5c6cda80ea8b0faf097b4 by simon.moll
[VE] disable cmake caches until resolved
The file was modifiedbuildbot/osuosl/master/config/builders.py (diff)
Commit b83568a0e50fe1d8fd419721f67e82c4bda5eaf0 by kuhnel
Enable retry on failed git operations

This should address issues like
`fatal: unable to access 'https://github.com/llvm/llvm-project.git/': Could not resolve host: github.com`
in
http://lab.llvm.org:8011/#/builders/131/builds/7

Differential Revision: https://reviews.llvm.org/D91945
The file was modifiedzorg/buildbot/process/factory.py (diff)

Summary

  1. [Driver] Support libc++ in MSVC (details)
  2. [analyzer]  [NFC] Implement a wrapper SValBuilder::getCastedMemRegionVal for similar functionality on region cast (details)
  3. [mlir][ArmSVE] Add basic mask generation operations (details)
  4. [Demangle][Rust] Parse path backreferences (details)
  5. [Demangle][Rust] Parse type backreferences (details)
  6. [Demangle][Rust] Parse const backreferences (details)
  7. [lldb] Set return status to failed when adding a command error (details)
  8. [JITLink] Clarify LinkGraph::splitBlock contract in comment. (details)
  9. Revert "[mlir][ArmSVE] Add basic mask generation operations" (details)
  10. [mlir] fix integer type mismatch in alloc conversion to LLVM (details)
  11. [mlir] Make MemRef element type extensible (details)
  12. [mlir] support memref of memref in standard-to-llvm conversion (details)
  13. [clang] Apply MS ABI details on __builtin_ms_va_list on non-windows platforms on x86_64 (details)
  14. [DAG] Allow isNullOrNullSplat to see truncated zeroes (details)
Commit 9625d61eb66c12388875e081b63ebed7e42c6bbb by phosek
[Driver] Support libc++ in MSVC

This implements support for using libc++ headers and library in the MSVC
toolchain.  We only support libc++ that is a part of the toolchain, and
not headers installed elsewhere on the system.

Differential Revision: https://reviews.llvm.org/D101479
The file was addedclang/test/Driver/Inputs/msvc_libcxx_tree/usr/include/c++/v1/.keep
The file was addedclang/test/Driver/msvc-libcxx.cpp
The file was addedclang/test/Driver/Inputs/msvc_libcxx_tree/usr/lib/x86_64-pc-windows-msvc/.keep
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/Driver/ToolChains/MSVC.cpp
The file was addedclang/test/Driver/Inputs/msvc_libcxx_tree/usr/include/x86_64-pc-windows-msvc/c++/v1/.keep
The file was addedclang/test/Driver/Inputs/msvc_libcxx_tree/usr/lib/.keep
The file was addedclang/test/Driver/Inputs/msvc_libcxx_tree/usr/bin/.keep
Commit d3a6181e82ca8d1c49c1bc049c07233bd8c38550 by dpetrov
[analyzer]  [NFC] Implement a wrapper SValBuilder::getCastedMemRegionVal for similar functionality on region cast

Summary: Replaced code on region cast with a function-wrapper SValBuilder::getCastedMemRegionVal. This is a next step of code refining due to suggestions in D103319.

Differential Revision: https://reviews.llvm.org/D103803
The file was modifiedclang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
The file was modifiedclang/lib/StaticAnalyzer/Core/SValBuilder.cpp
Commit 392af6a78bb7dfb87a24ed66db598c1d09ac756b by javier.setoain
[mlir][ArmSVE] Add basic mask generation operations

These `arm_sve.cmp` functions are needed to generate scalable vector
masks as long as scalable vectors are not part of the standard types.
Once in standard, these can be removed and `std.cmp` can be used
instead.

Differential Revision: https://reviews.llvm.org/D103473
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVE.td
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/StandardOpsBase.td
The file was modifiedmlir/lib/Dialect/ArmSVE/IR/ArmSVEDialect.cpp
The file was modifiedmlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp
The file was modifiedmlir/test/Dialect/ArmSVE/roundtrip.mlir
The file was modifiedmlir/test/Target/LLVMIR/arm-sve.mlir
The file was modifiedmlir/test/Dialect/ArmSVE/legalize-for-llvm.mlir
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/Ops.td
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVEDialect.h
The file was modifiedmlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
Commit 82b7e822d00596ec8a02490f1d662ed0fa872b54 by tomasz.miasko
[Demangle][Rust] Parse path backreferences

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D103459
The file was modifiedllvm/test/Demangle/rust.test
The file was modifiedllvm/lib/Demangle/RustDemangle.cpp
The file was modifiedllvm/include/llvm/Demangle/RustDemangle.h
Commit 44d63c57c129f6c784460070c30cb736dbbdb927 by tomasz.miasko
[Demangle][Rust] Parse type backreferences

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D103847
The file was modifiedllvm/lib/Demangle/RustDemangle.cpp
The file was modifiedllvm/test/Demangle/rust.test
Commit f9a79356f223035ccf0b4d0666f8779061eddc61 by tomasz.miasko
[Demangle][Rust] Parse const backreferences

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D103848
The file was modifiedllvm/test/Demangle/rust.test
The file was modifiedllvm/lib/Demangle/RustDemangle.cpp
Commit e05b03cf4f45ac5ee63c59a3464e7d484884645c by david.spickett
[lldb] Set return status to failed when adding a command error

There is a common pattern:
result.AppendError(...);
result.SetStatus(eReturnStatusFailed);

I found that some commands don't actually "fail" but only
print "error: ..." because the second line got missed.

This can cause you to miss a failed command when you're
using the Python interface during testing.
(and produce some confusing script results)

I did not find any place where you would want to add
an error without setting the return status, so just
set eReturnStatusFailed whenever you add an error to
a command result.

This change does not remove any of the now redundant
SetStatus. This should allow us to see if there are any
tests that have commands unexpectedly fail with this change.
(the test suite passes for me but I don't have access to all
the systems we cover so there could be some corner cases)

Some tests that failed on x86 and AArch64 have been modified
to work with the new behaviour.

Differential Revision: https://reviews.llvm.org/D103701
The file was addedlldb/test/Shell/Commands/command-backtrace-parser-1.test
The file was removedlldb/test/Shell/Commands/command-backtrace.test
The file was addedlldb/test/Shell/Commands/command-backtrace-parser-2.test
The file was modifiedlldb/test/API/commands/register/register/register_command/TestRegisters.py
The file was modifiedlldb/source/Interpreter/CommandReturnObject.cpp
Commit 4f16ccdab2d39ed1fb718ce646507c07b6c2de46 by Lang Hames
[JITLink] Clarify LinkGraph::splitBlock contract in comment.
The file was modifiedllvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
Commit 57546f5b2224fe6d56081463dec2acc5964a61e8 by javier.setoain
Revert "[mlir][ArmSVE] Add basic mask generation operations"

This reverts commit 392af6a78bb7dfb87a24ed66db598c1d09ac756b
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/StandardOpsBase.td
The file was modifiedmlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/Ops.td
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVE.td
The file was modifiedmlir/test/Dialect/ArmSVE/legalize-for-llvm.mlir
The file was modifiedmlir/include/mlir/Dialect/ArmSVE/ArmSVEDialect.h
The file was modifiedmlir/lib/Dialect/ArmSVE/IR/ArmSVEDialect.cpp
The file was modifiedmlir/test/Target/LLVMIR/arm-sve.mlir
The file was modifiedmlir/lib/Dialect/ArmSVE/Transforms/LegalizeForLLVMExport.cpp
The file was modifiedmlir/test/Dialect/ArmSVE/roundtrip.mlir
Commit 3c70a82e2891949801bd5da68159cd8156659f6f by zinenko
[mlir] fix integer type mismatch in alloc conversion to LLVM

Some places in the alloc-like op conversion use the converted index type
whereas other places use the pointer-sized integer type, which may not be the
same. Consistently use the converted index type, similarly to other address
calculations.

Reviewed By: pifon2a

Differential Revision: https://reviews.llvm.org/D103826
The file was modifiedmlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
The file was modifiedmlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
Commit ada9aa5a228200cb71269c371308e82c42fd4abc by zinenko
[mlir] Make MemRef element type extensible

Historically, MemRef only supported a restricted list of element types that
were known to be storable in memory. This is unnecessarily restrictive given
the open nature of MLIR's type system. Allow types to opt into being used as
MemRef elements by implementing a type interface. For now, the interface is
merely a declaration with no methods. Later, methods to query, e.g., the type
size or whether a type can alias elements of another type may be added.

Harden the "standard"-to-LLVM conversion against memrefs with non-builtin
types.

See https://llvm.discourse.group/t/rfc-memref-of-custom-types/3558.

Depends On D103826

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D103827
The file was modifiedmlir/docs/Dialects/Builtin.md
The file was modifiedmlir/test/IR/parser.mlir
The file was modifiedmlir/include/mlir/IR/BuiltinTypes.td
The file was modifiedmlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
The file was modifiedmlir/lib/IR/BuiltinTypes.cpp
The file was modifiedmlir/test/lib/Dialect/Test/CMakeLists.txt
The file was modifiedmlir/test/lib/Dialect/Test/TestTypeDefs.td
The file was modifiedmlir/include/mlir/IR/CMakeLists.txt
The file was modifiedmlir/include/mlir/IR/BuiltinTypes.h
The file was modifiedmlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
The file was modifiedmlir/test/Conversion/StandardToLLVM/invalid.mlir
Commit c59ce1f6257c88330c1f1757c36d59d34fe29248 by zinenko
[mlir] support memref of memref in standard-to-llvm conversion

Now that memref supports arbitrary element types, add support for memref of
memref and make sure it is properly converted to the LLVM dialect. The type
support itself avoids adding the interface to the memref type itself similarly
to other built-in types. This allows the shape, and therefore byte size, of the
memref descriptor to remain a lowering aspect that is easier to customize and
evolve as opposed to sanctifying it in the data layout specification for the
memref type itself.

Factor out the code previously in a testing pass to live in a dedicated data
layout analysis and use that analysis in the conversion to compute the
allocation size for memref of memref. Other conversions will be ported
separately.

Depends On D103827

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D103828
The file was modifiedmlir/test/IR/parser.mlir
The file was modifiedmlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
The file was modifiedmlir/include/mlir/IR/BuiltinTypes.h
The file was modifiedmlir/include/mlir/IR/BuiltinTypes.td
The file was modifiedmlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
The file was modifiedmlir/test/Conversion/StandardToLLVM/convert-dynamic-memref-ops.mlir
The file was modifiedmlir/lib/Analysis/CMakeLists.txt
The file was addedmlir/lib/Analysis/DataLayoutAnalysis.cpp
The file was modifiedmlir/include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h
The file was modifiedmlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
The file was addedmlir/include/mlir/Analysis/DataLayoutAnalysis.h
The file was modifiedmlir/include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h
The file was modifiedmlir/test/lib/Dialect/DLTI/TestDataLayoutQuery.cpp
Commit b34da6ff9c1d72816d0c9b87d5f0e879850bc424 by martin
[clang] Apply MS ABI details on __builtin_ms_va_list on non-windows platforms on x86_64

This fixes inconsistencies in the ms_abi.c testcase.

Also add a couple cases of missing double pointers in the windows part
of the testcase; the outcome of building that testcase on windows hasn't
changed, but the previous form of the test was imprecise (checking
for "%[[STRUCT_FOO]]*" when clang actually generates "%[[STRUCT_FOO]]**"),
which still used to match.

Ideally this would share code with the native Windows case, but
X86_64ABIInfo and WinX86_64ABIInfo aren't superclasses/subclasses of
each other so it's impractical, and the code to share currently only
consists of a couple lines.

Differential Revision: https://reviews.llvm.org/D103837
The file was modifiedclang/lib/CodeGen/TargetInfo.cpp
The file was modifiedclang/test/CodeGen/ms_abi.c
Commit b889c6ee9911b72a58986d528f42dd18cbdf92d7 by david.green
[DAG] Allow isNullOrNullSplat to see truncated zeroes

This sets the AllowTruncation flag on isConstOrConstSplat in
isNullOrNullSplat, allowing it to see truncated constant zeroes on
architectures such as AArch64, where only a i32.i64 are legal. As a
truncation of 0 is always 0, this should always be valid, allowing some
extra folding to happen including some of the cases from D103755.

Differential Revision: https://reviews.llvm.org/D103756
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vrem-sdnode-rv64.ll
The file was modifiedllvm/test/CodeGen/AArch64/vecreduce-bool.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vdiv-sdnode-rv64.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vrem-sdnode-rv32.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vdiv-sdnode-rv32.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp