diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 133af66eaf7c..fa0bb7655d09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2013-03-01 Jakub Jelinek + PR middle-end/56461 + * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Release path + vector even when returning true. Fix up function comment formatting. + PR middle-end/56461 * ira-build.c (ira_loop_nodes_count): New variable. (create_loop_tree_nodes): Initialize it. diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c index 910715aaadd3..4570807842d7 100644 --- a/gcc/tree-ssa-loop-ivcanon.c +++ b/gcc/tree-ssa-loop-ivcanon.c @@ -207,7 +207,7 @@ constant_after_peeling (tree op, gimple stmt, struct loop *loop) EDGE_TO_CANCEL (if non-NULL) is an non-exit edge eliminated in the last iteration of loop. Return results in SIZE, estimate benefits for complete unrolling exiting by EXIT. - Stop estimating after UPPER_BOUND is met. Return true in this case */ + Stop estimating after UPPER_BOUND is met. Return true in this case. */ static bool tree_estimate_loop_size (struct loop *loop, edge exit, edge edge_to_cancel, struct loop_size *size, @@ -321,6 +321,7 @@ tree_estimate_loop_size (struct loop *loop, edge exit, edge edge_to_cancel, stru - size->last_iteration_eliminated_by_peeling) > upper_bound) { free (body); + path.release (); return true; } }