------- Comment #21 from rguenth at gcc dot gnu dot org 2009-07-15 12:54 ------- Correction - only b_2 is missing from the maximal set, a_1 is there because it is used in non-PHI nodes. The fix indeed looks quite obvious to me now ...
For reference, here is the function before PRE again: <bb 2>: <bb 3>: # a_1 = PHI <a_3(D)(2), b_2(6)> # b_2 = PHI <b_4(D)(2), a_1(6)> D.1251_5 = a_1->flag; if (D.1251_5 != 0) goto <bb 5>; else goto <bb 6>; <bb 6>: goto <bb 3>; <bb 5>: <bb 4>: # a_14 = PHI <a_1(5)> # b_15 = PHI <b_2(5)> D.1254_10 = a_14->pos; D.1255_11 = b_15->pos; D.1253_12 = D.1255_11 + D.1254_10; return D.1253_12; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40321