aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-out.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/lto-streamer-out.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/lto-streamer-out.c')
-rw-r--r--gcc/lto-streamer-out.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 70476dc..f614aef 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -2360,24 +2360,14 @@ prune_offload_funcs (void)
if (!offload_funcs)
return;
- unsigned int write_index = 0;
- for (unsigned read_index = 0; read_index < vec_safe_length (offload_funcs);
- read_index++)
- {
- tree fn_decl = (*offload_funcs)[read_index];
- bool remove_p = cgraph_node::get (fn_decl) == NULL;
- if (remove_p)
- continue;
-
- DECL_PRESERVE_P (fn_decl) = 1;
-
- if (write_index != read_index)
- (*offload_funcs)[write_index] = (*offload_funcs)[read_index];
-
- write_index++;
- }
-
- offload_funcs->truncate (write_index);
+ unsigned ix, ix2;
+ tree *elem_ptr;
+ VEC_ORDERED_REMOVE_IF (*offload_funcs, ix, ix2, elem_ptr,
+ cgraph_node::get (*elem_ptr) == NULL);
+
+ tree fn_decl;
+ FOR_EACH_VEC_ELT (*offload_funcs, ix, fn_decl)
+ DECL_PRESERVE_P (fn_decl) = 1;
}
/* Main entry point from the pass manager. */