Other modules should access this info through ClosureInfo.
\begin{code}
-{-# OPTIONS_GHC -w #-}
+{-# OPTIONS -w #-}
-- The above warning supression flag is a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
-- for details
module SMRep (
rET_SMALL, rET_BIG
) where
-#include "HsVersions.h"
#include "../includes/MachDeps.h"
import Id
import StaticFlags
import Constants
import Outputable
+import FastString
import Data.Word
\end{code}
\begin{code}
data CgRep
= VoidArg -- Void
- | PtrArg -- Word-sized Ptr
+ | PtrArg -- Word-sized heap pointer, followed
+ -- by the garbage collector
| NonPtrArg -- Word-sized non-pointer
+ -- (including addresses not followed by GC)
| LongArg -- 64-bit non-pointer
| FloatArg -- 32-bit float
| DoubleArg -- 64-bit float
deriving Eq
instance Outputable CgRep where
- ppr VoidArg = ptext SLIT("V_")
- ppr PtrArg = ptext SLIT("P_")
- ppr NonPtrArg = ptext SLIT("I_")
- ppr LongArg = ptext SLIT("L_")
- ppr FloatArg = ptext SLIT("F_")
- ppr DoubleArg = ptext SLIT("D_")
+ ppr VoidArg = ptext (sLit "V_")
+ ppr PtrArg = ptext (sLit "P_")
+ ppr NonPtrArg = ptext (sLit "I_")
+ ppr LongArg = ptext (sLit "L_")
+ ppr FloatArg = ptext (sLit "F_")
+ ppr DoubleArg = ptext (sLit "D_")
argMachRep :: CgRep -> MachRep
argMachRep PtrArg = wordRep