------- Comment #5 from rguenth at gcc dot gnu dot org 2010-03-03 15:42 ------- We shouldn't have deferred BB31 in the first iteration (with just TEN):
<bb 2>: goto <bb 13>; ... <bb 31>: <bb 13>: D.2759_1 = b (); if (D.2759_1 != 0) goto <bb 32>; else goto <bb 14>; <bb 32>: goto <bb 12>; <bb 14>: return; Starting iteration 0 ... Block 31 was deferred for a future iteration. ANTIC_OUT[14] := { } ANTIC_IN[14] := { } S[14] := { } ANTIC_OUT[13] := { } ANTIC_IN[13] := { } S[13] := { } ANTIC_OUT[2] := { } ANTIC_IN[2] := { } S[2] := { } Starting iteration 1 which means we are iterating in non-optimal order - which is postorder. It looks like post_order_compute computes BS. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40761