fix PR68976: only add loop close phi for names defined in loop

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

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

From-SVN: r232658
This commit is contained in:
Aditya Kumar 2016-01-21 02:13:52 +00:00 committed by Sebastian Pop
parent 8f2252625a
commit b920a04763
5 changed files with 38 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2016-01-21 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* 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.
2016-01-21 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>

View File

@ -507,8 +507,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. */

View File

@ -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);

View File

@ -1,3 +1,8 @@
2016-01-21 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* gcc.dg/graphite/pr68976.c: New test.
2016-01-21 Jakub Jelinek <jakub@redhat.com>
PR middle-end/67653

View File

@ -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];
}