[Bug tree-optimization/40321] [4.4/4.5 Regression] internal compiler error: in compute_antic, at tree-ssa-pre.c:2501

dberlin at dberlin dot org gcc-bugzilla@gcc.gnu.org
Wed Jul 15 13:47:00 GMT 2009



------- 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-bugzilla@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



More information about the Gcc-bugs mailing list