------- Comment #23 from dberlin at gcc dot gnu dot org 2009-07-15 13:46 ------- Subject: Re: [4.4/4.5 Regression] internal compiler error: in compute_antic, at tree-ssa-pre.c:2501
a_1 shouldn't be in the maximal set. If it is, that's a bug. The history here: We didn't use to have a check for domination in avail_out. As a result, values only died if they were in TMP_GEN. (This is what is *supposed* to happen. At some point we added a check for availability to valid_in_sets and i can't remember why). PHI values are not in TMP_GEN, so they will never disappear from the set once in it. Nowadays, it may be safe to put phi values in there. Honestly, the availability check in valid_in_sets worries me, because it shouldn't be necessary. Names should be prevented from being ANTIC past the point of their definition through subtraction of TMP_GEN. On Wed, Jul 15, 2009 at 8:54 AM, rguenth at gcc dot gnu dot org<gcc-bugzi...@gcc.gnu.org> wrote: > > > ------- 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 > > ------- You are receiving this mail because: ------- > You are on the CC list for the bug, or are watching someone who is. > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40321