https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114589
Andrew Macleod <amacleod at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aldyh at gcc dot gnu.org --- Comment #11 from Andrew Macleod <amacleod at redhat dot com> --- (In reply to Richard Biener from comment #10) > > from pointer to unsigned long. Possibly IVOPTs replacing the pointer > IV with an integer IV (but nothing else really) is the issue here. > Yes, this would be my guess. with pointers we make an attempt to track the symbolic base in VRP, whereas with integers there is not usually a need. So when it comes to the loop there is no attempt to track that the lower bound of the loop/PHI is o_3... Instead, we see a non-zero integral range. PHI analysis can detect that it is increasing, but it has no way to recognize a starting base range. Its possible when prange has points to analysis implemented it might be able to determine something (ie look at what the integer is derived from, looking for a cast in the past to determine a base) , but moving back and forth to an integer certainly complicated things.