[SCEV] Use fact that B >u 0 for A <u B in applyLoopGuards.
authorFlorian Hahn <flo@fhahn.com>
Wed, 1 Feb 2023 16:51:17 +0000 (16:51 +0000)
committerFlorian Hahn <flo@fhahn.com>
Wed, 1 Feb 2023 16:51:18 +0000 (16:51 +0000)
commit62bd944e42472b7aa01fe6f662d848d76a96b8f8
tree81a9a42b3efcf0f7424058edd29c3030bf78573f
parent55eea6eff96a93e8641abb667c8d1c41d4b28bd1
[SCEV] Use fact that B >u 0 for A <u B in applyLoopGuards.

If LHS <u RHS holds, RHS should be guaranteed to be > 0. By using
using 'umax(RHS, 1) -1' instead of 'RHS - 1' the results in
applyLoopGuards can be improved in some cases.

Note that the TODO for the tests mentioned the max BTC being 11, but
unless I am missing something 10 should be correct.

https://alive2.llvm.org/ce/z/44nP7F

Reviewed By: mkazantsev

Differential Revision: https://reviews.llvm.org/D126503
llvm/lib/Analysis/ScalarEvolution.cpp
llvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-guard-info.ll