SuccessChanges

Summary

  1. [CostModel] move early exit for free intrinsics (details)
  2. [AArch64][GlobalISel] Infer whether G_PHI is going to be a FPR in regbankselect (details)
  3. [WebAssembly] Use wasm::Signature for in ObjectWriter (NFC) (details)
  4. [InstCombine] Add trunc(shr(trunc(x),c)) non-uniform vector tests (details)
  5. [AddressSanitizer] Copy type metadata to prevent miscompilation (details)
  6. [clangd] Rename evaluate() to evaluateHeuristics() (details)
Commit 745abbbb852e3c0006f22b7beade820ac978252c by spatel
[CostModel] move early exit for free intrinsics

This should be NFC unless some target was expecting that
some form of cttz/ctlz/memcpy is free in terms of size/latency
but not free in throughput cost.
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h (diff)
Commit 9d7ec46f5740d7626171c2b8198f825176991e0a by Jessica Paquette
[AArch64][GlobalISel] Infer whether G_PHI is going to be a FPR in regbankselect

Some instructions (G_LOAD, G_SELECT, G_UNMERGE_VALUES) check if their uses
will define/use FPRs (using `onlyUsesFP` and `onlyDefinesFP`).

The register bank of a use isn't necessarily known when an instruction asks for
this.

Teach `hasFPConstraints` to look at the instructions feeding into a G_PHI when
its destination bank is unknown. If any of them are FPR, assume the entire
G_PHI will also be assigned a FPR.

Since a phi can have many inputs, and those inputs can in turn be phis,
restrict the search depth to a very low number.

Also improve the docs for `hasFPConstraints` and friends a little.

This is a 0.3% code size improvement on CTMark/Bullet at -O3, and a 0.2% code
size improvement at CTMark/pairlocalalign at -O3.

Differential Revision: https://reviews.llvm.org/D88177
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/regbank-fp-use-def.mir (diff)
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.h (diff)
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp (diff)
Commit 4c41fb5ad70caeda7f03f0049fb1dff9934dfc53 by aheejin
[WebAssembly] Use wasm::Signature for in ObjectWriter (NFC)

There are two `WasmSignature` structs, one in
include/llvm/BinaryFormat/Wasm.h and the other in
lib/MC/WasmObjectWriter.cpp. I don't know why they got separated in this
way in the first place, but it seems we can unify them to use the one in
Wasm.h for all cases.

Reviewed By: dschuff, sbc100

Differential Revision: https://reviews.llvm.org/D88428
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp (diff)
Commit d047bb1cf69316b39dd67ecc5af669414be9152c by llvm-dev
[InstCombine] Add trunc(shr(trunc(x),c)) non-uniform vector tests
The file was modifiedllvm/test/Transforms/InstCombine/trunc-shift-trunc.ll (diff)
Commit 06e68f05dafb96ea5395d2fed669fccdcd07f61f by d.c.ddcc
[AddressSanitizer] Copy type metadata to prevent miscompilation

When ASan and e.g. Dead Virtual Function Elimination are enabled, the
latter will rely on type metadata to determine if certain virtual calls can be
removed. However, ASan currently does not copy type metadata, which can cause
virtual function calls to be incorrectly removed.

Differential Revision: https://reviews.llvm.org/D88368
The file was modifiedllvm/test/Instrumentation/AddressSanitizer/debug_info.ll (diff)
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp (diff)
Commit 9b1666f3ce2b02be70f8e7f82c3ec5c81262010b by usx
[clangd] Rename evaluate() to evaluateHeuristics()

Since we have 2 scoring functions (heuristics and decision forest),
renaming the existing evaluate() function to be more descriptive of the
Heuristics being evaluated in it.

Differential Revision: https://reviews.llvm.org/D88431
The file was modifiedclang-tools-extra/clangd/unittests/QualityTests.cpp (diff)
The file was modifiedclang-tools-extra/clangd/index/dex/Dex.cpp (diff)
The file was modifiedclang-tools-extra/clangd/FindSymbols.cpp (diff)
The file was modifiedclang-tools-extra/clangd/Quality.cpp (diff)
The file was modifiedclang-tools-extra/clangd/XRefs.cpp (diff)
The file was modifiedclang-tools-extra/clangd/Quality.h (diff)
The file was modifiedclang-tools-extra/clangd/CodeComplete.cpp (diff)