Make some more modules use LazyUniqFM instead of UniqFM
authorIan Lynagh <igloo@earth.li>
Thu, 7 Feb 2008 01:57:14 +0000 (01:57 +0000)
committerIan Lynagh <igloo@earth.li>
Thu, 7 Feb 2008 01:57:14 +0000 (01:57 +0000)
If these modules use UniqFM then we get a stack overflow when compiling
modules that use fundeps. I haven't tracked down the actual cause.

21 files changed:
compiler/basicTypes/NewDemand.lhs
compiler/basicTypes/VarEnv.lhs
compiler/coreSyn/CoreFVs.lhs
compiler/coreSyn/CoreTidy.lhs
compiler/nativeGen/AsmCodeGen.lhs
compiler/nativeGen/MachRegs.lhs
compiler/nativeGen/RegAllocColor.hs
compiler/nativeGen/RegAllocLinear.hs
compiler/nativeGen/RegAllocStats.hs
compiler/nativeGen/RegLiveness.hs
compiler/nativeGen/RegSpillCost.hs
compiler/simplCore/OccurAnal.lhs
compiler/stranal/DmdAnal.lhs
compiler/typecheck/TcGadt.lhs
compiler/utils/GraphBase.hs
compiler/utils/GraphColor.hs
compiler/utils/GraphOps.hs
compiler/utils/GraphPpr.hs
compiler/utils/LazyUniqFM.lhs
compiler/utils/UniqSet.lhs
compiler/vectorise/VectType.hs

