This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 07 Jan 2013 13:50:03 +0000
- Subject: [Bug tree-optimization/55862] [4.8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2495
- Auto-submitted: auto-generated
- References: <bug-55862-4@http.gcc.gnu.org/bugzilla/>
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.