[Bug rtl-optimization/56181] [4.8 Regression] ICE in verify_loop_structure, at cfgloop.c:1581 with -ftracer
mpolacek at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Feb 5 12:16:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56181
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> 2013-02-05 12:16:08 UTC ---
So, what happens here is that tracer performs tail-duplication. That is per se
of course fine, but when we're re-scanning bodies in fix_loop_structure, we
correctly mark BBs in the loop 1, then the loop 3, but then when processing the
loop 2, in flow_loop_nodes_find, we mark tail-duplicated BB as belonging into
the loop 2, because
FOR_EACH_EDGE (latch, latch_ei, loop->header->preds)
{
if (latch->src->loop_father == loop
|| !dominated_by_p (CDI_DOMINATORS, latch->src, loop->header))
continue;
doesn't notice that the BB is in fact outside of the loop. Which is bad - we
then process predecessors of that BB and mark the BBs in loop 3 as belonging
into loop 2. Oops.
More information about the Gcc-bugs
mailing list