Changes

Summary

  1. [clang] disable implicit moves when not in CPlusPLus (details)
  2. [libc][Obvious] Some clean work with memmove. (details)
  3. [MLIR] Improve op parse error message for AtLeastNOperands trait (details)
  4. [ARM] Teach DemandedVectorElts about VMOVN lanes (details)
  5. Recommit "[LAA] Support pointer phis in loop by analyzing each incoming pointer." (details)
  6. [runtimes] Check whether -nostdinc++ and -nostdlib++ are supported (details)
  7. [mlir][linalg] Fold ExtractSliceOps during tiling. (details)
Commit 2d6829bbbe6877920d9be1db93b9f3fc85b43d10 by mizvekov
[clang] disable implicit moves when not in CPlusPLus

See PR51842.

This fixes an assert firing in the static analyzer, triggered by implicit moves
in blocks in C mode:

This also simplifies the AST a little bit when compiling non C++ code,
as the xvalue implicit casts are not inserted.

We keep and test that the nrvo flag is still being set on the VarDecls,
as that is still a bit beneficial while not really making anything
more complicated.

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D109654
The file was addedclang/test/AST/nrvo.c
The file was modifiedclang/lib/Sema/SemaStmt.cpp
The file was addedclang/test/Analysis/blocks-nrvo.c
Commit 3582828748282708ea33cadb587b637d9ffa8546 by chennngwang
[libc][Obvious] Some clean work with memmove.
The file was modifiedlibc/src/string/memmove.h
The file was modifiedlibc/src/string/memmove.cpp
The file was modifiedlibc/test/src/string/memmove_test.cpp
Commit a91cfd1990255aea545683083329c2ad3fee4518 by uday
[MLIR] Improve op parse error message for AtLeastNOperands trait

Improve parse error message for "at least N operands" op trait.

Differential Revision: https://reviews.llvm.org/D109747
The file was modifiedmlir/lib/IR/Operation.cpp
Commit 5a6dfbb8cd26376120e16ceae650f6c9b7a00950 by david.green
[ARM] Teach DemandedVectorElts about VMOVN lanes

The class of instructions that write to narrow top/bottom lanes only
demand the even or odd elements of the input lanes. Which means that a
pair of VMOVNT; VMOVNB demands no lanes from the original input. This
teaches that to instcombine from the target hooks available through
ARMTTIImpl.

Differential Revision: https://reviews.llvm.org/D109325
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
The file was modifiedllvm/lib/Target/ARM/ARMTargetTransformInfo.h
The file was modifiedllvm/test/Transforms/InstCombine/ARM/mve-narrow.ll
Commit e248d69036dad6f65584dd8faac4e2d5a3816e12 by flo
Recommit "[LAA] Support pointer phis in loop by analyzing each incoming pointer."

SCEV does not look through non-header PHIs inside the loop. Such phis
can be analyzed by adding separate accesses for each incoming pointer
value.

This results in 2 more loops vectorized in SPEC2000/186.crafty and
avoids regressions when sinking instructions before vectorizing.

Fixes PR50296, PR50288.

Reviewed By: Meinersbur

Differential Revision: https://reviews.llvm.org/D102266
The file was modifiedllvm/include/llvm/Analysis/LoopAccessAnalysis.h
The file was modifiedllvm/test/Analysis/LoopAccessAnalysis/pointer-phis.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/vectorize-pointer-phis.ll
The file was modifiedllvm/test/Transforms/LoopDistribute/pointer-phi-in-loop.ll
The file was modifiedllvm/lib/Analysis/LoopAccessAnalysis.cpp
Commit 125e8ef10ba468d41b27bf9c7569c1a0520d1ab9 by martin
[runtimes] Check whether -nostdinc++ and -nostdlib++ are supported

Don't blindly assume they're supported - GCC doesn't support -nostdlib++.

The llvm-project/runtimes directory is supposed to allow building the
runtimes standalone from a newly built Clang, and thus should allow
building with other compilers too.

Differential Revision: https://reviews.llvm.org/D109719
The file was modifiedruntimes/CMakeLists.txt
Commit 44a889778ceeb6bcb11702f5c940306905a3821e by gysit
[mlir][linalg] Fold ExtractSliceOps during tiling.

Add the makeComposedExtractSliceOp method that creates an ExtractSliceOp and folds chains of ExtractSliceOps by computing the sum of their offsets and by multiplying their strides.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D109601
The file was modifiedmlir/lib/Dialect/StandardOps/Utils/Utils.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/Utils/Utils.h
The file was modifiedmlir/lib/Dialect/Linalg/Utils/Utils.cpp
The file was modifiedmlir/test/Dialect/Linalg/tile-tensors.mlir
The file was modifiedmlir/include/mlir/Dialect/StandardOps/Utils/Utils.h