[all-commits] [llvm/llvm-project] 91790c: [indvars[ Fix pr49802 by checking for SCEVCouldNot...
Philip Reames via All-commits
all-commits at lists.llvm.org
Thu Apr 1 17:56:21 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 91790c67850d588edb3a0e195a388c0e450f1723
https://github.com/llvm/llvm-project/commit/91790c67850d588edb3a0e195a388c0e450f1723
Author: Philip Reames <listmail at philipreames.com>
Date: 2021-04-01 (Thu, 01 Apr 2021)
Changed paths:
M llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
Log Message:
-----------
[indvars[ Fix pr49802 by checking for SCEVCouldNotCompute
The code is assuming that having an exact exit count for the loop implies that exit counts for every exit are known. This used to be true, but when we added handling for dead exits we broke this invariant. The new invariant is that an exact loop count implies that any exits non trivially dead have exit counts.
We could have fixed this by either a) explicitly checking for a dead exit, or b) just testing for SCEVCouldNotCompute. I chose the second as it was simpler.
(Debugging this took longer than it should have since I'd mistyped the original assert and it wasn't checking what it was meant to...)
p.s. Sorry for the lack of test case. Getting things into a state to actually hit this is difficult and fragile. The original repro involves loop-deletion leaving SCEV in a slightly inprecise state which lets us bypass other transforms in IndVarSimplify on the way to this one. All of my attempts to separate it into a standalone test failed.
More information about the All-commits
mailing list