[project @ 1999-12-03 18:17:29 by lewie]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgRetConv.lhs
index 77a37f3..d4784b6 100644 (file)
@@ -1,7 +1,7 @@
 %
 % (c) The GRASP Project, Glasgow University, 1992-1998
 %
-% $Id: CgRetConv.lhs,v 1.16 1998/12/18 17:40:52 simonpj Exp $
+% $Id: CgRetConv.lhs,v 1.19 1999/05/13 17:30:58 simonm Exp $
 %
 \section[CgRetConv]{Return conventions for the code generator}
 
@@ -21,10 +21,10 @@ module CgRetConv (
 import AbsCSyn         -- quite a few things
 import Constants       ( mAX_FAMILY_SIZE_FOR_VEC_RETURNS,
                          mAX_Vanilla_REG, mAX_Float_REG,
-                         mAX_Double_REG, 
-                         mAX_Real_Vanilla_REG, mAX_Real_Float_REG,
-                         mAX_Real_Double_REG,
-                         mAX_Long_REG
+                         mAX_Double_REG, mAX_Long_REG
+                       )
+import CmdLineOpts     ( opt_UseVanillaRegs, opt_UseFloatRegs,
+                         opt_UseDoubleRegs, opt_UseLongRegs
                        )
 import Maybes          ( catMaybes )
 import DataCon         ( dataConRawArgTys, DataCon )
@@ -182,17 +182,20 @@ We take these register supplies from the *real* registers, i.e. those
 that are guaranteed to map to machine registers.
 
 \begin{code}
-vanillaRegNos, floatRegNos, doubleRegNos :: [Int]
-vanillaRegNos   = [1 .. mAX_Real_Vanilla_REG]
-floatRegNos     = [1 .. mAX_Real_Float_REG]
-doubleRegNos    = [1 .. mAX_Real_Double_REG]
-longRegNos       = [1 .. mAX_Long_REG]
+vanillaRegNos, floatRegNos, doubleRegNos, longRegNos :: [Int]
+vanillaRegNos   = regList opt_UseVanillaRegs
+floatRegNos     = regList opt_UseFloatRegs
+doubleRegNos    = regList opt_UseDoubleRegs
+longRegNos       = regList opt_UseLongRegs
 
 allVanillaRegNos, allFloatRegNos, allDoubleRegNos, allLongRegNos :: [Int]
-allVanillaRegNos = [1 .. mAX_Vanilla_REG]
-allFloatRegNos  = [1 .. mAX_Float_REG]
-allDoubleRegNos         = [1 .. mAX_Double_REG]
-allLongRegNos   = [1 .. mAX_Double_REG]
+allVanillaRegNos = regList mAX_Vanilla_REG
+allFloatRegNos  = regList mAX_Float_REG
+allDoubleRegNos         = regList mAX_Double_REG
+allLongRegNos   = regList mAX_Long_REG
+
+regList 0 = []
+regList n = [1 .. n]
 
 type AvailRegs = ( [Int]   -- available vanilla regs.
                 , [Int]   -- floats