http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48437

           Summary: LTO crashes with block-local function declarations
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: uweig...@gcc.gnu.org
                CC: rguent...@suse.de


The following program:

int
test (void)
{
  int f (void);
  return 0;
}

int
main (void)
{
  int f (void);
  int test (void);

  return test ();
}

crashes lto1 when compiled with "gcc -g -O -flto -fwhole-program".

What seems to happen is that the FUNCTION_DECL for "f" is added by the LTO
reader into the BLOCK_VARS list of both test and main, which causes its
DECL_CHAIN to be clobbered and the two lists to be cross-entangled.  This in
turn causes an endless recursive descent in set_block_abstract_flags, resulting
in a stack overflow ...

Seen on 4.6.0 (ppc64) and current mainline (i386).

Reply via email to