------- Comment #6 from dberlin at gcc dot gnu dot org 2008-01-12 19:33 ------- Subject: Re: [4.3 Regression] ICE in find_or_generate_expression
On 12 Jan 2008 19:13:56 -0000, rguenth at gcc dot gnu dot org <[EMAIL PROTECTED]> wrote: > > > ------- Comment #5 from rguenth at gcc dot gnu dot org 2008-01-12 19:13 > ------- > Danny, maybe you mis-understood. We try to generate *VH.98, but VH.98 is > indeed > not in avail_out[19], but created for example as > > So we can in fact not do insertion of *VH.98 in two of the preds of BB. It > looks like we do not do verification for that anywhere? Sure we do. It should never be ANTIC if it is not possible to regenerate the expression. Anything else is a bug in ANTIC calculation or initial exp_gen/tmp_gen/etc set construction. valid_in_sets ensures that SSA_NAME's are either AVAIL_OUT[1], or available in our current ANTIC set. ANTIC propagation subtracts TMP_GEN from ANTIC, which should ensure that values do not get hoisted above the point that creates them. [1] I honestly don't remember why valid_in_sets ensures that SSA_NAME's are AVAIL_OUT when bare. That seems wrong to me. The correct condition is whether they are in our current ANTIC set, just like it does for more complex expressions. I do not remember when or why this got changed, but it seems like a bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34648