I seem to have found the ghc/gcc 2.95 problem. There was a bug in one of
the constraints on an inline-assembly fragment in the PrimOp for small
integer multiplication; patch below.
I've run some benchmarks, and gcc 2.95 does a *much* better job than 2.7.2.1
of compiling the garbage collector: it lops an average of something like 15%
off the GC time. wheyhey!
Haven't tried gcc 2.95 on a Sparc yet.
Cheers,
Simon
*** PrimOps.h 1999/07/29 10:00:22 1.33
--- PrimOps.h 1999/08/24 09:36:41 1.35
***************
*** 1,5 ****
/*
----------------------------------------------------------------------------
-
! * $Id: PrimOps.h,v 1.33 1999/07/29 10:00:22 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
--- 1,5 ----
/*
----------------------------------------------------------------------------
-
! * $Id: PrimOps.h,v 1.35 1999/08/24 09:36:41 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
***************
*** 132,138 ****
jno 1f\n\t \
movl $1,%1\n\t \
1:" \
! : "=r" (r), "=r" (c) : "r" (a), "0" (b)); \
}
#elif SIZEOF_VOID_P == 4
--- 132,138 ----
jno 1f\n\t \
movl $1,%1\n\t \
1:" \
! : "=r" (r), "=&r" (c) : "r" (a), "0" (b)); \
}
#elif SIZEOF_VOID_P == 4