From 239c42e04d094d9801052540246894a2f9958b5c Mon Sep 17 00:00:00 2001 From: panne Date: Mon, 11 Jul 2005 20:33:45 +0000 Subject: [PATCH] [project @ 2005-07-11 20:33:45 by panne] After some experiments, it seems like we're stealing too many registers from newer GCCs on SPARC, leading to "unable to find a register to spill in class `GENERAL_REGS'" errors. The fix is to leave l6 and l7 to GCC. Tested with a full 2-stage bootstrap (including OpenGL/GLUT packages) on SPARC Solaris 8 with GCC 3.4.4. A test case for this (which I'm too lazy/tired to commit) is: module Blah ( foo ) where import Foreign.Ptr ( FunPtr ) type Bar = Int -> Double -> Double -> Double -> IO () foreign import ccall unsafe "dynamic" foo :: FunPtr Bar -> Bar SimonM: MERGE TO STABLE (if nobody yells) --- ghc/includes/MachRegs.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ghc/includes/MachRegs.h b/ghc/includes/MachRegs.h index 9a18812..77efee1 100644 --- a/ghc/includes/MachRegs.h +++ b/ghc/includes/MachRegs.h @@ -624,9 +624,7 @@ #define REG_R3 l3 #define REG_R4 l4 #define REG_R5 l5 -#define REG_R6 l6 -#define REG_R7 l7 -#define REG_R8 i5 +#define REG_R6 i5 #define REG_F1 f22 #define REG_F2 f23 -- 1.7.10.4