SuccessChanges

Summary

  1. [LegalizeDAG][RISCV][PowerPC][AMDGPU][WebAssembly] Improve expansion of SETONE/SETUEQ on targets without SETO/SETUO. (details)
  2. [clangd] Avoid recursion in TargetFinder::add() (details)
  3. [NewPM] Run non-trivial loop unswitching under -O2/3/s/z (details)
  4. [RISCV] Use vmerge.vim for llvm.riscv.vfmerge with a 0.0 scalar operand. (details)
  5. [FunctionAttrs] Precommit tests for willreturn inference. (details)
  6. [libc++] Add a missing `<_Compare>` template argument. (details)
Commit 03c8d6a0c4bd0016bdfd1e53e6878696fe6412ed by craig.topper
[LegalizeDAG][RISCV][PowerPC][AMDGPU][WebAssembly] Improve expansion of SETONE/SETUEQ on targets without SETO/SETUO.

If SETO/SETUO aren't legal, they'll be expanded and we'll end up
with 3 comparisons.

SETONE is equivalent to (SETOGT || SETOLT)
so if one of those operations is supported use that expansion. We
don't need both since we can commute the operands to make the other.

SETUEQ can be implemented with !(SETOGT || SETOLT) or (SETULE && SETUGE).
I've only implemented the first because it didn't look like most of the
affected targets had legal SETULE/SETUGE.

Reviewed By: frasercrmck, tlively, nemanjai

Differential Revision: https://reviews.llvm.org/D94450
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/test/CodeGen/RISCV/double-select-fcmp.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/setcc.ll
The file was modifiedllvm/test/CodeGen/RISCV/double-fcmp.ll
The file was modifiedllvm/test/CodeGen/WebAssembly/simd-comparisons.ll
The file was modifiedllvm/test/CodeGen/PowerPC/vsx.ll
The file was modifiedllvm/test/CodeGen/RISCV/float-select-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/half-select-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-fp-rv32.ll
The file was modifiedllvm/test/CodeGen/WebAssembly/comparisons-f32.ll
The file was modifiedllvm/test/CodeGen/WebAssembly/comparisons-f64.ll
The file was modifiedllvm/test/CodeGen/RISCV/double-br-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/float-br-fcmp.ll
The file was modifiedllvm/test/CodeGen/PowerPC/spe.ll
The file was modifiedllvm/test/CodeGen/RISCV/half-br-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/float-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/half-fcmp.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/setcc-fp-rv64.ll
Commit 4718ec01669b01373180f4cd1256c6e2dd6f3999 by zeratul976
[clangd] Avoid recursion in TargetFinder::add()

Fixes https://github.com/clangd/clangd/issues/633

Differential Revision: https://reviews.llvm.org/D94382
The file was modifiedclang-tools-extra/clangd/FindTarget.cpp
The file was modifiedclang-tools-extra/clangd/unittests/FindTargetTests.cpp
The file was modifiedclang-tools-extra/clangd/FindTarget.h
Commit f748e92295515ea7b39cd687a718915b559de6ec by aeubanks
[NewPM] Run non-trivial loop unswitching under -O2/3/s/z

Fixes https://bugs.llvm.org/show_bug.cgi?id=48715.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D94448
The file was modifiedllvm/lib/Passes/PassBuilder.cpp
The file was addedllvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll
The file was modifiedllvm/test/Transforms/LoopUnroll/opt-levels.ll
Commit a14040bd4d902419b53cf0ad576caa0f01eccf5c by craig.topper
[RISCV] Use vmerge.vim for llvm.riscv.vfmerge with a 0.0 scalar operand.

We can use a 0 immediate to avoid needing to materialize 0 into
an FPR first.

Reviewed By: frasercrmck

Differential Revision: https://reviews.llvm.org/D94459
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vfmerge-rv64.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vfmerge-rv32.ll
Commit 08d4a50467ecef1337f8d7d9763c7738861bd6f6 by flo
[FunctionAttrs] Precommit tests for willreturn inference.

Tests for D94502.
The file was addedllvm/test/Transforms/FunctionAttrs/willreturn.ll
Commit eef4bdbb34de2dda657668c2ab39397e61e36a0a by arthur.j.odwyer
[libc++] Add a missing `<_Compare>` template argument.

Sometimes `_Compare` is an lvalue reference type, so letting it be
deduced is pretty much always wrong. (Well, less efficient than
it could be, anyway.)

Differential Revision: https://reviews.llvm.org/D93562
The file was modifiedlibcxx/include/algorithm