patch for -Wno-long-long and early GNAT compilers

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Tue Mar 19 02:27:00 GMT 2002


    Note incidentally that the entire kerfuffle here comes NOT from Ada code,
    but from C code, you were using a broken C compiler. 

We don't know that's correct.  The setjmp is in Ada code and the longjmp
is in C code.  Either could be miscompiled.

Or perhaps the problem might be that GCC changed the way the builtin
setjmp/longjmp was implemented on x86 and the setjmp (in Ada code) is
being compiled with one version while the longjmp (in C code) is being
compiled by a different one.

Indeed, the success of that test program strongly suggests this is the
problem here.  So it may well be that I was wrong in this case: you
can't compile the Ada code with a 2.8.1-based GCC and the C code with
a 2.95-based GCC and the reason is that those two backends handle the
builtin setjmp/longjmp incompatibly.

Note that I'm not saying this *is* the case, since I'm not aware of any
incompatibility in setjmp/longjmp in GCC, but it's conceivable there is
(having to do, for example, with exactly what FP is presumed to point to)
and if there *were*, it would precisely explain what Zack saw.



More information about the Gcc mailing list