------- Additional Comments From rakdver at gcc dot gnu dot org 2005-01-18 11:35 ------- The relevant part of the code looks like this:
do { k_2 = phi(...,k_1); k_1 = k_2 + 1 } while (k_2 != endvalue) /* k_1 unused outside of the loop */ Ivopts decide that it makes more sense to perform increment after the comparison: while (1) { k_2 = phi(...,k_1); if (k_2 == endvalue) break; k_1 = k_2 + 1 } Which sort of is true; number of executions of the increment is decreased by one per loop execution, and also we need one less register, since k_1 and k_2 can be coalesced now. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14741