http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34265
Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |irar at gcc dot gnu.org, | |wschmidt at gcc dot gnu.org --- Comment #36 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2011-09-17 17:09:59 UTC --- The pr 34265 and 49006 have been fixed by revision 176984: Author: wschmidt Date: Sun Jul 31 18:58:06 2011 UTC (6 weeks, 5 days ago) Changed paths: 2 Log Message: 2011-07-29 Bill Schmidt <wschm...@linux.vnet.ibm.com> PR tree-optimization/49749 * tree-ssa-reassoc.c (get_rank): New forward declaration. (PHI_LOOP_BIAS): New macro. (phi_rank): New function. (loop_carried_phi): Likewise. (propagate_rank): Likewise. (get_rank): Add calls to phi_rank and propagate_rank. The following table compare the execution time and the line at which the vectorizer reports the vectorization for the twelve variants described in comment #34, showing that they are now all vectorized: revision 176983 176984 178905 num den rot time line time line time line o o o 2.154s 243 2.154s 243 2.133s 243 u o o 1.973s 243 1.970s 243 2.035s 243 o u o 2.024s 243 2.023s 243 1.977s 243 u u o 3.053s 1.817s 234 1.831s 234 o o u 3.015s 1.839s 234 1.841s 234 u o u 3.030s 1.828s 234 1.816s 234 o u u 3.049s 1.818s 234 1.834s 234 u u u 3.059s 1.820s 234 1.818s 234 o o f 3.010s 1.825s 234 1.822s 234 u o f 3.033s 1.836s 234 1.826s 234 o u f 3.061s 1.814s 234 1.828s 234 u u f 3.058s 1.825s 234 1.812s 234 graphite 1.937s 243 1.938s 243 1.912s 243 (num, den and rot stand for numerator, denominator and rotate respectively; o, u, and f stand for original, unrolled, and folded. Since now gcc has (at least for this class of code;) the three properties I expect from a good optimizer: (1) it does not destroy the hand optimization I have done; (2) it optimizes the original code; (3) it has a consistent behavior across variants; I think a test should be added to the test suite to check that none of these properties are lost in future revisions.