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