Whitespace only in cmm/CLabel.hs
authorIan Lynagh <igloo@earth.li>
Sun, 2 Oct 2011 18:30:44 +0000 (19:30 +0100)
committerIan Lynagh <igloo@earth.li>
Sun, 2 Oct 2011 18:30:44 +0000 (19:30 +0100)
compiler/cmm/CLabel.hs

index 0acf57a..3873f45 100644 (file)
 -----------------------------------------------------------------------------
 
 module CLabel (
-       CLabel, -- abstract type
-       ForeignLabelSource(..),
-       pprDebugCLabel,
-
-       mkClosureLabel,
-       mkSRTLabel,
-       mkInfoTableLabel,
-       mkEntryLabel,
+        CLabel, -- abstract type
+        ForeignLabelSource(..),
+        pprDebugCLabel,
+
+        mkClosureLabel,
+        mkSRTLabel,
+        mkInfoTableLabel,
+        mkEntryLabel,
         mkSlowEntryLabel,
-       mkConEntryLabel,
-       mkStaticConEntryLabel,
-       mkRednCountsLabel,
-       mkConInfoTableLabel,
-       mkStaticInfoTableLabel,
-       mkLargeSRTLabel,
-       mkApEntryLabel,
-       mkApInfoTableLabel,
-       mkClosureTableLabel,
-
-       mkLocalClosureLabel,
-       mkLocalInfoTableLabel,
-       mkLocalEntryLabel,
-       mkLocalConEntryLabel,
-       mkLocalStaticConEntryLabel,
-       mkLocalConInfoTableLabel,
-       mkLocalStaticInfoTableLabel,
-       mkLocalClosureTableLabel,
-
-       mkReturnPtLabel,
-       mkReturnInfoLabel,
-       mkAltLabel,
-       mkDefaultLabel,
-       mkBitmapLabel,
-       mkStringLitLabel,
-
-       mkAsmTempLabel,
+        mkConEntryLabel,
+        mkStaticConEntryLabel,
+        mkRednCountsLabel,
+        mkConInfoTableLabel,
+        mkStaticInfoTableLabel,
+        mkLargeSRTLabel,
+        mkApEntryLabel,
+        mkApInfoTableLabel,
+        mkClosureTableLabel,
+
+        mkLocalClosureLabel,
+        mkLocalInfoTableLabel,
+        mkLocalEntryLabel,
+        mkLocalConEntryLabel,
+        mkLocalStaticConEntryLabel,
+        mkLocalConInfoTableLabel,
+        mkLocalStaticInfoTableLabel,
+        mkLocalClosureTableLabel,
+
+        mkReturnPtLabel,
+        mkReturnInfoLabel,
+        mkAltLabel,
+        mkDefaultLabel,
+        mkBitmapLabel,
+        mkStringLitLabel,
+
+        mkAsmTempLabel,
 
         mkPlainModuleInitLabel,
 
-       mkSplitMarkerLabel,
-       mkDirty_MUT_VAR_Label,
-       mkUpdInfoLabel,
-       mkBHUpdInfoLabel,
-       mkIndStaticInfoLabel,
+        mkSplitMarkerLabel,
+        mkDirty_MUT_VAR_Label,
+        mkUpdInfoLabel,
+        mkBHUpdInfoLabel,
+        mkIndStaticInfoLabel,
         mkMainCapabilityLabel,
-       mkMAP_FROZEN_infoLabel,
-       mkMAP_DIRTY_infoLabel,
+        mkMAP_FROZEN_infoLabel,
+        mkMAP_DIRTY_infoLabel,
         mkEMPTY_MVAR_infoLabel,
 
-       mkTopTickyCtrLabel,
+        mkTopTickyCtrLabel,
         mkCAFBlackHoleInfoTableLabel,
         mkCAFBlackHoleEntryLabel,
-       mkRtsPrimOpLabel,
-       mkRtsSlowTickyCtrLabel,
+        mkRtsPrimOpLabel,
+        mkRtsSlowTickyCtrLabel,
 
         mkSelectorInfoLabel,
-       mkSelectorEntryLabel,
+        mkSelectorEntryLabel,
 
-       mkCmmInfoLabel,
-       mkCmmEntryLabel,
-       mkCmmRetInfoLabel,
-       mkCmmRetLabel,
-       mkCmmCodeLabel,
-       mkCmmDataLabel,
-       mkCmmGcPtrLabel,
+        mkCmmInfoLabel,
+        mkCmmEntryLabel,
+        mkCmmRetInfoLabel,
+        mkCmmRetLabel,
+        mkCmmCodeLabel,
+        mkCmmDataLabel,
+        mkCmmGcPtrLabel,
 
-       mkRtsApFastLabel,
+        mkRtsApFastLabel,
 
         mkPrimCallLabel,
 
-       mkForeignLabel,
+        mkForeignLabel,
         addLabelSize,
         foreignLabelStdcallInfo,
 
-       mkCCLabel, mkCCSLabel,
+        mkCCLabel, mkCCSLabel,
 
         DynamicLinkerLabelInfo(..),
         mkDynamicLinkerLabel,
         dynamicLinkerLabelInfo,
-        
+
         mkPicBaseLabel,
         mkDeadStripPreventer,
 
@@ -102,7 +102,7 @@ module CLabel (
         hasCAF,
         needsCDecl, isAsmTemp, maybeAsmTemp, externallyVisibleCLabel,
         isMathFun,
-       isCFunctionLabel, isGcPtrLabel, labelDynamic,
+        isCFunctionLabel, isGcPtrLabel, labelDynamic,
 
         -- * Conversions
         toClosureLbl, toSlowEntryLbl, toEntryLbl, toInfoLbl, toRednCountsLbl,
@@ -156,67 +156,67 @@ import UniqSet
 
 data CLabel
   = -- | A label related to the definition of a particular Id or Con in a .hs file.
-    IdLabel                    
-       Name                    
+    IdLabel
+        Name
         CafInfo
-       IdLabelInfo             -- encodes the suffix of the label
-  
+        IdLabelInfo             -- encodes the suffix of the label
+
   -- | A label from a .cmm file that is not associated with a .hs level Id.
-  | CmmLabel                   
-       PackageId               -- what package the label belongs to.
-       FastString              -- identifier giving the prefix of the label
-       CmmLabelInfo            -- encodes the suffix of the label
+  | CmmLabel
+        PackageId               -- what package the label belongs to.
+        FastString              -- identifier giving the prefix of the label
+        CmmLabelInfo            -- encodes the suffix of the label
 
   -- | A label with a baked-in \/ algorithmically generated name that definitely
   --    comes from the RTS. The code for it must compile into libHSrts.a \/ libHSrts.so
-  --    If it doesn't have an algorithmically generated name then use a CmmLabel 
+  --    If it doesn't have an algorithmically generated name then use a CmmLabel
   --    instead and give it an appropriate PackageId argument.
-  | RtsLabel                   
-       RtsLabelInfo
+  | RtsLabel
+        RtsLabelInfo
 
   -- | A 'C' (or otherwise foreign) label.
   --
-  | ForeignLabel 
-       FastString              -- name of the imported label.
+  | ForeignLabel
+        FastString              -- name of the imported label.
+
+        (Maybe Int)             -- possible '@n' suffix for stdcall functions
+                                -- When generating C, the '@n' suffix is omitted, but when
+                                -- generating assembler we must add it to the label.
 
-        (Maybe Int)            -- possible '@n' suffix for stdcall functions
-                               -- When generating C, the '@n' suffix is omitted, but when
-                               -- generating assembler we must add it to the label.
+        ForeignLabelSource      -- what package the foreign label is in.
 
-       ForeignLabelSource      -- what package the foreign label is in.
-       
         FunctionOrData
 
   -- | A family of labels related to a particular case expression.
-  | CaseLabel                  
-       {-# UNPACK #-} !Unique  -- Unique says which case expression
-       CaseLabelInfo
+  | CaseLabel
+        {-# UNPACK #-} !Unique  -- Unique says which case expression
+        CaseLabelInfo
 
-  | AsmTempLabel 
-       {-# UNPACK #-} !Unique
+  | AsmTempLabel
+        {-# UNPACK #-} !Unique
 
   | StringLitLabel
-       {-# UNPACK #-} !Unique
+        {-# UNPACK #-} !Unique
 
   | PlainModuleInitLabel        -- without the version & way info
-       Module
+        Module
 
   | CC_Label  CostCentre
   | CCS_Label CostCentreStack
 
-    
-  -- | These labels are generated and used inside the NCG only. 
-  --   They are special variants of a label used for dynamic linking
+
+  -- | These labels are generated and used inside the NCG only.
+  --    They are special variants of a label used for dynamic linking
   --    see module PositionIndependentCode for details.
   | DynamicLinkerLabel DynamicLinkerLabelInfo CLabel
-  -- | This label is generated and used inside the NCG only. 
-  --   It is used as a base for PIC calculations on some platforms.
-  --    It takes the form of a local numeric assembler label '1'; and 
+
+  -- | This label is generated and used inside the NCG only.
+  --    It is used as a base for PIC calculations on some platforms.
+  --    It takes the form of a local numeric assembler label '1'; and
   --    is pretty-printed as 1b, referring to the previous definition
   --    of 1: in the assembler source file.
-  | PicBaseLabel                
+  | PicBaseLabel
+
   -- | A label before an info table to prevent excessive dead-stripping on darwin
   | DeadStripPreventer CLabel
 
@@ -239,55 +239,55 @@ data CLabel
 data ForeignLabelSource
 
    -- | Label is in a named package
-   = ForeignLabelInPackage     PackageId
-  
+   = ForeignLabelInPackage      PackageId
+
    -- | Label is in some external, system package that doesn't also
-   --  contain compiled Haskell code, and is not associated with any .hi files.
-   --  We don't have to worry about Haskell code being inlined from
-   --  external packages. It is safe to treat the RTS package as "external".
-   | ForeignLabelInExternalPackage 
+   --   contain compiled Haskell code, and is not associated with any .hi files.
+   --   We don't have to worry about Haskell code being inlined from
+   --   external packages. It is safe to treat the RTS package as "external".
+   | ForeignLabelInExternalPackage
 
    -- | Label is in the package currenly being compiled.
-   --  This is only used for creating hacky tmp labels during code generation.
-   --  Don't use it in any code that might be inlined across a package boundary
-   --  (ie, core code) else the information will be wrong relative to the
-   --  destination module.
+   --   This is only used for creating hacky tmp labels during code generation.
+   --   Don't use it in any code that might be inlined across a package boundary
+   --   (ie, core code) else the information will be wrong relative to the
+   --   destination module.
    | ForeignLabelInThisPackage
-      
-   deriving (Eq, Ord)   
+
+   deriving (Eq, Ord)
 
 
 -- | For debugging problems with the CLabel representation.
---     We can't make a Show instance for CLabel because lots of its components don't have instances.
---     The regular Outputable instance only shows the label name, and not its other info.
+--      We can't make a Show instance for CLabel because lots of its components don't have instances.
+--      The regular Outputable instance only shows the label name, and not its other info.
 --
 pprDebugCLabel :: Platform -> CLabel -> SDoc
 pprDebugCLabel platform lbl
  = case lbl of
-       IdLabel{}       -> pprPlatform platform lbl <> (parens $ text "IdLabel")
-       CmmLabel pkg name _info 
-        -> pprPlatform platform lbl <> (parens $ text "CmmLabel" <+> ppr pkg)
+        IdLabel{}       -> pprPlatform platform lbl <> (parens $ text "IdLabel")
+        CmmLabel pkg name _info
+         -> pprPlatform platform lbl <> (parens $ text "CmmLabel" <+> ppr pkg)
 
-       RtsLabel{}      -> pprPlatform platform lbl <> (parens $ text "RtsLabel")
+        RtsLabel{}      -> pprPlatform platform lbl <> (parens $ text "RtsLabel")
 
-       ForeignLabel name mSuffix src funOrData
-        -> pprPlatform platform lbl <> (parens 
-                               $ text "ForeignLabel" 
-                               <+> ppr mSuffix
-                               <+> ppr src  
-                               <+> ppr funOrData)
+        ForeignLabel name mSuffix src funOrData
+         -> pprPlatform platform lbl <> (parens
+                                $ text "ForeignLabel"
+                                <+> ppr mSuffix
+                                <+> ppr src
+                                <+> ppr funOrData)
 
-       _               -> pprPlatform platform lbl <> (parens $ text "other CLabel)")
+        _               -> pprPlatform platform lbl <> (parens $ text "other CLabel)")
 
 
 -- True if a local IdLabel that we won't mark as exported
 type IsLocal = Bool
 
 data IdLabelInfo
-  = Closure            -- ^ Label for closure
+  = Closure             -- ^ Label for closure
   | SRT                 -- ^ Static reference table
   | InfoTable           -- ^ Info tables for closures; always read-only
-  | Entry              -- ^ Entry point
+  | Entry               -- ^ Entry point
   | Slow                -- ^ Slow entry point
 
   | LocalInfoTable      -- ^ Like InfoTable but not externally visible
@@ -295,12 +295,12 @@ data IdLabelInfo
 
   | RednCounts          -- ^ Label of place to keep Ticky-ticky  info for this Id
 
-  | ConEntry           -- ^ Constructor entry point
-  | ConInfoTable       -- ^ Corresponding info table
-  | StaticConEntry     -- ^ Static constructor entry point
-  | StaticInfoTable    -- ^ Corresponding info table
+  | ConEntry            -- ^ Constructor entry point
+  | ConInfoTable        -- ^ Corresponding info table
+  | StaticConEntry      -- ^ Static constructor entry point
+  | StaticInfoTable     -- ^ Corresponding info table
 
-  | ClosureTable       -- ^ Table of closures for Enum tycons
+  | ClosureTable        -- ^ Table of closures for Enum tycons
 
   deriving (Eq, Ord)
 
@@ -321,7 +321,7 @@ data RtsLabelInfo
   | RtsApEntry           Bool{-updatable-} Int{-arity-}
 
   | RtsPrimOp PrimOp
-  | RtsApFast    FastString    -- ^ _fast versions of generic apply
+  | RtsApFast     FastString    -- ^ _fast versions of generic apply
   | RtsSlowTickyCtr String
 
   deriving (Eq, Ord)
@@ -330,41 +330,41 @@ data RtsLabelInfo
 
 
 -- | What type of Cmm label we're dealing with.
---     Determines the suffix appended to the name when a CLabel.CmmLabel
---     is pretty printed.
+--      Determines the suffix appended to the name when a CLabel.CmmLabel
+--      is pretty printed.
 data CmmLabelInfo
-  = CmmInfo                    -- ^ misc rts info tabless,     suffix _info
-  | CmmEntry                   -- ^ misc rts entry points,     suffix _entry
-  | CmmRetInfo                 -- ^ misc rts ret info tables,  suffix _info
-  | CmmRet                     -- ^ misc rts return points,    suffix _ret
-  | CmmData                    -- ^ misc rts data bits, eg CHARLIKE_closure
-  | CmmCode                    -- ^ misc rts code
-  | CmmGcPtr                   -- ^ GcPtrs eg CHARLIKE_closure  
-  | CmmPrimCall                        -- ^ a prim call to some hand written Cmm code
+  = CmmInfo                     -- ^ misc rts info tabless,     suffix _info
+  | CmmEntry                    -- ^ misc rts entry points,     suffix _entry
+  | CmmRetInfo                  -- ^ misc rts ret info tables,  suffix _info
+  | CmmRet                      -- ^ misc rts return points,    suffix _ret
+  | CmmData                     -- ^ misc rts data bits, eg CHARLIKE_closure
+  | CmmCode                     -- ^ misc rts code
+  | CmmGcPtr                    -- ^ GcPtrs eg CHARLIKE_closure
+  | CmmPrimCall                 -- ^ a prim call to some hand written Cmm code
   deriving (Eq, Ord)
 
 data DynamicLinkerLabelInfo
-  = CodeStub                   -- MachO: Lfoo$stub, ELF: foo@plt
-  | SymbolPtr                  -- MachO: Lfoo$non_lazy_ptr, Windows: __imp_foo
-  | GotSymbolPtr               -- ELF: foo@got
-  | GotSymbolOffset            -- ELF: foo@gotoff
-  
+  = CodeStub                    -- MachO: Lfoo$stub, ELF: foo@plt
+  | SymbolPtr                   -- MachO: Lfoo$non_lazy_ptr, Windows: __imp_foo
+  | GotSymbolPtr                -- ELF: foo@got
+  | GotSymbolOffset             -- ELF: foo@gotoff
+
   deriving (Eq, Ord)
+
 
 -- -----------------------------------------------------------------------------
 -- Constructing CLabels
 -- -----------------------------------------------------------------------------
 
--- Constructing IdLabels 
+-- Constructing IdLabels
 -- These are always local:
-mkSlowEntryLabel       name c         = IdLabel name  c Slow
+mkSlowEntryLabel        name c         = IdLabel name  c Slow
 
-mkSRTLabel             name c  = IdLabel name  c SRT
-mkRednCountsLabel      name c  = IdLabel name  c RednCounts
+mkSRTLabel              name c  = IdLabel name  c SRT
+mkRednCountsLabel       name c  = IdLabel name  c RednCounts
 
 -- These have local & (possibly) external variants:
-mkLocalClosureLabel    name c  = IdLabel name  c Closure
+mkLocalClosureLabel     name c  = IdLabel name  c Closure
 mkLocalInfoTableLabel   name c  = IdLabel name  c LocalInfoTable
 mkLocalEntryLabel       name c  = IdLabel name  c LocalEntry
 mkLocalClosureTableLabel name c = IdLabel name  c ClosureTable
@@ -374,7 +374,7 @@ mkInfoTableLabel name       c     = IdLabel name c InfoTable
 mkEntryLabel name           c     = IdLabel name c Entry
 mkClosureTableLabel name    c     = IdLabel name c ClosureTable
 mkLocalConInfoTableLabel    c con = IdLabel con c ConInfoTable
-mkLocalConEntryLabel       c con = IdLabel con c ConEntry
+mkLocalConEntryLabel        c con = IdLabel con c ConEntry
 mkLocalStaticInfoTableLabel c con = IdLabel con c StaticInfoTable
 mkLocalStaticConEntryLabel  c con = IdLabel con c StaticConEntry
 mkConInfoTableLabel name    c     = IdLabel name c ConInfoTable
@@ -384,58 +384,58 @@ mkConEntryLabel name        c     = IdLabel name c ConEntry
 mkStaticConEntryLabel name  c     = IdLabel name c StaticConEntry
 
 -- Constructing Cmm Labels
-mkSplitMarkerLabel             = CmmLabel rtsPackageId (fsLit "__stg_split_marker")    CmmCode
-mkDirty_MUT_VAR_Label          = CmmLabel rtsPackageId (fsLit "dirty_MUT_VAR")         CmmCode
-mkUpdInfoLabel                 = CmmLabel rtsPackageId (fsLit "stg_upd_frame")         CmmInfo
-mkBHUpdInfoLabel               = CmmLabel rtsPackageId (fsLit "stg_bh_upd_frame" )     CmmInfo
-mkIndStaticInfoLabel           = CmmLabel rtsPackageId (fsLit "stg_IND_STATIC")        CmmInfo
-mkMainCapabilityLabel          = CmmLabel rtsPackageId (fsLit "MainCapability")        CmmData
-mkMAP_FROZEN_infoLabel         = CmmLabel rtsPackageId (fsLit "stg_MUT_ARR_PTRS_FROZEN0") CmmInfo
-mkMAP_DIRTY_infoLabel          = CmmLabel rtsPackageId (fsLit "stg_MUT_ARR_PTRS_DIRTY") CmmInfo
-mkEMPTY_MVAR_infoLabel         = CmmLabel rtsPackageId (fsLit "stg_EMPTY_MVAR")        CmmInfo
-mkTopTickyCtrLabel             = CmmLabel rtsPackageId (fsLit "top_ct")                CmmData
-mkCAFBlackHoleInfoTableLabel   = CmmLabel rtsPackageId (fsLit "stg_CAF_BLACKHOLE")     CmmInfo
-mkCAFBlackHoleEntryLabel       = CmmLabel rtsPackageId (fsLit "stg_CAF_BLACKHOLE")     CmmEntry
+mkSplitMarkerLabel              = CmmLabel rtsPackageId (fsLit "__stg_split_marker")    CmmCode
+mkDirty_MUT_VAR_Label           = CmmLabel rtsPackageId (fsLit "dirty_MUT_VAR")         CmmCode
+mkUpdInfoLabel                  = CmmLabel rtsPackageId (fsLit "stg_upd_frame")         CmmInfo
+mkBHUpdInfoLabel                = CmmLabel rtsPackageId (fsLit "stg_bh_upd_frame" )     CmmInfo
+mkIndStaticInfoLabel            = CmmLabel rtsPackageId (fsLit "stg_IND_STATIC")        CmmInfo
+mkMainCapabilityLabel           = CmmLabel rtsPackageId (fsLit "MainCapability")        CmmData
+mkMAP_FROZEN_infoLabel          = CmmLabel rtsPackageId (fsLit "stg_MUT_ARR_PTRS_FROZEN0") CmmInfo
+mkMAP_DIRTY_infoLabel           = CmmLabel rtsPackageId (fsLit "stg_MUT_ARR_PTRS_DIRTY") CmmInfo
+mkEMPTY_MVAR_infoLabel          = CmmLabel rtsPackageId (fsLit "stg_EMPTY_MVAR")        CmmInfo
+mkTopTickyCtrLabel              = CmmLabel rtsPackageId (fsLit "top_ct")                CmmData
+mkCAFBlackHoleInfoTableLabel    = CmmLabel rtsPackageId (fsLit "stg_CAF_BLACKHOLE")     CmmInfo
+mkCAFBlackHoleEntryLabel        = CmmLabel rtsPackageId (fsLit "stg_CAF_BLACKHOLE")     CmmEntry
 
 -----
 mkCmmInfoLabel,   mkCmmEntryLabel, mkCmmRetInfoLabel, mkCmmRetLabel,
   mkCmmCodeLabel, mkCmmDataLabel,  mkCmmGcPtrLabel
-       :: PackageId -> FastString -> CLabel
+        :: PackageId -> FastString -> CLabel
 
-mkCmmInfoLabel      pkg str    = CmmLabel pkg str CmmInfo
-mkCmmEntryLabel     pkg str    = CmmLabel pkg str CmmEntry
-mkCmmRetInfoLabel   pkg str    = CmmLabel pkg str CmmRetInfo
-mkCmmRetLabel       pkg str    = CmmLabel pkg str CmmRet
-mkCmmCodeLabel      pkg str    = CmmLabel pkg str CmmCode
-mkCmmDataLabel      pkg str    = CmmLabel pkg str CmmData
-mkCmmGcPtrLabel     pkg str    = CmmLabel pkg str CmmGcPtr
+mkCmmInfoLabel      pkg str     = CmmLabel pkg str CmmInfo
+mkCmmEntryLabel     pkg str     = CmmLabel pkg str CmmEntry
+mkCmmRetInfoLabel   pkg str     = CmmLabel pkg str CmmRetInfo
+mkCmmRetLabel       pkg str     = CmmLabel pkg str CmmRet
+mkCmmCodeLabel      pkg str     = CmmLabel pkg str CmmCode
+mkCmmDataLabel      pkg str     = CmmLabel pkg str CmmData
+mkCmmGcPtrLabel     pkg str     = CmmLabel pkg str CmmGcPtr
 
 
 -- Constructing RtsLabels
-mkRtsPrimOpLabel primop                = RtsLabel (RtsPrimOp primop)
+mkRtsPrimOpLabel primop         = RtsLabel (RtsPrimOp primop)
 
-mkSelectorInfoLabel  upd off   = RtsLabel (RtsSelectorInfoTable upd off)
-mkSelectorEntryLabel upd off   = RtsLabel (RtsSelectorEntry     upd off)
+mkSelectorInfoLabel  upd off    = RtsLabel (RtsSelectorInfoTable upd off)
+mkSelectorEntryLabel upd off    = RtsLabel (RtsSelectorEntry     upd off)
 
-mkApInfoTableLabel   upd off   = RtsLabel (RtsApInfoTable       upd off)
-mkApEntryLabel       upd off   = RtsLabel (RtsApEntry           upd off)
+mkApInfoTableLabel   upd off    = RtsLabel (RtsApInfoTable       upd off)
+mkApEntryLabel       upd off    = RtsLabel (RtsApEntry           upd off)
 
 
 -- A call to some primitive hand written Cmm code
 mkPrimCallLabel :: PrimCall -> CLabel
-mkPrimCallLabel (PrimCall str pkg)  
-       = CmmLabel pkg str CmmPrimCall
+mkPrimCallLabel (PrimCall str pkg)
+        = CmmLabel pkg str CmmPrimCall
 
 
 -- Constructing ForeignLabels
 
 -- | Make a foreign label
-mkForeignLabel 
-       :: FastString           -- name
-       -> Maybe Int            -- size prefix
-       -> ForeignLabelSource   -- what package it's in
-       -> FunctionOrData       
-       -> CLabel
+mkForeignLabel
+        :: FastString           -- name
+        -> Maybe Int            -- size prefix
+        -> ForeignLabelSource   -- what package it's in
+        -> FunctionOrData
+        -> CLabel
 
 mkForeignLabel str mb_sz src fod
     = ForeignLabel str mb_sz src  fod
@@ -455,19 +455,19 @@ foreignLabelStdcallInfo _lbl = Nothing
 
 
 -- Constructing Large*Labels
-mkLargeSRTLabel        uniq            = LargeSRTLabel uniq
-mkBitmapLabel  uniq            = LargeBitmapLabel uniq
+mkLargeSRTLabel uniq            = LargeSRTLabel uniq
+mkBitmapLabel   uniq            = LargeBitmapLabel uniq
 
 
 -- Constructin CaseLabels
-mkReturnPtLabel uniq           = CaseLabel uniq CaseReturnPt
-mkReturnInfoLabel uniq         = CaseLabel uniq CaseReturnInfo
-mkAltLabel      uniq tag       = CaseLabel uniq (CaseAlt tag)
-mkDefaultLabel  uniq           = CaseLabel uniq CaseDefault
+mkReturnPtLabel uniq            = CaseLabel uniq CaseReturnPt
+mkReturnInfoLabel uniq          = CaseLabel uniq CaseReturnInfo
+mkAltLabel      uniq tag        = CaseLabel uniq (CaseAlt tag)
+mkDefaultLabel  uniq            = CaseLabel uniq CaseDefault
 
 -- Constructing Cost Center Labels
-mkCCLabel          cc          = CC_Label cc
-mkCCSLabel         ccs         = CCS_Label ccs
+mkCCLabel           cc          = CC_Label cc
+mkCCSLabel          ccs         = CCS_Label ccs
 
 mkRtsApFastLabel str = RtsLabel (RtsApFast str)
 
@@ -481,28 +481,28 @@ mkHpcTicksLabel                = HpcTicksLabel
 
 -- Constructing labels used for dynamic linking
 mkDynamicLinkerLabel :: DynamicLinkerLabelInfo -> CLabel -> CLabel
-mkDynamicLinkerLabel           = DynamicLinkerLabel
+mkDynamicLinkerLabel            = DynamicLinkerLabel
 
 dynamicLinkerLabelInfo :: CLabel -> Maybe (DynamicLinkerLabelInfo, CLabel)
 dynamicLinkerLabelInfo (DynamicLinkerLabel info lbl) = Just (info, lbl)
-dynamicLinkerLabelInfo _       = Nothing
-    
+dynamicLinkerLabelInfo _        = Nothing
+
 mkPicBaseLabel :: CLabel
-mkPicBaseLabel                         = PicBaseLabel
+mkPicBaseLabel                  = PicBaseLabel
 
 
 -- Constructing miscellaneous other labels
 mkDeadStripPreventer :: CLabel -> CLabel
-mkDeadStripPreventer lbl       = DeadStripPreventer lbl
+mkDeadStripPreventer lbl        = DeadStripPreventer lbl
 
 mkStringLitLabel :: Unique -> CLabel
-mkStringLitLabel               = StringLitLabel
+mkStringLitLabel                = StringLitLabel
 
 mkAsmTempLabel :: Uniquable a => a -> CLabel
-mkAsmTempLabel a               = AsmTempLabel (getUnique a)
+mkAsmTempLabel a                = AsmTempLabel (getUnique a)
 
 mkPlainModuleInitLabel :: Module -> CLabel
-mkPlainModuleInitLabel mod     = PlainModuleInitLabel mod
+mkPlainModuleInitLabel mod      = PlainModuleInitLabel mod
 
 -- -----------------------------------------------------------------------------
 -- Convert between different kinds of label
@@ -556,50 +556,50 @@ needsCDecl :: CLabel -> Bool
   -- False <=> it's pre-declared; don't bother
   -- don't bother declaring SRT & Bitmap labels, we always make sure
   -- they are defined before use.
-needsCDecl (IdLabel _ _ SRT)           = False
-needsCDecl (LargeSRTLabel _)           = False
-needsCDecl (LargeBitmapLabel _)                = False
-needsCDecl (IdLabel _ _ _)             = True
-needsCDecl (CaseLabel _ _)             = True
+needsCDecl (IdLabel _ _ SRT)            = False
+needsCDecl (LargeSRTLabel _)            = False
+needsCDecl (LargeBitmapLabel _)         = False
+needsCDecl (IdLabel _ _ _)              = True
+needsCDecl (CaseLabel _ _)              = True
 needsCDecl (PlainModuleInitLabel _)     = True
 
-needsCDecl (StringLitLabel _)          = False
-needsCDecl (AsmTempLabel _)            = False
-needsCDecl (RtsLabel _)                        = False
-
-needsCDecl (CmmLabel pkgId _ _)                
-       -- Prototypes for labels defined in the runtime system are imported
-       --      into HC files via includes/Stg.h.
-       | pkgId == rtsPackageId         = False
-       
-       -- For other labels we inline one into the HC file directly.
-       | otherwise                     = True
-
-needsCDecl l@(ForeignLabel{})          = not (isMathFun l)
-needsCDecl (CC_Label _)                        = True
-needsCDecl (CCS_Label _)               = True
+needsCDecl (StringLitLabel _)           = False
+needsCDecl (AsmTempLabel _)             = False
+needsCDecl (RtsLabel _)                 = False
+
+needsCDecl (CmmLabel pkgId _ _)
+        -- Prototypes for labels defined in the runtime system are imported
+        --      into HC files via includes/Stg.h.
+        | pkgId == rtsPackageId         = False
+
+        -- For other labels we inline one into the HC file directly.
+        | otherwise                     = True
+
+needsCDecl l@(ForeignLabel{})           = not (isMathFun l)
+needsCDecl (CC_Label _)                 = True
+needsCDecl (CCS_Label _)                = True
 needsCDecl (HpcTicksLabel _)            = True
 
 
 -- | Check whether a label is a local temporary for native code generation
-isAsmTemp  :: CLabel -> Bool    
-isAsmTemp (AsmTempLabel _)             = True
-isAsmTemp _                            = False
+isAsmTemp  :: CLabel -> Bool
+isAsmTemp (AsmTempLabel _)              = True
+isAsmTemp _                             = False
 
 
 -- | If a label is a local temporary used for native code generation
 --      then return just its unique, otherwise nothing.
 maybeAsmTemp :: CLabel -> Maybe Unique
-maybeAsmTemp (AsmTempLabel uq)                 = Just uq
-maybeAsmTemp _                                 = Nothing
+maybeAsmTemp (AsmTempLabel uq)          = Just uq
+maybeAsmTemp _                          = Nothing
 
 
--- | Check whether a label corresponds to a C function that has 
+-- | Check whether a label corresponds to a C function that has
 --      a prototype in a system header somehere, or is built-in
 --      to the C compiler. For these labels we avoid generating our
 --      own C prototypes.
 isMathFun :: CLabel -> Bool
-isMathFun (ForeignLabel fs _ _ _)      = fs `elementOfUniqSet` math_funs
+isMathFun (ForeignLabel fs _ _ _)       = fs `elementOfUniqSet` math_funs
 isMathFun _ = False
 
 math_funs = mkUniqSet [
@@ -684,24 +684,24 @@ math_funs = mkUniqSet [
 
 -- -----------------------------------------------------------------------------
 -- | Is a CLabel visible outside this object file or not?
---     From the point of view of the code generator, a name is
---     externally visible if it has to be declared as exported
---     in the .o file's symbol table; that is, made non-static.
+--      From the point of view of the code generator, a name is
+--      externally visible if it has to be declared as exported
+--      in the .o file's symbol table; that is, made non-static.
 externallyVisibleCLabel :: CLabel -> Bool -- not C "static"
-externallyVisibleCLabel (CaseLabel _ _)                = False
-externallyVisibleCLabel (StringLitLabel _)     = False
-externallyVisibleCLabel (AsmTempLabel _)       = False
+externallyVisibleCLabel (CaseLabel _ _)         = False
+externallyVisibleCLabel (StringLitLabel _)      = False
+externallyVisibleCLabel (AsmTempLabel _)        = False
 externallyVisibleCLabel (PlainModuleInitLabel _)= True
 externallyVisibleCLabel (RtsLabel _)            = True
-externallyVisibleCLabel (CmmLabel _ _ _)       = True
-externallyVisibleCLabel (ForeignLabel{})       = True
-externallyVisibleCLabel (IdLabel name _ info)  = isExternalName name && externallyVisibleIdLabel info
-externallyVisibleCLabel (CC_Label _)           = True
-externallyVisibleCLabel (CCS_Label _)          = True
+externallyVisibleCLabel (CmmLabel _ _ _)        = True
+externallyVisibleCLabel (ForeignLabel{})        = True
+externallyVisibleCLabel (IdLabel name _ info)   = isExternalName name && externallyVisibleIdLabel info
+externallyVisibleCLabel (CC_Label _)            = True
+externallyVisibleCLabel (CCS_Label _)           = True
 externallyVisibleCLabel (DynamicLinkerLabel _ _)  = False
-externallyVisibleCLabel (HpcTicksLabel _)      = True
+externallyVisibleCLabel (HpcTicksLabel _)       = True
 externallyVisibleCLabel (LargeBitmapLabel _)    = False
-externallyVisibleCLabel (LargeSRTLabel _)      = False
+externallyVisibleCLabel (LargeSRTLabel _)       = False
 
 externallyVisibleIdLabel :: IdLabelInfo -> Bool
 externallyVisibleIdLabel SRT             = False
@@ -710,45 +710,45 @@ externallyVisibleIdLabel LocalEntry      = False
 externallyVisibleIdLabel _               = True
 
 -- -----------------------------------------------------------------------------
--- Finding the "type" of a CLabel 
+-- Finding the "type" of a CLabel
 
 -- For generating correct types in label declarations:
 
 data CLabelType
-  = CodeLabel  -- Address of some executable instructions
-  | DataLabel  -- Address of data, not a GC ptr
-  | GcPtrLabel -- Address of a (presumably static) GC object
+  = CodeLabel   -- Address of some executable instructions
+  | DataLabel   -- Address of data, not a GC ptr
+  | GcPtrLabel  -- Address of a (presumably static) GC object
 
 isCFunctionLabel :: CLabel -> Bool
 isCFunctionLabel lbl = case labelType lbl of
-                       CodeLabel -> True
-                       _other    -> False
+                        CodeLabel -> True
+                        _other    -> False
 
 isGcPtrLabel :: CLabel -> Bool
 isGcPtrLabel lbl = case labelType lbl of
-                       GcPtrLabel -> True
-                       _other     -> False
+                        GcPtrLabel -> True
+                        _other     -> False
 
 
 -- | Work out the general type of data at the address of this label
 --    whether it be code, data, or static GC object.
 labelType :: CLabel -> CLabelType
-labelType (CmmLabel _ _ CmmData)               = DataLabel
-labelType (CmmLabel _ _ CmmGcPtr)              = GcPtrLabel
-labelType (CmmLabel _ _ CmmCode)               = CodeLabel
-labelType (CmmLabel _ _ CmmInfo)               = DataLabel
-labelType (CmmLabel _ _ CmmEntry)              = CodeLabel
-labelType (CmmLabel _ _ CmmRetInfo)            = DataLabel
-labelType (CmmLabel _ _ CmmRet)                        = CodeLabel
+labelType (CmmLabel _ _ CmmData)                = DataLabel
+labelType (CmmLabel _ _ CmmGcPtr)               = GcPtrLabel
+labelType (CmmLabel _ _ CmmCode)                = CodeLabel
+labelType (CmmLabel _ _ CmmInfo)                = DataLabel
+labelType (CmmLabel _ _ CmmEntry)               = CodeLabel
+labelType (CmmLabel _ _ CmmRetInfo)             = DataLabel
+labelType (CmmLabel _ _ CmmRet)                 = CodeLabel
 labelType (RtsLabel (RtsSelectorInfoTable _ _)) = DataLabel
 labelType (RtsLabel (RtsApInfoTable _ _))       = DataLabel
 labelType (RtsLabel (RtsApFast _))              = CodeLabel
 labelType (CaseLabel _ CaseReturnInfo)          = DataLabel
-labelType (CaseLabel _ _)                      = CodeLabel
+labelType (CaseLabel _ _)                       = CodeLabel
 labelType (PlainModuleInitLabel _)              = CodeLabel
 labelType (LargeSRTLabel _)                     = DataLabel
 labelType (LargeBitmapLabel _)                  = DataLabel
-labelType (ForeignLabel _ _ _ IsFunction)      = CodeLabel
+labelType (ForeignLabel _ _ _ IsFunction)       = CodeLabel
 labelType (IdLabel _ _ info)                    = idInfoLabelType info
 labelType _                                     = DataLabel
 
@@ -761,7 +761,7 @@ idInfoLabelType info =
     StaticInfoTable -> DataLabel
     ClosureTable  -> DataLabel
     RednCounts    -> DataLabel
-    _            -> CodeLabel
+    _             -> CodeLabel
 
 
 -- -----------------------------------------------------------------------------
@@ -776,9 +776,9 @@ labelDynamic :: DynFlags -> PackageId -> CLabel -> Bool
 labelDynamic dflags this_pkg lbl =
   case lbl of
    -- is the RTS in a DLL or not?
-   RtsLabel _                  -> not opt_Static && (this_pkg /= rtsPackageId)
+   RtsLabel _           -> not opt_Static && (this_pkg /= rtsPackageId)
 
-   IdLabel n _ k       -> isDllName this_pkg n
+   IdLabel n _ k        -> isDllName this_pkg n
 
    -- When compiling in the "dyn" way, eack package is to be linked into
    -- its own shared library.
@@ -812,7 +812,7 @@ labelDynamic dflags this_pkg lbl =
    PlainModuleInitLabel m -> not opt_Static && this_pkg /= (modulePackageId m)
 
    -- Note that DynamicLinkerLabels do NOT require dynamic linking themselves.
-   _                -> False
+   _                 -> False
   where os = platformOS (targetPlatform dflags)
 
 {-
@@ -836,25 +836,25 @@ Convention:
 where <name> is <Module>_<name> for external names and <unique> for
 internal names. <type> is one of the following:
 
-        info                   Info table
-        srt                    Static reference table
-        srtd                   Static reference table descriptor
-        entry                  Entry code (function, closure)
-        slow                   Slow entry code (if any)
-        ret                    Direct return address    
-        vtbl                   Vector table
-        <n>_alt                Case alternative (tag n)
-        dflt                   Default case alternative
-        btm                    Large bitmap vector
-        closure                Static closure
-        con_entry              Dynamic Constructor entry code
-        con_info               Dynamic Constructor info table
-        static_entry           Static Constructor entry code
-        static_info            Static Constructor info table
-        sel_info               Selector info table
-        sel_entry              Selector entry code
-        cc                     Cost centre
-        ccs                    Cost centre stack
+         info                   Info table
+         srt                    Static reference table
+         srtd                   Static reference table descriptor
+         entry                  Entry code (function, closure)
+         slow                   Slow entry code (if any)
+         ret                    Direct return address
+         vtbl                   Vector table
+         <n>_alt                Case alternative (tag n)
+         dflt                   Default case alternative
+         btm                    Large bitmap vector
+         closure                Static closure
+         con_entry              Dynamic Constructor entry code
+         con_info               Dynamic Constructor info table
+         static_entry           Static Constructor entry code
+         static_info            Static Constructor info table
+         sel_info               Selector info table
+         sel_entry              Selector entry code
+         cc                     Cost centre
+         ccs                    Cost centre stack
 
 Many of these distinctions are only for documentation reasons.  For
 example, _ret is only distinguished from _entry to make it easy to
@@ -865,16 +865,16 @@ Note [Closure and info labels]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 For a function 'foo, we have:
    foo_info    : Points to the info table describing foo's closure
-                (and entry code for foo with tables next to code)
-   foo_closure : Static (no-free-var) closure only: 
+                 (and entry code for foo with tables next to code)
+   foo_closure : Static (no-free-var) closure only:
                  points to the statically-allocated closure
 
 For a data constructor (such as Just or Nothing), we have:
     Just_con_info: Info table for the data constructor itself
-                  the first word of a heap-allocated Just
-    Just_info:     Info table for the *worker function*, an 
-                  ordinary Haskell function of arity 1 that 
-                  allocates a (Just x) box:
+                   the first word of a heap-allocated Just
+    Just_info:     Info table for the *worker function*, an
+                   ordinary Haskell function of arity 1 that
+                   allocates a (Just x) box:
                       Just = \x -> Just x
     Just_closure:  The closure for this worker
 
@@ -897,19 +897,19 @@ pprCLabel :: Platform -> CLabel -> SDoc
 pprCLabel platform (AsmTempLabel u)
  | cGhcWithNativeCodeGen == "YES"
   =  getPprStyle $ \ sty ->
-     if asmStyle sty then 
-       ptext (asmTempLabelPrefix platform) <> pprUnique u
+     if asmStyle sty then
+        ptext (asmTempLabelPrefix platform) <> pprUnique u
      else
-       char '_' <> pprUnique u
+        char '_' <> pprUnique u
 
 pprCLabel platform (DynamicLinkerLabel info lbl)
  | cGhcWithNativeCodeGen == "YES"
    = pprDynamicLinkerAsmLabel platform info lbl
-   
+
 pprCLabel _ PicBaseLabel
  | cGhcWithNativeCodeGen == "YES"
    = ptext (sLit "1b")
-   
+
 pprCLabel platform (DeadStripPreventer lbl)
  | cGhcWithNativeCodeGen == "YES"
    = pprCLabel platform lbl <> ptext (sLit "_dsp")
@@ -949,42 +949,42 @@ pprCLbl (LargeBitmapLabel u)  = text "b" <> pprUnique u <> pp_cSEP <> ptext (sLi
 -- Some bitsmaps for tuple constructors have a numeric tag (e.g. '7')
 -- until that gets resolved we'll just force them to start
 -- with a letter so the label will be legal assmbly code.
-        
 
-pprCLbl (CmmLabel _ str CmmCode)       = ftext str
-pprCLbl (CmmLabel _ str CmmData)       = ftext str
-pprCLbl (CmmLabel _ str CmmGcPtr)      = ftext str
-pprCLbl (CmmLabel _ str CmmPrimCall)   = ftext str
+
+pprCLbl (CmmLabel _ str CmmCode)        = ftext str
+pprCLbl (CmmLabel _ str CmmData)        = ftext str
+pprCLbl (CmmLabel _ str CmmGcPtr)       = ftext str
+pprCLbl (CmmLabel _ str CmmPrimCall)    = ftext str
 
 pprCLbl (RtsLabel (RtsApFast str))   = ftext str <> ptext (sLit "_fast")
 
 pprCLbl (RtsLabel (RtsSelectorInfoTable upd_reqd offset))
   = hcat [ptext (sLit "stg_sel_"), text (show offset),
-               ptext (if upd_reqd 
-                       then (sLit "_upd_info") 
-                       else (sLit "_noupd_info"))
-       ]
+                ptext (if upd_reqd
+                        then (sLit "_upd_info")
+                        else (sLit "_noupd_info"))
+        ]
 
 pprCLbl (RtsLabel (RtsSelectorEntry upd_reqd offset))
   = hcat [ptext (sLit "stg_sel_"), text (show offset),
-               ptext (if upd_reqd 
-                       then (sLit "_upd_entry") 
-                       else (sLit "_noupd_entry"))
-       ]
+                ptext (if upd_reqd
+                        then (sLit "_upd_entry")
+                        else (sLit "_noupd_entry"))
+        ]
 
 pprCLbl (RtsLabel (RtsApInfoTable upd_reqd arity))
   = hcat [ptext (sLit "stg_ap_"), text (show arity),
-               ptext (if upd_reqd 
-                       then (sLit "_upd_info") 
-                       else (sLit "_noupd_info"))
-       ]
+                ptext (if upd_reqd
+                        then (sLit "_upd_info")
+                        else (sLit "_noupd_info"))
+        ]
 
 pprCLbl (RtsLabel (RtsApEntry upd_reqd arity))
   = hcat [ptext (sLit "stg_ap_"), text (show arity),
-               ptext (if upd_reqd 
-                       then (sLit "_upd_entry") 
-                       else (sLit "_noupd_entry"))
-       ]
+                ptext (if upd_reqd
+                        then (sLit "_upd_entry")
+                        else (sLit "_noupd_entry"))
+        ]
 
 pprCLbl (CmmLabel _ fs CmmInfo)
   = ftext fs <> ptext (sLit "_info")
@@ -998,10 +998,10 @@ pprCLbl (CmmLabel _ fs CmmRetInfo)
 pprCLbl (CmmLabel _ fs CmmRet)
   = ftext fs <> ptext (sLit "_ret")
 
-pprCLbl (RtsLabel (RtsPrimOp primop)) 
+pprCLbl (RtsLabel (RtsPrimOp primop))
   = ptext (sLit "stg_") <> ppr primop
 
-pprCLbl (RtsLabel (RtsSlowTickyCtr pat)) 
+pprCLbl (RtsLabel (RtsSlowTickyCtr pat))
   = ptext (sLit "SLOW_CALL_") <> text pat <> ptext (sLit "_ctr")
 
 pprCLbl (ForeignLabel str _ _ _)
@@ -1009,8 +1009,8 @@ pprCLbl (ForeignLabel str _ _ _)
 
 pprCLbl (IdLabel name cafs flavor) = ppr name <> ppIdFlavor flavor
 
-pprCLbl (CC_Label cc)          = ppr cc
-pprCLbl (CCS_Label ccs)        = ppr ccs
+pprCLbl (CC_Label cc)           = ppr cc
+pprCLbl (CCS_Label ccs)         = ppr ccs
 
 pprCLbl (PlainModuleInitLabel mod)
    = ptext (sLit "__stginit_") <> ppr mod
@@ -1020,21 +1020,21 @@ pprCLbl (HpcTicksLabel mod)
 
 ppIdFlavor :: IdLabelInfo -> SDoc
 ppIdFlavor x = pp_cSEP <>
-              (case x of
-                      Closure          -> ptext (sLit "closure")
-                      SRT              -> ptext (sLit "srt")
+               (case x of
+                       Closure          -> ptext (sLit "closure")
+                       SRT              -> ptext (sLit "srt")
                        InfoTable        -> ptext (sLit "info")
                        LocalInfoTable   -> ptext (sLit "info")
                        Entry            -> ptext (sLit "entry")
                        LocalEntry       -> ptext (sLit "entry")
                        Slow             -> ptext (sLit "slow")
-                      RednCounts       -> ptext (sLit "ct")
-                      ConEntry         -> ptext (sLit "con_entry")
-                      ConInfoTable     -> ptext (sLit "con_info")
-                      StaticConEntry   -> ptext (sLit "static_entry")
-                      StaticInfoTable  -> ptext (sLit "static_info")
-                      ClosureTable     -> ptext (sLit "closure_tbl")
-                     )
+                       RednCounts       -> ptext (sLit "ct")
+                       ConEntry         -> ptext (sLit "con_entry")
+                       ConInfoTable     -> ptext (sLit "con_info")
+                       StaticConEntry   -> ptext (sLit "static_entry")
+                       StaticInfoTable  -> ptext (sLit "static_info")
+                       ClosureTable     -> ptext (sLit "closure_tbl")
+                      )
 
 
 pp_cSEP = char '_'
@@ -1043,9 +1043,9 @@ pp_cSEP = char '_'
 instance Outputable ForeignLabelSource where
  ppr fs
   = case fs of
-       ForeignLabelInPackage pkgId     -> parens $ text "package: " <> ppr pkgId 
-       ForeignLabelInThisPackage       -> parens $ text "this package"
-       ForeignLabelInExternalPackage   -> parens $ text "external package"
+        ForeignLabelInPackage pkgId     -> parens $ text "package: " <> ppr pkgId
+        ForeignLabelInThisPackage       -> parens $ text "this package"
+        ForeignLabelInExternalPackage   -> parens $ text "external package"
 
 -- -----------------------------------------------------------------------------
 -- Machine-dependent knowledge about labels.