diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ChangeLog.graphite | 8 | ||||
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/id-25.c | 34 |
5 files changed, 56 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aa87d604ef3..92cae3887ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2010-08-02 Sebastian Pop <sebastian.pop@amd.com> + * graphite-sese-to-poly.c + (rewrite_commutative_reductions_out_of_ssa_loop): Call + scev_analyzable_p only on is_gimple_reg + +2010-08-02 Sebastian Pop <sebastian.pop@amd.com> + * graphite-sese-to-poly.c (propagate_expr_outside_region): New. (rewrite_close_phi_out_of_ssa): Propagate constant values or parametric expressions outside the scop region. diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 0ed18ef8a53..65607ec3054 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,11 @@ +2010-07-26 Sebastian Pop <sebastian.pop@amd.com> + + * graphite-sese-to-poly.c + (rewrite_commutative_reductions_out_of_ssa_loop): Call + scev_analyzable_p only on is_gimple_reg + + * gcc.dg/graphite/id-25.c: New. + 2010-07-22 Sebastian Pop <sebastian.pop@amd.com> * graphite-sese-to-poly.c (propagate_expr_outside_region): New. diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 574a25b2213..ae8518f6981 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2950,12 +2950,15 @@ rewrite_commutative_reductions_out_of_ssa_loop (loop_p loop, { gimple_stmt_iterator gsi; edge exit = single_exit (loop); + tree res; if (!exit) return; for (gsi = gsi_start_phis (exit->dest); !gsi_end_p (gsi); gsi_next (&gsi)) - if (!scev_analyzable_p (gimple_phi_result (gsi_stmt (gsi)), region)) + if ((res = gimple_phi_result (gsi_stmt (gsi))) + && is_gimple_reg (res) + && !scev_analyzable_p (res, region)) rewrite_commutative_reductions_out_of_ssa_close_phi (gsi_stmt (gsi), reductions); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d1c803610e1..a3d5f7e258e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2010-08-02 Sebastian Pop <sebastian.pop@amd.com> + * gcc.dg/graphite/id-25.c: New. + +2010-08-02 Sebastian Pop <sebastian.pop@amd.com> + * gcc.dg/graphite/run-id-5.c: New. * gcc.dg/graphite/run-id-6.c: New. * gfortran.dg/graphite/id-21.f: New. diff --git a/gcc/testsuite/gcc.dg/graphite/id-25.c b/gcc/testsuite/gcc.dg/graphite/id-25.c new file mode 100644 index 00000000000..b719972d00d --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/id-25.c @@ -0,0 +1,34 @@ +typedef struct +{ + int mvd[2][(16/4)][(16/4)][2]; +} Macroblock; +typedef struct +{ + int part_size[8][2]; +} InputParameters; +typedef struct +{ + Macroblock *mb_data; + short****** pred_mv; + short****** all_mv; +} ImageParameters; +extern InputParameters *input; +extern ImageParameters *img; +int writeMotionVector8x8 (void) +{ + int i, j, k, l, m; + int step_h = input->part_size[7][0]; + int step_v = input->part_size[7][1]; + Macroblock* currMB = &img->mb_data[9]; + int refindex = 0; + short****** all_mv = img->all_mv; + short****** pred_mv = img->pred_mv; + + for (k=0; k<2; k++) + { + int curr_mvd = all_mv[2][8][0][8][7][8] - pred_mv[2][7][0][8][7][0]; + for (l=0; l < step_v; l++) + for (m=0; m < step_h; m++) + currMB->mvd[0][8][9][8] = curr_mvd; + } +} |