X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmm.hs;h=790d072293a01147321b34fc5ef29aee09f74be0;hb=fee569a69a4ce8c8d05b8a1fb8069d804dbd2b9c;hp=24542e1020763fccbd06fbeedbcc022120183fdf;hpb=3ed54797c2824e1ad5cbe8015401e9e648bf122a;p=ghc-hetmet.git diff --git a/compiler/cmm/Cmm.hs b/compiler/cmm/Cmm.hs index 24542e1..790d072 100644 --- a/compiler/cmm/Cmm.hs +++ b/compiler/cmm/Cmm.hs @@ -1,7 +1,3 @@ -{-# OPTIONS -fno-warn-name-shadowing -w #-} --- We'd like to use -fno-warn-orphans rather than -w, but old compilers --- don't understand it so building stage1 fails. - ----------------------------------------------------------------------------- -- -- Cmm data types @@ -20,26 +16,18 @@ module Cmm ( CmmInfoTable(..), ClosureTypeInfo(..), ProfilingInfo(..), ClosureTypeTag, GenBasicBlock(..), CmmBasicBlock, blockId, blockStmts, mapBlockStmts, CmmReturnInfo(..), - CmmStmt(..), CmmActuals, CmmFormal, CmmFormals, CmmHintFormals, + CmmStmt(..), CmmActual, CmmActuals, CmmFormal, CmmFormals, CmmKind, + CmmFormalsWithoutKinds, CmmFormalWithoutKind, CmmSafety(..), CmmCallTarget(..), CmmStatic(..), Section(..), - CmmExpr(..), cmmExprRep, maybeInvertCmmExpr, - CmmReg(..), cmmRegRep, - CmmLit(..), cmmLitRep, - LocalReg(..), localRegRep, localRegGCFollow, Kind(..), - BlockId(..), freshBlockId, + module CmmExpr, + + BlockId(..), mkBlockId, BlockEnv, emptyBlockEnv, lookupBlockEnv, extendBlockEnv, mkBlockEnv, BlockSet, emptyBlockSet, elemBlockSet, extendBlockSet, - GlobalReg(..), globalRegRep, - - node, nodeReg, spReg, hpReg, spLimReg ) where --- ^ In order not to do violence to the import structure of the rest --- of the compiler, module Cmm re-exports a number of identifiers --- defined in 'CmmExpr' - #include "HsVersions.h" import CmmExpr @@ -53,7 +41,7 @@ import FastString import Data.Word -import ZipCfg ( BlockId(..), freshBlockId +import ZipCfg ( BlockId(..), mkBlockId , BlockEnv, emptyBlockEnv, lookupBlockEnv, extendBlockEnv, mkBlockEnv , BlockSet, emptyBlockSet, elemBlockSet, extendBlockSet ) @@ -90,7 +78,8 @@ data GenCmmTop d h g = CmmProc -- A procedure h -- Extra header such as the info table CLabel -- Used to generate both info & entry labels - CmmFormals -- Argument locals live on entry (C-- procedure params) + CmmFormalsWithoutKinds -- Argument locals live on entry (C-- procedure params) + -- XXX Odd that there are no kinds, but there you are ---NR g -- Control-flow graph for the procedure's code | CmmData -- Static data @@ -229,7 +218,7 @@ data CmmStmt | CmmCall -- A call (forign, native or primitive), with CmmCallTarget - CmmHintFormals -- zero or more results + CmmFormals -- zero or more results CmmActuals -- zero or more arguments CmmSafety -- whether to build a continuation CmmReturnInfo @@ -250,15 +239,18 @@ data CmmStmt | CmmReturn -- Return from a native C-- function, CmmActuals -- with these return values. -type CmmActual = CmmExpr -type CmmActuals = [(CmmActual,MachHint)] -type CmmFormal = LocalReg -type CmmHintFormals = [(CmmFormal,MachHint)] -type CmmFormals = [CmmFormal] +type CmmKind = MachHint +type CmmActual = (CmmExpr, CmmKind) +type CmmFormal = (LocalReg,CmmKind) +type CmmActuals = [CmmActual] +type CmmFormals = [CmmFormal] +type CmmFormalWithoutKind = LocalReg +type CmmFormalsWithoutKinds = [CmmFormalWithoutKind] + data CmmSafety = CmmUnsafe | CmmSafe C_SRT --- | enable us to fold used registers over 'CmmActuals' and 'CmmHintFormals' -instance UserOfLocalRegs a => UserOfLocalRegs (a, MachHint) where +-- | enable us to fold used registers over 'CmmActuals' and 'CmmFormals' +instance UserOfLocalRegs a => UserOfLocalRegs (a, CmmKind) where foldRegsUsed f set (a, _) = foldRegsUsed f set a instance UserOfLocalRegs CmmStmt where