This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/34648] [4.3 Regression] ICE in find_or_generate_expression
- From: "dberlin at dberlin dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jan 2008 19:33:58 -0000
- Subject: [Bug tree-optimization/34648] [4.3 Regression] ICE in find_or_generate_expression
- References: <bug-34648-87@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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
<gcc-bugzilla@gcc.gnu.org> 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