aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-01-15 15:43:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-01-15 15:43:48 +0000
commit78810bd35336529a133661a5e4f801ccda57fd74 (patch)
treeac7638373fb51bc7a33745a33d9099a22b1b3b04 /gcc/tree-vect-loop.c
parent2bd847fed39669cfd021b9c3068ca84fd98593e4 (diff)
downloadgcc-78810bd35336529a133661a5e4f801ccda57fd74.zip
gcc-78810bd35336529a133661a5e4f801ccda57fd74.tar.gz
gcc-78810bd35336529a133661a5e4f801ccda57fd74.tar.bz2
re PR tree-optimization/66856 (ICE in compute_live_loop_exits, at tree-ssa-loop-manip.c:234)
2016-01-15 Richard Biener <rguenther@suse.de> PR tree-optimization/66856 * tree-vect-loop.c (vect_transform_loop): Free SLP instances here. * tree-vect-slp.c (vect_free_slp_tree): Decrement stmt reference count. (vect_create_new_slp_node): Increment stmt reference count. (vect_get_and_check_slp_defs): Make sure stmts are nor already in an SLP tree before swapping operands. (vect_build_slp_tree): Likewise. (destroy_bb_vec_info): Free stmt info after SLP instances. * tree-vect-stmts.c (new_stmt_vec_info): Initialize reference count. * tree-vectorizer.h (struct _stmt_vec_info): Add num_slp_uses field. (STMT_VINFO_NUM_SLP_USES): New macro. * gcc.dg/torture/pr66856-1.c: New testcase. * gcc.dg/torture/pr66856-2.c: Likewise. From-SVN: r232435
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 83ded8b..6034672 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -6930,4 +6930,11 @@ vect_transform_loop (loop_vec_info loop_vinfo)
"OUTER LOOP VECTORIZED\n");
dump_printf (MSG_NOTE, "\n");
}
+
+ /* Free SLP instances here because otherwise stmt reference counting
+ won't work. */
+ slp_instance instance;
+ FOR_EACH_VEC_ELT (LOOP_VINFO_SLP_INSTANCES (loop_vinfo), i, instance)
+ vect_free_slp_instance (instance);
+ LOOP_VINFO_SLP_INSTANCES (loop_vinfo).release ();
}