public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] [graphite] fix PR68976: only add loop close phi for names defined in loop
@ 2016-01-15 19:56 Sebastian Pop
  0 siblings, 0 replies; only message in thread
From: Sebastian Pop @ 2016-01-15 19:56 UTC (permalink / raw)
  To: gcc-patches; +Cc: hiraditya, sebpop, richard.guenther, tom_devries

        * graphite-isl-ast-to-gimple.c: Fix comment.
        * graphite-scop-detection.c (defined_in_loop_p): New.
        (canonicalize_loop_closed_ssa): Do not add close phi nodes for SSA
        names defined in loop.

gcc/testsuite

        * gcc.dg/graphite/pr68976.c: New test.
---
 gcc/graphite-isl-ast-to-gimple.c        |  4 ++--
 gcc/graphite-scop-detection.c           | 13 ++++++++++++-
 gcc/testsuite/gcc.dg/graphite/pr68976.c | 11 +++++++++++
 3 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/graphite/pr68976.c

diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index df52c49..9509af4 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -492,8 +492,8 @@ private:
 /* Return the tree variable that corresponds to the given isl ast identifier
    expression (an isl_ast_expr of type isl_ast_expr_id).
 
-   FIXME: We should replace blind conversation of id's type with derivation
-   of the optimal type when we get the corresponding isl support. Blindly
+   FIXME: We should replace blind conversion of id's type with derivation
+   of the optimal type when we get the corresponding isl support.  Blindly
    converting type sizes may be problematic when we switch to smaller
    types.  */
 
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index 8dfb20a..6ddf7bb 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -336,6 +336,15 @@ make_close_phi_nodes_unique (basic_block bb)
     }
 }
 
+/* Return true when NAME is defined in LOOP.  */
+
+static bool
+defined_in_loop_p (tree name, loop_p loop)
+{
+  gcc_assert (TREE_CODE (name) == SSA_NAME);
+  return loop == loop_containing_stmt (SSA_NAME_DEF_STMT (name));
+}
+
 /* Transforms LOOP to the canonical loop closed SSA form.  */
 
 static void
@@ -376,7 +385,9 @@ canonicalize_loop_closed_ssa (loop_p loop)
 		use_operand_p use_p;
 		gphi *close_phi;
 
-		if (TREE_CODE (arg) != SSA_NAME)
+		/* Only add close phi nodes for SSA_NAMEs defined in LOOP.  */
+		if (TREE_CODE (arg) != SSA_NAME
+		    || !defined_in_loop_p (arg, loop))
 		  continue;
 
 		close_phi = create_phi_node (NULL_TREE, close);
diff --git a/gcc/testsuite/gcc.dg/graphite/pr68976.c b/gcc/testsuite/gcc.dg/graphite/pr68976.c
new file mode 100644
index 0000000..ae9bf0f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr68976.c
@@ -0,0 +1,11 @@
+/* { dg-options "-O2 -floop-nest-optimize" } */
+
+int kw = -1, hv = -1, ju;
+int mc[1];
+void xx(void)
+{
+  for (; kw; ++kw)
+    for (; hv; ++hv)
+      for (ju = 0; ju < 2; ++ju)
+        mc[kw+1] = mc[0];
+}
-- 
2.5.0

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-01-15 19:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-15 19:56 [PATCH] [graphite] fix PR68976: only add loop close phi for names defined in loop Sebastian Pop

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).