From: simonmar Date: Wed, 18 Oct 2000 09:40:18 +0000 (+0000) Subject: [project @ 2000-10-18 09:40:17 by simonmar] X-Git-Tag: Approximately_9120_patches~3542 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=a3113e20b1aa37dd1be8af8bf6859d279c654490;p=ghc-hetmet.git [project @ 2000-10-18 09:40:17 by simonmar] - Dynamicise another couple of options (-fgenerics & -freport-compile) The rest look awkward to move into DynFlags. - Move opt_UseVanillaRegs & friends to CgRetConv, since they aren't real options. --- diff --git a/ghc/compiler/codeGen/CgRetConv.lhs b/ghc/compiler/codeGen/CgRetConv.lhs index 4c6d89b..cec13b2 100644 --- a/ghc/compiler/codeGen/CgRetConv.lhs +++ b/ghc/compiler/codeGen/CgRetConv.lhs @@ -1,7 +1,7 @@ % % (c) The GRASP Project, Glasgow University, 1992-1998 % -% $Id: CgRetConv.lhs,v 1.27 2000/10/12 15:17:08 sewardj Exp $ +% $Id: CgRetConv.lhs,v 1.28 2000/10/18 09:40:17 simonmar Exp $ % \section[CgRetConv]{Return conventions for the code generator} @@ -21,11 +21,11 @@ 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_Long_REG - ) -import CmdLineOpts ( opt_UseVanillaRegs, opt_UseFloatRegs, - opt_UseDoubleRegs, opt_UseLongRegs + mAX_Double_REG, mAX_Long_REG, + mAX_Real_Vanilla_REG, mAX_Real_Float_REG, + mAX_Real_Double_REG, mAX_Real_Long_REG ) +import CmdLineOpts ( opt_Unregisterised ) import Maybes ( catMaybes ) import PrimRep ( isFloatingRep, PrimRep(..), is64BitRep ) import TyCon ( TyCon, tyConFamilySize ) @@ -185,11 +185,20 @@ We take these register supplies from the *real* registers, i.e. those that are guaranteed to map to machine registers. \begin{code} +useVanillaRegs | opt_Unregisterised = 0 + | otherwise = mAX_Real_Vanilla_REG +useFloatRegs | opt_Unregisterised = 0 + | otherwise = mAX_Real_Float_REG +useDoubleRegs | opt_Unregisterised = 0 + | otherwise = mAX_Real_Double_REG +useLongRegs | opt_Unregisterised = 0 + | otherwise = mAX_Real_Long_REG + vanillaRegNos, floatRegNos, doubleRegNos, longRegNos :: [Int] -vanillaRegNos = regList opt_UseVanillaRegs -floatRegNos = regList opt_UseFloatRegs -doubleRegNos = regList opt_UseDoubleRegs -longRegNos = regList opt_UseLongRegs +vanillaRegNos = regList useVanillaRegs +floatRegNos = regList useFloatRegs +doubleRegNos = regList useDoubleRegs +longRegNos = regList useLongRegs allVanillaRegNos, allFloatRegNos, allDoubleRegNos, allLongRegNos :: [Int] allVanillaRegNos = regList mAX_Vanilla_REG diff --git a/ghc/compiler/main/CmdLineOpts.lhs b/ghc/compiler/main/CmdLineOpts.lhs index aa7498d..4fc8240 100644 --- a/ghc/compiler/main/CmdLineOpts.lhs +++ b/ghc/compiler/main/CmdLineOpts.lhs @@ -40,7 +40,6 @@ module CmdLineOpts ( opt_AllStrict, opt_DictsStrict, opt_MaxContextReductionDepth, - opt_Generics, opt_IrrefutableTuples, opt_NumbersStrict, opt_Parallel, @@ -87,16 +86,9 @@ module CmdLineOpts ( opt_OmitInterfacePragmas, opt_NoPruneTyDecls, opt_NoPruneDecls, - opt_ReportCompile, opt_Static, opt_Unregisterised, - opt_Verbose, - - -- Code generation - opt_UseVanillaRegs, - opt_UseFloatRegs, - opt_UseDoubleRegs, - opt_UseLongRegs + opt_Verbose ) where #include "HsVersions.h" @@ -276,6 +268,10 @@ data DynFlag | Opt_AllowOverlappingInstances | Opt_AllowUndecidableInstances | Opt_GlasgowExts + | Opt_Generics + + -- misc + | Opt_ReportCompile deriving (Eq) data DynFlags = DynFlags { @@ -380,7 +376,6 @@ opt_DoTickyProfiling = lookUp SLIT("-fticky-ticky") -- language opts opt_AllStrict = lookUp SLIT("-fall-strict") opt_DictsStrict = lookUp SLIT("-fdicts-strict") -opt_Generics = lookUp SLIT("-fgenerics") opt_IrrefutableTuples = lookUp SLIT("-firrefutable-tuples") opt_MaxContextReductionDepth = lookup_def_int "-fcontext-stack" mAX_CONTEXT_REDUCTION_DEPTH opt_NumbersStrict = lookUp SLIT("-fnumbers-strict") @@ -439,21 +434,11 @@ opt_UF_UpdateInPlace = lookUp SLIT("-funfolding-update-in-place") opt_UF_CheapOp = ( 1 :: Int) -- Only one instruction; and the args are charged for opt_UF_DearOp = ( 4 :: Int) -opt_ReportCompile = lookUp SLIT("-freport-compile") opt_NoPruneDecls = lookUp SLIT("-fno-prune-decls") opt_NoPruneTyDecls = lookUp SLIT("-fno-prune-tydecls") opt_Static = lookUp SLIT("-static") opt_Unregisterised = lookUp SLIT("-funregisterised") opt_Verbose = lookUp SLIT("-v") - -opt_UseVanillaRegs | opt_Unregisterised = 0 - | otherwise = mAX_Real_Vanilla_REG -opt_UseFloatRegs | opt_Unregisterised = 0 - | otherwise = mAX_Real_Float_REG -opt_UseDoubleRegs | opt_Unregisterised = 0 - | otherwise = mAX_Real_Double_REG -opt_UseLongRegs | opt_Unregisterised = 0 - | otherwise = mAX_Real_Long_REG \end{code} %************************************************************************ diff --git a/ghc/compiler/main/DriverFlags.hs b/ghc/compiler/main/DriverFlags.hs index 85ee4d1..cd6a60c 100644 --- a/ghc/compiler/main/DriverFlags.hs +++ b/ghc/compiler/main/DriverFlags.hs @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------- --- $Id: DriverFlags.hs,v 1.5 2000/10/17 13:22:10 simonmar Exp $ +-- $Id: DriverFlags.hs,v 1.6 2000/10/18 09:40:18 simonmar Exp $ -- -- Driver flags -- @@ -397,6 +397,10 @@ dynamic_flags = [ , ( "fallow-undecidable-instances", NoArg (setDynFlag Opt_AllowUndecidableInstances) ) + + , ( "fgenerics", NoArg (setDynFlag Opt_Generics) ) + + , ( "freport-compile", NoArg (setDynFlag Opt_ReportCompile) ) ] -----------------------------------------------------------------------------