diff options
author | Tom de Vries <tom@codesourcery.com> | 2018-05-01 19:16:43 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2018-05-01 19:16:43 +0000 |
commit | b94c2dc138c60636e3898b04c1026cbb1b868b26 (patch) | |
tree | e99c38252e340bc2e91a93e586b47cdf8ba5aaf3 /gcc/tree-vect-patterns.c | |
parent | 2cc7d3a7da20bcfd854302b1f265c6551b8a3741 (diff) | |
download | gcc-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.c | 10 |
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 |