------- Comment #7 from rguenth at gcc dot gnu dot org 2008-08-28 15:09 ------- I still think that handling NULL from evolution_part_in_loop_num is the correct thing to do. Even if you need to move this check to the analysis phase.
The interesting thing is that the access function during vect_analyze_scalar_cycles_1 is {2, +, 1}_1 which is because after the vectorized part of the loop the prologue remains which has a non-constant evolution start. So with the reasoning that you analyzed the access function of the original loop properly you can probably strip the conversion that confuses you at just vect_update_ivs_after_vectorizer. (Or store the relevant information during analysis where the evolution is still simple enough) This would fix the ICE, but I wonder if it may cause wrong code because of mismatched types somehow. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36630