The following program:

void
Object (void)
{
void * jmpbuf_1[6];
void P (void)
{
  {
    void * jmpbuf_3[6];

    if (__builtin_setjmp (&jmpbuf_3)) goto nonlocal_exit_2; else (void) 0;;
    __builtin_longjmp (&jmpbuf_1, 1);
    nonlocal_exit_2:;;
  }
}
  {
    if (__builtin_setjmp (&jmpbuf_1)) goto nonlocal_exit_0; else (void) 0;;
    P ();
    nonlocal_exit_0:;;
  }
}

int
main(void)
{
  Object ();
}

gives me:
../gcc-lin/prev-gcc/xgcc -B../gcc-lin/prev-gcc
mjmp2.c/tmp/cc06O64A.o(.text+0x5a): In function `P.1525':
: undefined reference to `.L8'
collect2: ld returned 1 exit status

Using gcc-4.2-20060401. The problem also shows up with gcc-4.0.2 and
gcc-4.1.0 on amd64. Also the problem shows in the output of a
cross-compiler targetting powerpc-apple-darwin7. The original problem
was discovered in GNU Pascal on powerpc-apple-darwin7 and the program
above tries to reproduce Pascal problem. The program compiles using
gcc-3.4.4.


-- 
           Summary: Missing label in a nested function
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hebisch at math dot uni dot wroc dot pl
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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

Reply via email to