This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: on non-local gotos and computed jumps
- To: Richard Henderson <rth at redhat dot com>
- Subject: Re: on non-local gotos and computed jumps
- From: Graham Stott <grahams at redhat dot com>
- Date: Thu, 21 Dec 2000 10:08:26 +0000
- CC: Alexandre Oliva <aoliva at redhat dot com>, gcc-patches at gcc dot gnu dot org
- References: <orhf3z2lgy.fsf@guarana.lsd.ic.unicamp.br> <20001220171803.A21684@redhat.com>
Richard
Richard Henderson wrote:
>
> On Wed, Dec 20, 2000 at 12:53:01PM -0200, Alexandre Oliva wrote:
> > [WRT a new port] gcc.c-torture/execute/920501-7.c has uncovered what
> > I believe to be a generic problem...
>
> In summary of what Alex deduced, we cannot tell the difference between
> a non-local goto and a computed goto when it comes time to construct the
> CFG. If there exists exactly one computed goto target in a function,
> we'll create incorrect edges leading to the function being miscompiled.
>
> Modified test case attached.
>
> Fixed thus.
>
> r~
>
>
I'm getting an abort in distribute_notes combine.c:12752.
This occurs because we have a REG_NON_LOCAL_GOTO which isn't
handled in the switch so it triggers the abort in the default
default:
/* Any other notes should not be present at this point in the
compilation. */
abort ();
Graham
ps. This occurs when compiling __sjthrow in libgcc2.c on i686-linux.