aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
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-vectorizer.h
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-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 1465070..0a3f5d7 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -601,6 +601,8 @@ typedef struct _stmt_vec_info {
/* For reduction loops, this is the type of reduction. */
enum vect_reduction_type v_reduc_type;
+ /* The number of scalar stmt references from active SLP instances. */
+ unsigned int num_slp_uses;
} *stmt_vec_info;
/* Access Functions. */
@@ -653,6 +655,7 @@ STMT_VINFO_BB_VINFO (stmt_vec_info stmt_vinfo)
#define STMT_VINFO_LOOP_PHI_EVOLUTION_BASE_UNCHANGED(S) (S)->loop_phi_evolution_base_unchanged
#define STMT_VINFO_LOOP_PHI_EVOLUTION_PART(S) (S)->loop_phi_evolution_part
#define STMT_VINFO_MIN_NEG_DIST(S) (S)->min_neg_dist
+#define STMT_VINFO_NUM_SLP_USES(S) (S)->num_slp_uses
#define GROUP_FIRST_ELEMENT(S) (S)->first_element
#define GROUP_NEXT_ELEMENT(S) (S)->next_element