Joe Buehler wrote:
There is an optimizer bug in gcc that prevents my compiling
for hppa using optimization (via C and the mangler -- there
is no native code generator for hppa).
Bug 32820 has been filed against gcc for this. It is present
in gcc versions going *way* back.
I am a little puzzled though, in that the many versions of gcc
that I have tried on sunos/sparc -- all the way back to 2.95 -- exhibit
the same bug.
The miscompiled routine is stg_returnToStackTop (there are others but
I didn't bother tracking them all down). One of the global
register variables is not set when optimization is turned on.
How did this ever work on the Sun Sparc platform? Does the native
code generator for sun sparc predate even gcc 2.95?
Is this perhaps related to the following comment in TailCalls.h?
/*
NOTE about __DISCARD__():
On x86_64 this is necessary to work around bugs in the register
variable support in gcc. Without the __DISCARD__() call, gcc will
silently throw away assignements to global register variables that
happen before the jump.
Here's the example:
extern void g(void);
static void f(void) {
R1 = g;
__DISCARD__()
goto *R1;
}
without the dummy function call, gcc throws away the assignment to R1
(gcc 3.4.3) gcc bug #20359.
*/
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc