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

Reply via email to