diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-06 09:23:07 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-06 09:23:07 +0000 |
commit | 796f6cba70acaf91b919afd96e90d007374ae8a8 (patch) | |
tree | d490ce409763d3445fb2ba74ac78008e8d55f526 /gcc/tree-vectorizer.h | |
parent | d4a8ec92ecf942be90318c71c42710aadb8d25ad (diff) | |
download | gcc-796f6cba70acaf91b919afd96e90d007374ae8a8.tar.gz |
2013-12-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/59058
* tree-vectorizer.h (struct _loop_vec_info): Add num_itersm1
member.
(LOOP_VINFO_NITERSM1): New macro.
* tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Express
the vector loop entry test in terms of scalar latch executions.
(vect_do_peeling_for_alignment): Update LOOP_VINFO_NITERSM1.
* tree-vect-loop.c (vect_get_loop_niters): Also return the
number of latch executions.
(new_loop_vec_info): Initialize LOOP_VINFO_NITERSM1.
(vect_analyze_loop_form): Likewise.
(vect_generate_tmps_on_preheader): Compute the number of
vectorized iterations differently.
* gcc.dg/torture/pr59058.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205730 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 4427d6a7b33..b4daf0aba17 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -250,8 +250,11 @@ typedef struct _loop_vec_info { /* The loop basic blocks. */ basic_block *bbs; + /* Number of latch executions. */ + tree num_itersm1; /* Number of iterations. */ tree num_iters; + /* Number of iterations of the original loop. */ tree num_iters_unchanged; /* Minimum number of iterations below which vectorization is expected to @@ -349,9 +352,11 @@ typedef struct _loop_vec_info { /* Access Functions. */ #define LOOP_VINFO_LOOP(L) (L)->loop #define LOOP_VINFO_BBS(L) (L)->bbs +#define LOOP_VINFO_NITERSM1(L) (L)->num_itersm1 #define LOOP_VINFO_NITERS(L) (L)->num_iters -/* Since LOOP_VINFO_NITERS can change after prologue peeling - retain total unchanged scalar loop iterations for cost model. */ +/* Since LOOP_VINFO_NITERS and LOOP_VINFO_NITERSM1 can change after + prologue peeling retain total unchanged scalar loop iterations for + cost model. */ #define LOOP_VINFO_NITERS_UNCHANGED(L) (L)->num_iters_unchanged #define LOOP_VINFO_COST_MODEL_MIN_ITERS(L) (L)->min_profitable_iters #define LOOP_VINFO_VECTORIZABLE_P(L) (L)->vectorizable |