SuccessChanges

Summary

  1. [FPEnv] Evaluate constant expressions under non-default rounding modes (details)
  2. [DSE] Add tests with lifetime.end that only mark parts of the obj as dead. (details)
  3. [DSE] Unify & fix mem terminator location checks. (details)
  4. [TableGen] Add/edit Doxygen comments to match "TableGen Backend Developer's Guide." (details)
  5. Run test on particular target only (details)
  6. MachineCSE.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI. (details)
  7. [DAG] Fold vector mul(x,0)/mul(x,1) to a clearing mask (details)
Commit 6314f412a83d61e293e3696d4afe1797a4001ac4 by sepavloff
[FPEnv] Evaluate constant expressions under non-default rounding modes

The change implements evaluation of constant floating point expressions
under non-default rounding modes. The main objective was to support
evaluation of global variable initializers, where constant rounding mode
may be specified by `#pragma STDC FENV_ROUND`.

Differential Revision: https://reviews.llvm.org/D87822
The file was modifiedclang/lib/AST/Expr.cpp
The file was modifiedclang/include/clang/AST/Expr.h
The file was modifiedclang/lib/Sema/SemaAttr.cpp
The file was addedclang/test/AST/const-fpfeatures.cpp
The file was modifiedclang/include/clang/Basic/DiagnosticASTKinds.td
The file was modifiedclang/lib/AST/ExprConstant.cpp
The file was modifiedclang/lib/AST/TextNodeDumper.cpp
The file was addedclang/test/AST/const-fpfeatures-diag.c
The file was addedclang/test/AST/const-fpfeatures.c
Commit b2c0193afa2b25afc718bc32751147c5dc1bfd63 by flo
[DSE] Add tests with lifetime.end that only mark parts of the obj as dead.

llvm.lifetime.end accepts a size parameters to limit the size of the
location marked as dead. Add a few tests with stores to locations after
the part that has been marked as dead.
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/lifetime.ll
Commit 8f0466edc0cb3782af4108bfe8840e2ad3de9b49 by flo
[DSE] Unify & fix mem terminator location checks.

When looking for memory defs killed by memory terminators the code
currently incorrectly ignores the size argument of llvm.lifetime.end.

This patch updates the code to use isMemTerminator and updates
isMemTerminator to use isOverwrite() to make sure locations that are
outside the range marked as dead by llvm.lifetime.end are not
considered. Note that isOverwrite is only used for llvm.lifetime.end,
because free-like functions make the whole underlying object dead.
The file was modifiedllvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/lifetime.ll
Commit 50a3df585d91ea3c8bd677f3f202931caf6aa8c7 by paul
[TableGen] Add/edit Doxygen comments to match "TableGen Backend Developer's Guide."
The file was modifiedllvm/docs/TableGen/BackGuide.rst
The file was modifiedllvm/include/llvm/TableGen/Record.h
Commit f91b9c0f9858bb3d6ff4dd1fb494e83633eefed8 by sepavloff
Run test on particular target only

The test `AST/const-fpfeatures-diag.c` requires setting strict FP
semantics, so it fails on targets where support of such semantic
is limited.
The file was modifiedclang/test/AST/const-fpfeatures-diag.c
Commit decc1944f38f4205bf53829bf91e3c98ea6fc7ac by llvm-dev
MachineCSE.cpp - use auto const& iterators in for-range loops to avoid copies. NFCI.
The file was modifiedllvm/lib/CodeGen/MachineCSE.cpp
Commit a61272a900296573902dfce99274fd335239a4d3 by llvm-dev
[DAG] Fold vector mul(x,0)/mul(x,1) to a clearing mask

If we're multiplying all elements of a vector by '0' or '1' then we can more efficiently perform this as a clearing mask (that is likely to further simplify to a shuffle blend).

This was noticed when reviewing D87502 but seems to help idiv/irem by constant cases even more as '0'/'1' values are often used for 'passthrough' cases.

Differential Revision: https://reviews.llvm.org/D88225
The file was modifiedllvm/test/CodeGen/X86/vector-idiv-sdiv-256.ll
The file was modifiedllvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modifiedllvm/test/CodeGen/AArch64/srem-seteq-vec-nonsplat.ll
The file was modifiedllvm/test/CodeGen/X86/srem-seteq-vec-nonsplat.ll
The file was modifiedllvm/test/CodeGen/X86/vector-idiv-sdiv-128.ll
The file was modifiedllvm/test/CodeGen/X86/vector-mul.ll
The file was modifiedllvm/test/CodeGen/X86/vector-trunc-math.ll