aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-08-22 11:19:39 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2012-08-22 11:19:39 +0200
commit6f723d3319d8a656079b0509be4a249c0fbd955c (patch)
tree98675a15894bfa9e3293f468a5a660c709083407 /gcc
parent06d43afd8592777cbc11e78a8b7667fda6c1eace (diff)
downloadgcc-6f723d3319d8a656079b0509be4a249c0fbd955c.zip
gcc-6f723d3319d8a656079b0509be4a249c0fbd955c.tar.gz
gcc-6f723d3319d8a656079b0509be4a249c0fbd955c.tar.bz2
tree-vrp.c (find_assert_locations): Skip also edges from the entry block.
* tree-vrp.c (find_assert_locations): Skip also edges from the entry block. * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Call free_stmt_vec_info on orig_cond after gsi_removing it. * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Always free body_cost_vec vector. (vect_analyze_data_refs): If gather is unsuccessful, free_data_ref (dr). * tree-inline.c (tree_function_versioning): Free old_transforms_to_apply vector. From-SVN: r190590
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/tree-inline.c1
-rw-r--r--gcc/tree-vect-data-refs.c7
-rw-r--r--gcc/tree-vect-loop-manip.c1
-rw-r--r--gcc/tree-vrp.c2
5 files changed, 21 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 664fd03..88ec752 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2012-08-22 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-vrp.c (find_assert_locations): Skip also edges
+ from the entry block.
+
+ * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Call
+ free_stmt_vec_info on orig_cond after gsi_removing it.
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Always
+ free body_cost_vec vector.
+ (vect_analyze_data_refs): If gather is unsuccessful,
+ free_data_ref (dr).
+ * tree-inline.c (tree_function_versioning): Free
+ old_transforms_to_apply vector.
+
2012-08-22 Steven Bosscher <steven@gcc.gnu.org>
* tree-ssa-coalesce.c (struct ssa_conflicts_d): Make contents
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index fe46e5d..20d3317 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -5089,6 +5089,7 @@ tree_function_versioning (tree old_decl, tree new_decl,
VEC_index (ipa_opt_pass,
old_transforms_to_apply,
i));
+ VEC_free (ipa_opt_pass, heap, old_transforms_to_apply);
}
id.copy_decl = copy_decl_no_change;
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 4df2e50..4a5624e 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1,5 +1,5 @@
/* Data References Analysis and Manipulation Utilities for Vectorization.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com>
and Ira Rosen <irar@il.ibm.com>
@@ -1934,10 +1934,9 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
gcc_assert (stat);
return stat;
}
- else
- VEC_free (stmt_info_for_cost, heap, body_cost_vec);
}
+ VEC_free (stmt_info_for_cost, heap, body_cost_vec);
/* (2) Versioning to force alignment. */
@@ -3313,6 +3312,8 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
gather = false;
if (!gather)
{
+ STMT_VINFO_DATA_REF (stmt_info) = NULL;
+ free_data_ref (dr);
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
{
fprintf (vect_dump,
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index bdf3fd2..4df4800 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -788,6 +788,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
/* Remove old loop exit test: */
gsi_remove (&loop_cond_gsi, true);
+ free_stmt_vec_info (orig_cond);
loop_loc = find_loop_location (loop);
if (dump_file && (dump_flags & TDF_DETAILS))
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index f0d68eb..0aa1dc7 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5596,7 +5596,7 @@ find_assert_locations (void)
FOR_EACH_EDGE (e, ei, bb->preds)
{
int pred = e->src->index;
- if (e->flags & EDGE_DFS_BACK)
+ if ((e->flags & EDGE_DFS_BACK) || pred == ENTRY_BLOCK)
continue;
if (!live[pred])