summaryrefslogtreecommitdiff
path: root/gcc/lambda-code.c
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-03 15:45:10 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-03 15:45:10 +0000
commit5aaf9e3934432b01b5e05476e88a00d125cb6068 (patch)
tree2c9f40744eb2641b21f9b4f17a205bf33e0841e2 /gcc/lambda-code.c
parent878d4cb14a77ee9a27c8d6653353b142977dae71 (diff)
downloadgcc-5aaf9e3934432b01b5e05476e88a00d125cb6068.tar.gz
2007-10-03 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/33576 * testsuite/gcc.dg/tree-ssa/pr33576.c: New. * tree-loop-linear.c (linear_transform_loops): Call remove_iv. * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter. (remove_iv): Declared. * lambda-code.c (remove_iv): Not static. (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs. Don't remove ivs there, save ivs in the buffer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128986 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lambda-code.c')
-rw-r--r--gcc/lambda-code.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c
index c5734375c29..84ad869a0ef 100644
--- a/gcc/lambda-code.c
+++ b/gcc/lambda-code.c
@@ -1639,7 +1639,7 @@ lle_to_gcc_expression (lambda_linear_expression lle,
/* Remove the induction variable defined at IV_STMT. */
-static void
+void
remove_iv (tree iv_stmt)
{
if (TREE_CODE (iv_stmt) == PHI_NODE)
@@ -1692,6 +1692,7 @@ void
lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest,
VEC(tree,heap) *old_ivs,
VEC(tree,heap) *invariants,
+ VEC(tree,heap) **remove_ivs,
lambda_loopnest new_loopnest,
lambda_trans_matrix transform,
struct obstack * lambda_obstack)
@@ -1861,7 +1862,7 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest,
}
/* Remove the now unused induction variable. */
- remove_iv (oldiv_stmt);
+ VEC_safe_push (tree, heap, *remove_ivs, oldiv_stmt);
}
VEC_free (tree, heap, new_ivs);
}