diff options
author | Martin Liska <mliska@suse.cz> | 2020-06-11 13:25:40 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2020-06-18 16:58:27 +0200 |
commit | 72cb486456a39524c6f822327ba8654b0221ff4c (patch) | |
tree | 23e189d3c2bbf03b63ddf6c07c31c29dd2684b03 /gcc/tree-vect-patterns.c | |
parent | bd0a89dcd8d13ad78950eb24eb3d1680f81ba95a (diff) | |
download | gcc-72cb486456a39524c6f822327ba8654b0221ff4c.zip gcc-72cb486456a39524c6f822327ba8654b0221ff4c.tar.gz gcc-72cb486456a39524c6f822327ba8654b0221ff4c.tar.bz2 |
vectorizer: add _bb_vec_info::region_stmts and reverse_region_stmts
gcc/ChangeLog:
* coretypes.h (struct iterator_range): New type.
* tree-vect-patterns.c (vect_determine_precisions): Use
range-based iterator.
(vect_pattern_recog): Likewise.
* tree-vect-slp.c (_bb_vec_info): Likewise.
(_bb_vec_info::~_bb_vec_info): Likewise.
(vect_slp_check_for_constructors): Likewise.
* tree-vectorizer.h:Add new iterators
and functions that use it.
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r-- | gcc/tree-vect-patterns.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 636ad59..03d50ec 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -5120,20 +5120,12 @@ vect_determine_precisions (vec_info *vinfo) else { bb_vec_info bb_vinfo = as_a <bb_vec_info> (vinfo); - gimple_stmt_iterator si = bb_vinfo->region_end; - gimple *stmt; - do + for (gimple *stmt : bb_vinfo->reverse_region_stmts ()) { - if (!gsi_stmt (si)) - si = gsi_last_bb (bb_vinfo->bb); - else - gsi_prev (&si); - stmt = gsi_stmt (si); stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt); if (stmt_info && STMT_VINFO_VECTORIZABLE (stmt_info)) vect_determine_stmt_precisions (vinfo, stmt_info); } - while (stmt != gsi_stmt (bb_vinfo->region_begin)); } } @@ -5492,10 +5484,8 @@ vect_pattern_recog (vec_info *vinfo) else { bb_vec_info bb_vinfo = as_a <bb_vec_info> (vinfo); - for (si = bb_vinfo->region_begin; - gsi_stmt (si) != gsi_stmt (bb_vinfo->region_end); gsi_next (&si)) + for (gimple *stmt : bb_vinfo->region_stmts ()) { - gimple *stmt = gsi_stmt (si); stmt_vec_info stmt_info = bb_vinfo->lookup_stmt (stmt); if (!stmt_info || !STMT_VINFO_VECTORIZABLE (stmt_info)) continue; |