Re: [Haskell-cafe] Is this a known problem?

2007-10-14 Thread Ian Lynagh

Hi ok,

On Fri, Oct 05, 2007 at 11:04:06AM +1300, ok wrote:
 UltraSPARC II, Solaris 2.10, gcc 4.0.4 (gccfss),
 Haskell GHC 6.6.1 binary release.

The Sparc/Solaris ports has probably bitrotted. If you do an
unregisterised build instead then it should work:

http://hackage.haskell.org/trac/ghc/wiki/Building/Unregisterised


Thanks
Ian

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Is this a known problem?

2007-10-04 Thread ok

UltraSPARC II, Solaris 2.10, gcc 4.0.4 (gccfss),
Haskell GHC 6.6.1 binary release.

Trying to compile a simple file gives me oodles of errors because
ghc is generating something that makes gcc generate lots of these:

sethi %hi(some register),another register

For people unfamiliar with SPARC assembly code, the %hi(...) operation
returns the top bits of a *literal* address, it makes absolutely no
sense to give it a register.

I have tried this version of gccfss with lots of C code and have been
unable to make it generate this construction; it's only ghc's .hc files
that do it.

Running gcc by hand on the .hc file produces 8 warnings
...lib/ghc-6.6.1/include/Regs.h: ###: warning:
  call-clobbered register used for global register variable
-DNO_GLOBAL_REG_DECLS eliminated that.

Comparing the .s file produced using 'ghc -S' with the .s file
produced by gcc'ing the .hc produced some illumination:

.section.text,#slloc,#execinstr,#progbits
.align  4
#if GHC
.text
.align 4
#endif
s4AK_ret:
save%sp,-96,%sp
#if GHC
sethi   %hi(%l1),%i2
add %i2,%lo(%l1),%i5
ld  [%i2+%lo(%l1)],%i2
ld  [%i2],%l7
lduh[%l7-2],%l6
...
#else
sethi   %hi(MainCapability),%i5
add %i5,%lo(MainCapability),%i2
ld  [%i2+8],%i5
ld  [%i5],%i4
lduh[%i4-2],%i3
...
#endif

What with one thing and another, I'm not really sure that it's
gcc's fault.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe