diff options
author | Richard Biener <rguenther@suse.de> | 2014-02-21 13:18:54 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-02-21 13:18:54 +0000 |
commit | f2556b68cad88433577a0baab1b76bef59f49d78 (patch) | |
tree | 1e75ea5d008d884d77d7e4d771c8dff421db6753 /gcc/tree-vectorizer.h | |
parent | 32417082bf9a8f2633e7960f2e45979ebab43e51 (diff) | |
download | gcc-f2556b68cad88433577a0baab1b76bef59f49d78.zip gcc-f2556b68cad88433577a0baab1b76bef59f49d78.tar.gz gcc-f2556b68cad88433577a0baab1b76bef59f49d78.tar.bz2 |
re PR tree-optimization/60276 (-O3 autovectorizer breaks on a particular loop)
2014-02-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/60276
* tree-vectorizer.h (struct _stmt_vec_info): Add min_neg_dist field.
(STMT_VINFO_MIN_NEG_DIST): New macro.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Record
STMT_VINFO_MIN_NEG_DIST.
* tree-vect-stmts.c (vectorizable_load): Verify if assumptions
made for negative dependence distances still hold.
* gcc.dg/vect/pr60276.c: New testcase.
From-SVN: r207992
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 51367ea..f8efe47 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -622,6 +622,10 @@ typedef struct _stmt_vec_info { is 1. */ unsigned int gap; + /* The minimum negative dependence distance this stmt participates in + or zero if none. */ + unsigned int min_neg_dist; + /* Not all stmts in the loop need to be vectorized. e.g, the increment of the loop induction variable and computation of array indexes. relevant indicates whether the stmt needs to be vectorized. */ @@ -677,6 +681,7 @@ typedef struct _stmt_vec_info { #define STMT_VINFO_GROUP_SAME_DR_STMT(S) (S)->same_dr_stmt #define STMT_VINFO_GROUPED_ACCESS(S) ((S)->first_element != NULL && (S)->data_ref_info) #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 GROUP_FIRST_ELEMENT(S) (S)->first_element #define GROUP_NEXT_ELEMENT(S) (S)->next_element |