summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ChangeLog.graphite8
-rw-r--r--gcc/graphite-sese-to-poly.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-25.c34
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;
+ }
+}