index 2361972..062e25f 100644 (file)
@@ -35,7 +35,7 @@ module NewDemand(
 import StaticFlags
 import BasicTypes
 import VarEnv
-import LazyUniqFM
+import UniqFM
 import Util
 import Outputable
 \end{code}
index dbef903..3b0be0b 100644 (file)
@@ -46,7 +46,7 @@ module VarEnv (
 import OccName
 import Var
 import VarSet
-import LazyUniqFM
+import UniqFM
 import Unique
 import Util
 import Maybes
index 199cc69..57316c7 100644 (file)
@@ -38,7 +38,7 @@ import CoreSyn
 import Id
 import IdInfo
 import NameSet
-import LazyUniqFM
+import UniqFM
 import Name
 import VarSet
 import Var
index 4da1dc3..5acee51 100644 (file)
@@ -22,7 +22,7 @@ import IdInfo
 import Type
 import Var
 import VarEnv
-import LazyUniqFM
+import UniqFM
 import Name hiding (tidyNameOcc)
 import OccName
 import SrcLoc
index e0608cb..6d3bf7c 100644 (file)
@@ -40,7 +40,7 @@ import MachOp
 import CLabel
 import State
 
-import LazyUniqFM
+import UniqFM
 import Unique          ( Unique, getUnique )
 import UniqSupply
 import List            ( groupBy, sortBy )
index 2c6238d..5832abe 100644 (file)
@@ -105,8 +105,7 @@ import UniqSet
 import Constants
 import FastTypes
 import FastBool
-import qualified UniqFM as S
-import LazyUniqFM
+import UniqFM
 
 #if powerpc_TARGET_ARCH
 import Data.Word       ( Word8, Word16, Word32 )
@@ -520,20 +519,20 @@ worst n classN classC
 
 {-# INLINE regClass      #-}
 trivColorable :: RegClass -> UniqSet Reg -> UniqSet Reg -> Bool
-trivColorable classN (MkUniqFM conflicts) (MkUniqFM exclusions)
+trivColorable classN conflicts exclusions
  = {-# SCC "trivColorable" #-}
    let
        {-# INLINE   isSqueesed    #-}
        isSqueesed cI cF ufm
          = case ufm of
-               S.NodeUFM _ _ left right
+               NodeUFM _ _ left right
                 -> case isSqueesed cI cF right of
                        (# s, cI', cF' #)
                         -> case s of
                                False   -> isSqueesed cI' cF' left
                                True    -> (# True, cI', cF' #)
 
-               S.LeafUFM _ (Lazy reg)
+               LeafUFM _ reg
                 -> case regClass reg of
                        RcInteger
                         -> case cI +# _ILIT(1) of
@@ -543,7 +542,7 @@ trivColorable classN (MkUniqFM conflicts) (MkUniqFM exclusions)
                         -> case cF +# _ILIT(1) of
                                cF' -> (# cF' >=# ALLOCATABLE_REGS_DOUBLE,  cI, cF' #)
 
-               S.EmptyUFM
+               EmptyUFM
                 ->     (# False, cI, cF #)
 
    in case isSqueesed (_ILIT(0)) (_ILIT(0)) conflicts of
index e2e002a..51a0bff 100644 (file)
@@ -24,7 +24,7 @@ import PprMach
 
 import UniqSupply
 import UniqSet
-import LazyUniqFM
+import UniqFM
 import Bag
 import Outputable
 import DynFlags
index b333c68..e6491b7 100644 (file)
@@ -97,7 +97,7 @@ import Cmm hiding (RegSet)
 import Digraph
 import Unique          ( Uniquable(getUnique), Unique )
 import UniqSet
-import LazyUniqFM
+import UniqFM
 import UniqSupply
 import Outputable
 import State
index 32c0942..58a69fa 100644 (file)
@@ -30,7 +30,7 @@ import MachInstrs
 import Cmm
 
 import Outputable
-import LazyUniqFM
+import UniqFM
 import UniqSet
 import State
 
index 6f21db8..9ee9897 100644 (file)
@@ -42,7 +42,7 @@ import Digraph
 import Outputable
 import Unique
 import UniqSet
-import LazyUniqFM
+import UniqFM
 import UniqSupply
 import Bag
 import State
index b492738..d987937 100644 (file)
@@ -23,7 +23,7 @@ import MachInstrs
 import MachRegs
 import Cmm
 
-import LazyUniqFM
+import UniqFM
 import UniqSet
 import Outputable
 import State
index efc51ba..bdf38ee 100644 (file)
@@ -33,7 +33,7 @@ import Maybes         ( orElse )
 import Digraph         ( stronglyConnCompR, SCC(..) )
 import PrelNames       ( buildIdKey, foldrIdKey, runSTRepIdKey, augmentIdKey )
 import Unique          ( Unique )
-import LazyUniqFM              ( keysUFM, intersectUFM_C, foldUFM_Directly )
+import UniqFM          ( keysUFM, intersectUFM_C, foldUFM_Directly )
 import Util            ( mapAndUnzip )
 import Outputable
 
index c445324..66bf926 100644 (file)
@@ -45,7 +45,7 @@ import Var            ( Var )
 import VarEnv
 import TysWiredIn      ( unboxedPairDataCon )
 import TysPrim         ( realWorldStatePrimTy )
-import LazyUniqFM              ( plusUFM_C, addToUFM_Directly, lookupUFM_Directly,
+import UniqFM          ( plusUFM_C, addToUFM_Directly, lookupUFM_Directly,
                          keysUFM, minusUFM, ufmToList, filterUFM )
 import Type            ( isUnLiftedType, coreEqType, splitTyConApp_maybe )
 import Coercion         ( coercionKind )
index b3156ed..b556e89 100644 (file)
@@ -40,7 +40,7 @@ import Control.Monad
 import Outputable
 import TcType
 import Unique
-import LazyUniqFM
+import UniqFM
 \end{code}
 
 
index 3948c81..04eda96 100644 (file)
@@ -14,7 +14,7 @@ module GraphBase (
 where
 
 import UniqSet
-import LazyUniqFM
+import UniqFM
 
 
 -- | A fn to check if a node is trivially colorable
index e381fbf..8e7989d 100644 (file)
@@ -19,7 +19,7 @@ import GraphOps
 import GraphPpr
 
 import Unique
-import LazyUniqFM
+import UniqFM
 import UniqSet
 import Outputable      
 
index a82ff68..880f3c6 100644 (file)
@@ -24,7 +24,7 @@ import GraphBase
 import Outputable
 import Unique
 import UniqSet
-import LazyUniqFM
+import UniqFM
 
 import Data.List       hiding (union)
 import Data.Maybe
index 0e82b31..1df5158 100644 (file)
@@ -12,7 +12,7 @@ import GraphBase
 import Outputable
 import Unique
 import UniqSet
-import LazyUniqFM
+import UniqFM
 
 import Data.List
 import Data.Maybe
index b7ac15d..d8132e3 100644 (file)
@@ -13,9 +13,7 @@ Basically, the things need to be in class @Uniquable@, and we use the
 \begin{code}
 {-# OPTIONS -Wall -fno-warn-name-shadowing -Werror -fallow-undecidable-instances #-}
 module LazyUniqFM (
-       UniqFM(..),     -- abstract type
-    -- XXX Not actually abstract because of nativeGen/MachRegs; sigh
-    Lazy(Lazy), -- XXX Also for nativeGen/MachRegs; sigh
+       UniqFM,         -- abstract type
 
        emptyUFM,
        unitUFM,
index 90e0c9f..9a03315 100644 (file)
@@ -22,7 +22,7 @@ module UniqSet (
     ) where
 
 import Maybes
-import LazyUniqFM
+import UniqFM
 import Unique
 
 #if ! OMIT_NATIVE_CODEGEN
index 972aca1..86dcaf2 100644 (file)
@@ -39,7 +39,7 @@ import TysWiredIn
 import TysPrim           ( intPrimTy )
 
 import Unique
-import LazyUniqFM
+import UniqFM
 import UniqSet
 import Util              ( singleton )
 import Digraph           ( SCC(..), stronglyConnComp )