On Tue, Nov 04, 2014 at 07:36:26PM +0100, Marek Polacek wrote: > + FOR_EACH_VEC_ELT_REVERSE (v, i, g) > + { > + /* Remove statements for BBs that have been > + already processed. */ > + sanopt_info *si = (sanopt_info *) gimple_bb (g)->aux; > + if (si->visited_p) > + { > + v.unordered_remove (i); > + continue; > + } > + /* At this point we shouldn't have any statements > + that aren't dominating the current BB. */ > + tree align = gimple_call_arg (g, 2); > + remove = tree_int_cst_le (cur_align, align); > + break; > + }
As you only remove last item, that is pop. So, how about while (!v.is_empty ()) { gimple g = v.last (); /* Remove statements for BBs that have been already processed. */ sanopt_info *si = (sanopt_info *) gimple_bb (g)->aux; if (si->visited_p) v.pop (); else { /* At this point we shouldn't have any statements that aren't dominating the current BB. */ tree align = gimple_call_arg (g, 2); remove = tree_int_cst_le (cur_align, align); break; } } ? The patch is ok either way. Jakub