[SCEV] Improve AddRecs' range computation in Expensive Range Sharpening mode
authorMax Kazantsev <mkazantsev@azul.com>
Mon, 10 Apr 2023 09:37:10 +0000 (16:37 +0700)
committerMax Kazantsev <mkazantsev@azul.com>
Mon, 10 Apr 2023 09:37:10 +0000 (16:37 +0700)
commit5b96b13fdffebc1e81cdca3466e75b0d0e584c27
tree4651a1b2e2cf48d608fc502b79fc5ddf02d96075
parent097b70254678d947feaa108c73f11adec27473d9
[SCEV] Improve AddRecs' range computation in Expensive Range Sharpening mode

Apply loop guards to AddRec's start in range computation for
non-self-wrapping AddRecs.

According to CT measurements, this has a wide negative compile time impact,
so we hold it in expensive range sharpening mode where it's not so critical.
However, we need to find a way to share benefits of this mode with default mode.

Patch by Aleksandr Popov!

Differential Revision: https://reviews.llvm.org/D147557
Reviewed By: mkazantsev
llvm/lib/Analysis/ScalarEvolution.cpp
llvm/test/Analysis/ScalarEvolution/decrementing_addrecs.ll