Commit e8af4842 by Sebastian Pop Committed by Sebastian Pop

sese.c (get_vdef_before_sese): Handle GIMPLE_ASSIGN and GIMPLE_CALL.

2009-10-20  Sebastian Pop  <sebastian.pop@amd.com>

	* sese.c (get_vdef_before_sese): Handle GIMPLE_ASSIGN and GIMPLE_CALL.

From-SVN: r154613
parent 3899a0b2
2009-10-20 Sebastian Pop <sebastian.pop@amd.com>
* sese.c (get_vdef_before_sese): Handle GIMPLE_ASSIGN and GIMPLE_CALL.
2009-10-20 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (pdr_add_data_dimensions): Do not infer
loop upper bounds for 1-element arrays at end of structures.
* tree-flow.h (array_at_struct_end_p): Declared.
......
......@@ -407,8 +407,8 @@ static tree
get_vdef_before_sese (sese region, tree name, sbitmap visited)
{
unsigned i;
gimple def_stmt = SSA_NAME_DEF_STMT (name);
basic_block def_bb = gimple_bb (def_stmt);
gimple stmt = SSA_NAME_DEF_STMT (name);
basic_block def_bb = gimple_bb (stmt);
if (!def_bb || !bb_in_sese_p (def_bb, region))
return name;
......@@ -418,18 +418,36 @@ get_vdef_before_sese (sese region, tree name, sbitmap visited)
SET_BIT (visited, def_bb->index);
switch (gimple_code (def_stmt))
switch (gimple_code (stmt))
{
case GIMPLE_PHI:
for (i = 0; i < gimple_phi_num_args (def_stmt); i++)
for (i = 0; i < gimple_phi_num_args (stmt); i++)
{
tree arg = gimple_phi_arg_def (def_stmt, i);
tree res = get_vdef_before_sese (region, arg, visited);
tree arg = gimple_phi_arg_def (stmt, i);
tree res;
if (gimple_bb (SSA_NAME_DEF_STMT (arg))
&& def_bb->index == gimple_bb (SSA_NAME_DEF_STMT (arg))->index)
continue;
res = get_vdef_before_sese (region, arg, visited);
if (res)
return res;
}
return NULL_TREE;
case GIMPLE_ASSIGN:
case GIMPLE_CALL:
{
use_operand_p use_p = gimple_vuse_op (stmt);
tree use = USE_FROM_PTR (use_p);
if (def_bb->index == gimple_bb (SSA_NAME_DEF_STMT (use))->index)
RESET_BIT (visited, def_bb->index);
return get_vdef_before_sese (region, use, visited);
}
default:
return NULL_TREE;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment