This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55862

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-07 13:50:03 UTC ---
Followup, because of PR55888.  We have

  <bb 11>:
  # c_21 = PHI <p_66(18), p_67(3)>
  # p_41 = PHI <p_66(18), p_67(3)>
  a.1_42 = a;
  goto <bb 5>;

  <bb 5>:
  # c_57 = PHI <c_1(16), c_21(11)>
  # a.1_63 = PHI <a.1_25(16), a.1_42(11)>
  # p_65 = PHI <p_30(16), p_41(11)>
  *c_57 = 0;

and when PHI-translating p_65 we end up with p_41 (or c_21 value-ized).  But
AVAIL_OUT of BB 11 is:

debug[0] := { c_12(D) (0014), p_32(D) (0027), g.0_11 (0013), c_21 (0033),
a.1_42 (0034) }

thus contains _only_ c_21 (well, exactly one expression per value - it is
a value set after all).  And clean via valid_in_sets does

    case NAME:
      return bitmap_set_contains_expr (AVAIL_OUT (block), expr);

thus checks for the expression availability.  That looks bogus to me.
Instead we should verify if there is a leader for the NAME in AVAIL_OUT.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]