This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Deadly optimization bug (all gcc versions!)
- To: law@cygnus.com
- Subject: Re: Deadly optimization bug (all gcc versions!)
- From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
- Date: Mon, 30 Aug 1999 11:03:31 +0200
- Cc: Bernd Schmidt <bernds@cygnus.co.uk>,Joern Rennecke <amylaar@cygnus.co.uk>,dje@watson.ibm.com,veksler@il.ibm.com,egcs@egcs.cygnus.com,kenner@vlsi1.ultra.nyu.edu
- References: <Your message of Mon, 30 Aug 1999 10:18:04 +0200. <4.2.0.58.19990830094306.047fd8c0@mail.lauterbach.com>
At 10:37 30.08.99 , Jeffrey A Law wrote:
> In message <4.2.0.58.19990830094306.047fd8c0@mail.lauterbach.com>you write:
> > At 16:14 24.08.99 , Bernd Schmidt wrote:
> > >+ /* We can't do anything if the value is set in between the
> insns we
> > are
> > >+ processing. */
> > >+ if (INSN_CUID (reg_last_set[regno]) <= INSN_CUID (subst_insn))
> > >+ return 0;
> > >+
> >
> > Just for my understanding, reg_last_set[regno] will not point past
> > subst_insn here? What I'm thinking about is, what happens if we have
> 3 SETs
> >
> > like:
> >
> > SET1
> > start_of_subst_tree
> > ...
> > SET2
> > ...
> > subst_insn
> > ...
> > SET3
> >
> > Will reg_last_set[] point to SET2 or SET3? If it points to SET3, your
> patch
> > doesn't cover all possibilities, or?
>I don't think reg_last_set can point to set3 since we haven't processed
>anything beyond subst_insn yet.
>
>It can point to SET2, which is the case Bernd's patch is dealing with.
Ah, ok. Thanks for the clarification. I was under the impression all this
reg_* arrays were computed at the start of combine for the whole function
and then updated on-the-fly during combine.
Franz.