summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonmar <unknown>2000-10-18 09:40:18 +0000
committersimonmar <unknown>2000-10-18 09:40:18 +0000
commita3113e20b1aa37dd1be8af8bf6859d279c654490 (patch)
tree32f02620491f546e74a1b6be852960b4e88b6f4a
parentea800ce5b69f12226c69bf68c41d2efa14c084f4 (diff)
downloadhaskell-a3113e20b1aa37dd1be8af8bf6859d279c654490.tar.gz
[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.
-rw-r--r--ghc/compiler/codeGen/CgRetConv.lhs27
-rw-r--r--ghc/compiler/main/CmdLineOpts.lhs25
-rw-r--r--ghc/compiler/main/DriverFlags.hs6
3 files changed, 28 insertions, 30 deletions
diff --git a/ghc/compiler/codeGen/CgRetConv.lhs b/ghc/compiler/codeGen/CgRetConv.lhs
index 4c6d89b9c6..cec13b27c9 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 aa7498da15..4fc824040a 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 85ee4d1746..cd6a60c1dd 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) )
]
-----------------------------------------------------------------------------