on non-local gotos and computed jumps

Graham Stott grahams@redhat.com
Thu Dec 21 02:10:00 GMT 2000


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.


More information about the Gcc-patches mailing list