[project @ 1996-12-19 18:35:23 by simonpj]
[ghc-hetmet.git] / ghc / compiler / utils / SpecLoop.lhi
1 This loop-breaking module is used solely to braek the loops caused by
2 SPECIALIZE pragmas.
3
4 \begin{code}
5 interface SpecLoop where
6
7 import RdrHsSyn         ( RdrName )
8 import Name             ( Name, OrigName, OccName )
9 import TyVar            ( GenTyVar )
10 import TyCon            ( TyCon )
11 import Class            ( GenClass, GenClassOp )
12 import Id               ( GenId )
13 import Unique           ( Unique )
14 import UniqFM           ( Uniquable(..) )
15 import MachRegs         ( Reg )
16 import CLabel           ( CLabel )
17
18 data RdrName 
19 data GenClass a b
20 data GenClassOp a
21 data GenId a            -- NB: fails the optimisation criterion
22 data GenTyVar a         -- NB: fails the optimisation criterion
23 data Name
24 data OrigName
25 data OccName
26 data TyCon
27 data Unique
28 data Reg
29 data CLabel
30
31
32 class Uniquable a where
33         uniqueOf :: a -> Unique
34
35 -- SPECIALIZing in FiniteMap
36 instance Eq Reg
37 instance Eq CLabel
38 instance Eq OccName
39 instance Eq RdrName
40 instance Eq OrigName
41 instance Eq (GenId a)
42 instance Eq TyCon
43 instance Eq (GenClass a b)
44 instance Eq Unique
45 instance Eq Name
46
47 instance Ord Reg
48 instance Ord CLabel
49 instance Ord OccName
50 instance Ord RdrName
51 instance Ord OrigName
52 instance Ord (GenId a)
53 instance Ord TyCon
54 instance Ord (GenClass a b)
55 instance Ord Unique
56 instance Ord Name
57
58 -- SPECIALIZing in UniqFM, UniqSet
59 instance Uniquable OrigName
60 instance Uniquable (GenId a)
61 instance Uniquable TyCon
62 instance Uniquable (GenClass a b)
63 instance Uniquable Unique
64 instance Uniquable Name
65
66 -- SPECIALIZing in Name
67 \end{code}