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