check that all the scev applied ops have are dominated by their defs
authorAditya Kumar <aditya.k7@samsung.com>
Fri, 4 Dec 2015 21:38:56 +0000 (21:38 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Fri, 4 Dec 2015 21:38:56 +0000 (21:38 +0000)
2015-12-02  Aditya Kumar  <aditya.k7@samsung.com>
    Sebastian Pop  <s.pop@samsung.com>

        * gcc.dg/graphite/id-29.c: New test.

gcc/ChangeLog:

2015-12-02  Aditya Kumar  <aditya.k7@samsung.com>
    Sebastian Pop  <s.pop@samsung.com>

        * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user): Improve debug.
        (get_rename_from_scev): Check that all the ops in an expression have their uses dominated by corresponding defs.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231310

gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/id-29.c [new file with mode: 0644]

index 4223a1ecb5bf6dd8b1a2675364315ab0df71497e..0ad4e901e1c427318c25dcfce44629a6c8315c2a 100644 (file)
@@ -1,3 +1,11 @@
+2015-12-04  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
+       * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user):
+       Improve debug.
+       (get_rename_from_scev): Check that all the ops in an expression
+       have their uses dominated by corresponding defs.
+
 2015-12-04  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
index 20eb80f52d440443b460b82f75a69d3bfa9417ab..ed2a896f043116a2cb696a07319366e8c333d9ee 100644 (file)
@@ -1116,16 +1116,17 @@ translate_isl_ast_node_user (__isl_keep isl_ast_node *node,
   build_iv_mapping (iv_map, gbb, user_expr, ip, pbb->scop->scop_info->region);
   isl_ast_expr_free (user_expr);
 
+  basic_block old_bb = GBB_BB (gbb);
   if (dump_file)
     {
-      fprintf (dump_file, "[codegen] copying from basic block\n");
+      fprintf (dump_file,
+              "[codegen] copying from bb_%d on edge (bb_%d, bb_%d)\n",
+              old_bb->index, next_e->src->index, next_e->dest->index);
       print_loops_bb (dump_file, GBB_BB (gbb), 0, 3);
-      fprintf (dump_file, "[codegen] to new basic block\n");
-      print_loops_bb (dump_file, next_e->src, 0, 3);
+
     }
 
-  next_e = copy_bb_and_scalar_dependences (GBB_BB (gbb), next_e,
-                                          iv_map);
+  next_e = copy_bb_and_scalar_dependences (old_bb, next_e, iv_map);
 
   iv_map.release ();
 
@@ -1598,8 +1599,8 @@ translate_isl_ast_to_gimple::collect_all_ssa_names (tree new_expr,
     }
 }
 
-/* This is abridged version of the function:
-   tree.c:substitute_in_expr (tree exp, tree f, tree r). */
+/* This is abridged version of the function copied from:
+   tree.c:substitute_in_expr (tree exp, tree f, tree r).  */
 
 static tree
 substitute_ssa_name (tree exp, tree f, tree r)
@@ -1804,15 +1805,23 @@ get_rename_from_scev (tree old_name, gimple_seq *stmts, loop_p loop,
     }
 
   new_expr = rename_all_uses (new_expr, new_bb, old_bb);
-  /* We should check all the operands and all of them should dominate the use at
+
+  /* We check all the operands and all of them should dominate the use at
      new_expr.  */
-  if (TREE_CODE (new_expr) == SSA_NAME)
+  auto_vec <tree, 2> new_ssa_names;
+  collect_all_ssa_names (new_expr, &new_ssa_names);
+  int i;
+  tree new_ssa_name;
+  FOR_EACH_VEC_ELT (new_ssa_names, i, new_ssa_name)
     {
-      basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (new_expr));
-      if (bb && !dominated_by_p (CDI_DOMINATORS, new_bb, bb))
+      if (TREE_CODE (new_ssa_name) == SSA_NAME)
        {
-         codegen_error = true;
-         return build_zero_cst (TREE_TYPE (old_name));
+         basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (new_ssa_name));
+         if (bb && !dominated_by_p (CDI_DOMINATORS, new_bb, bb))
+           {
+             codegen_error = true;
+             return build_zero_cst (TREE_TYPE (old_name));
+           }
        }
     }
 
index 312224800bed39eb47cb9a0c9f54099986ef38b0..038c00353dc9b5044977c97e338bb7f3dffda6a9 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-04  Aditya Kumar  <aditya.k7@samsung.com>
+           Sebastian Pop  <s.pop@samsung.com>
+
+       * gcc.dg/graphite/id-29.c: New test.
+
 2015-12-04  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
diff --git a/gcc/testsuite/gcc.dg/graphite/id-29.c b/gcc/testsuite/gcc.dg/graphite/id-29.c
new file mode 100644 (file)
index 0000000..9554c0b
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-options "-floop-nest-optimize -O2" } */
+
+typedef struct {
+  unsigned lp, lc;
+  short *l;
+  short p[1 << 4];
+} foo;
+
+void LzmaEnc_Init(foo *p) {
+  unsigned i;
+  unsigned num = 0x300 << (p->lp + p->lc);
+  for (i = 0; i < num; i++)
+    p->l[i] = ((1 << 11) >> 1);
+
+  for (i = 0; i < (1 << 4); i++)
+    p->p[i] = ((1 << 11) >> 1);
+}