[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgCase.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CgCase where
3 import AbsCSyn(AbstractC)
4 import BasicLit(BasicLit)
5 import CgBindery(CgIdInfo)
6 import CgMonad(CgInfoDownwards, CgState, EndOfBlockInfo, StubFlag)
7 import CostCentre(CostCentre)
8 import HeapOffs(HeapOffset)
9 import Id(Id, IdDetails)
10 import IdInfo(IdInfo)
11 import Maybes(Labda)
12 import PrimOps(PrimOp)
13 import StgSyn(StgAtom, StgBinding, StgCaseAlternatives, StgCaseDefault, StgExpr)
14 import UniType(UniType)
15 import UniqFM(UniqFM)
16 import Unique(Unique)
17 data CgState    {-# GHC_PRAGMA MkCgState AbstractC (UniqFM CgIdInfo) ((Int, [(Int, StubFlag)], Int, Int), (Int, [Int], Int, Int), (HeapOffset, HeapOffset)) #-}
18 data Id         {-# GHC_PRAGMA Id Unique UniType IdInfo IdDetails #-}
19 data StgCaseAlternatives a b    {-# GHC_PRAGMA StgAlgAlts UniType [(Id, [a], [Bool], StgExpr a b)] (StgCaseDefault a b) | StgPrimAlts UniType [(BasicLit, StgExpr a b)] (StgCaseDefault a b) #-}
20 data StgExpr a b        {-# GHC_PRAGMA StgApp (StgAtom b) [StgAtom b] (UniqFM b) | StgConApp Id [StgAtom b] (UniqFM b) | StgPrimApp PrimOp [StgAtom b] (UniqFM b) | StgCase (StgExpr a b) (UniqFM b) (UniqFM b) Unique (StgCaseAlternatives a b) | StgLet (StgBinding a b) (StgExpr a b) | StgLetNoEscape (UniqFM b) (UniqFM b) (StgBinding a b) (StgExpr a b) | StgSCC UniType CostCentre (StgExpr a b) #-}
21 cgCase :: StgExpr Id Id -> UniqFM Id -> UniqFM Id -> Unique -> StgCaseAlternatives Id Id -> CgInfoDownwards -> CgState -> CgState
22         {-# GHC_PRAGMA _A_ 5 _U_ 2222222 _N_ _S_ "SLLLL" _N_ _N_ #-}
23 saveVolatileVarsAndRegs :: UniqFM Id -> CgInfoDownwards -> CgState -> ((AbstractC, EndOfBlockInfo, Labda Int), CgState)
24         {-# GHC_PRAGMA _A_ 1 _U_ 222 _N_ _N_ _N_ _N_ #-}
25