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 ----

Reply via email to