SuccessChanges

Summary

  1. [LVI] Remove unnecessary lambda capture (NFC) (details)
  2. [LV] Check opt-for-size before expanding runtime checks. (details)
  3. [InstSimplify] Protect against more poison in SimplifyWithOpReplaced (PR47322) (details)
Commit a400a617217db7da1957cf1e102062aff98716e8 by nikita.ppv
[LVI] Remove unnecessary lambda capture (NFC)
The file was modifiedllvm/lib/Analysis/LazyValueInfo.cpp (diff)
Commit 5067f4b6261c07d5df94bf18407235d83ce33861 by flo
[LV] Check opt-for-size before expanding runtime checks.

Move bail out when optimizing for size before runtime check generation.
In that case, we do not use the result of the expansion, the expanded
instruction will be dead and cleaned up later.

By doing the check before expanding the runtime-checks, we can save a
bit of unnecessary work.
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp (diff)
Commit a5be86fde5de2c253aa19704bf4e4854f1936f8c by nikita.ppv
[InstSimplify] Protect against more poison in SimplifyWithOpReplaced (PR47322)

Replace the check for poison-producing instructions in
SimplifyWithOpReplaced() with the generic helper canCreatePoison()
that properly handles poisonous shifts and thus avoids the problem
from PR47322.

This additionally fixes a bug in IIQ.UseInstrInfo=false mode, which
previously could have caused this code to ignore poison flags.
Setting UseInstrInfo=false should reduce the possible optimizations,
not increase them.

This is not a full solution to the problem, as poison could be
introduced more indirectly. This is just a minimal, easy to backport
fix.

Differential Revision: https://reviews.llvm.org/D86834
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/select.ll (diff)