lambda-code.c (remove_iv): New.
* lambda-code.c (remove_iv): New. (lambda_loopnest_to_gcc_loopnest): Use remove_iv. Co-Authored-By: Sebastian Pop <sebpop@gmail.com> From-SVN: r125605
This commit is contained in:
parent
79f5e44262
commit
51c0074eed
2 changed files with 48 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2007-06-10 Jan Sjodin <jan.sjodin@amd.com>
|
||||
Sebastian Pop <sebpop@gmail.com>
|
||||
|
||||
* lambda-code.c (remove_iv): New.
|
||||
(lambda_loopnest_to_gcc_loopnest): Use remove_iv.
|
||||
|
||||
2007-06-10 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
|
||||
|
|
|
@ -1616,6 +1616,45 @@ lle_to_gcc_expression (lambda_linear_expression lle,
|
|||
return force_gimple_operand (fold (expr), stmts_to_insert, true, resvar);
|
||||
}
|
||||
|
||||
/* Remove the induction variable defined at IV_STMT. */
|
||||
|
||||
static void
|
||||
remove_iv (tree iv_stmt)
|
||||
{
|
||||
if (TREE_CODE (iv_stmt) == PHI_NODE)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PHI_NUM_ARGS (iv_stmt); i++)
|
||||
{
|
||||
tree stmt;
|
||||
imm_use_iterator imm_iter;
|
||||
tree arg = PHI_ARG_DEF (iv_stmt, i);
|
||||
bool used = false;
|
||||
|
||||
if (TREE_CODE (arg) != SSA_NAME)
|
||||
continue;
|
||||
|
||||
FOR_EACH_IMM_USE_STMT (stmt, imm_iter, arg)
|
||||
if (stmt != iv_stmt)
|
||||
used = true;
|
||||
|
||||
if (!used)
|
||||
remove_iv (SSA_NAME_DEF_STMT (arg));
|
||||
}
|
||||
|
||||
remove_phi_node (iv_stmt, NULL_TREE, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
block_stmt_iterator bsi = bsi_for_stmt (iv_stmt);
|
||||
|
||||
bsi_remove (&bsi, true);
|
||||
release_defs (iv_stmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Transform a lambda loopnest NEW_LOOPNEST, which had TRANSFORM applied to
|
||||
it, back into gcc code. This changes the
|
||||
loops, their induction variables, and their bodies, so that they
|
||||
|
@ -1797,6 +1836,9 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest,
|
|||
propagate_value (use_p, newiv);
|
||||
update_stmt (stmt);
|
||||
}
|
||||
|
||||
/* Remove the now unused induction variable. */
|
||||
remove_iv (oldiv_stmt);
|
||||
}
|
||||
VEC_free (tree, heap, new_ivs);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue