aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-patterns.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2018-05-01 19:16:43 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-05-01 19:16:43 +0000
commitb94c2dc138c60636e3898b04c1026cbb1b868b26 (patch)
treee99c38252e340bc2e91a93e586b47cdf8ba5aaf3 /gcc/tree-vect-patterns.c
parent2cc7d3a7da20bcfd854302b1f265c6551b8a3741 (diff)
downloadgcc-b94c2dc138c60636e3898b04c1026cbb1b868b26.zip
gcc-b94c2dc138c60636e3898b04c1026cbb1b868b26.tar.gz
gcc-b94c2dc138c60636e3898b04c1026cbb1b868b26.tar.bz2
Add VEC_ORDERED_REMOVE_IF
2018-05-01 Tom de Vries <tom@codesourcery.com> PR other/83786 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define. * vec.c (test_ordered_remove_if): New function. (vec_c_tests): Call test_ordered_remove_if. * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO. * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF. * tree-vect-patterns.c (vect_pattern_recog_1): Use VEC_ORDERED_REMOVE_IF. From-SVN: r259808
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r--gcc/tree-vect-patterns.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 621ed07..5c2578f 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -4483,7 +4483,6 @@ vect_pattern_recog_1 (vect_recog_func *recog_func,
tree type_in, type_out;
enum tree_code code;
int i;
- gimple *next;
stmts_to_replace->truncate (0);
stmts_to_replace->quick_push (stmt);
@@ -4545,9 +4544,12 @@ vect_pattern_recog_1 (vect_recog_func *recog_func,
/* Patterns cannot be vectorized using SLP, because they change the order of
computation. */
if (loop_vinfo)
- FOR_EACH_VEC_ELT (LOOP_VINFO_REDUCTIONS (loop_vinfo), i, next)
- if (next == stmt)
- LOOP_VINFO_REDUCTIONS (loop_vinfo).ordered_remove (i);
+ {
+ unsigned ix, ix2;
+ gimple **elem_ptr;
+ VEC_ORDERED_REMOVE_IF (LOOP_VINFO_REDUCTIONS (loop_vinfo), ix, ix2,
+ elem_ptr, *elem_ptr == stmt);
+ }
/* It is possible that additional pattern stmts are created and inserted in
STMTS_TO_REPLACE. We create a stmt_info for each of them, and mark the