https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62630
--- Comment #14 from Mircea Namolaru <mircea.namolaru at inria dot fr> --- It seems to me that scalar evolution succeeds to determine the number of iterations for the case of signed longs. Looking in vectorization dump, first a symbolic expression for the number of iterations of a loop is found, and then vect_analyze_refs is entered. The problem is that the code expect an offset of a load to be an induction variable, but in our case an offset is only a cast of an induction variable, like below: _56 = (intD.6) graphite_IV.5_53; _55 = aD.1830[_56]; The offset is found not to be an affine expression, and vectorization don't succeed. But as the offset is a cast of an induction variable, it has the same behaviour as an induction variable even if formally is not one. It seems to me that somehow extending the code to support casts of induction variables will solve our this problem.