diff options
author | Richard Biener <rguenther@suse.de> | 2016-01-15 15:43:48 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-01-15 15:43:48 +0000 |
commit | 78810bd35336529a133661a5e4f801ccda57fd74 (patch) | |
tree | ac7638373fb51bc7a33745a33d9099a22b1b3b04 /gcc/tree-vectorizer.h | |
parent | 2bd847fed39669cfd021b9c3068ca84fd98593e4 (diff) | |
download | gcc-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.h | 3 |
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 |