I noticed that when you enable vectorization for the autopar testcases most of them fail. This is because vectorization introduces new loops and tests that make the CFG complicated enough for autopar to give up. But then autopar is a high-level transform and should be done earlier anyway. Which is what the following does - move it right after GRAPHITE (IIRC autopar may re-use GRAPHITE dependence analysis, so it has to come after it) and IV canonicalization (not sure why we don't do that earlier).
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk. Richard. 2013-05-16 Richard Biener <rguent...@suse.de> * passes.c (init_optimization_passes): Move pass_parallelize_loops earlier, after GRAPHITE transforms and IV canonicalization. Index: gcc/passes.c =================================================================== *** gcc/passes.c (revision 198962) --- gcc/passes.c (working copy) *************** init_optimization_passes (void) *** 1475,1480 **** --- 1475,1481 ---- NEXT_PASS (pass_dce_loop); } NEXT_PASS (pass_iv_canon); + NEXT_PASS (pass_parallelize_loops); NEXT_PASS (pass_if_conversion); NEXT_PASS (pass_vectorize); { *************** init_optimization_passes (void) *** 1484,1490 **** NEXT_PASS (pass_predcom); NEXT_PASS (pass_complete_unroll); NEXT_PASS (pass_slp_vectorize); - NEXT_PASS (pass_parallelize_loops); NEXT_PASS (pass_loop_prefetch); NEXT_PASS (pass_iv_optimize); NEXT_PASS (pass_lim); --- 1485,1490 ----