@CgClosure@, which deals with closures.
\begin{code}
-#include "HsVersions.h"
-
module CgCon (
cgTopRhsCon, buildDynCon,
bindConArgs,
cgReturnDataCon
) where
-IMP_Ubiq(){-uitous-}
+#include "HsVersions.h"
import CgMonad
import AbsCSyn
layOutStaticClosure
)
import CostCentre ( currentOrSubsumedCosts, useCurrentCostCentre,
- dontCareCostCentre
+ dontCareCostCentre, CostCentre
)
import Id ( idPrimRep, dataConTag, dataConTyCon,
- isDataCon, SYN_IE(DataCon),
- emptyIdSet
+ isDataCon, DataCon,
+ emptyIdSet, Id
)
import Literal ( Literal(..) )
import Maybes ( maybeToBool )
-import PrelInfo ( maybeCharLikeTyCon, maybeIntLikeTyCon )
+import PrelInfo ( maybeCharLikeCon, maybeIntLikeCon )
import PrimRep ( isFloatingRep, PrimRep(..) )
import TyCon ( TyCon{-instance Uniquable-} )
import Util ( isIn, zipWithEqual, panic, assertPanic )
\begin{code}
buildDynCon binder cc con [arg_amode] all_zero_size_args@False
- | maybeToBool (maybeCharLikeTyCon tycon)
+ | maybeCharLikeCon con
= ASSERT(isDataCon con)
absC (CAssign temp_amode (CCharLike arg_amode)) `thenC`
returnFC temp_id_info
- | maybeToBool (maybeIntLikeTyCon tycon) && in_range_int_lit arg_amode
+ | maybeIntLikeCon con && in_range_int_lit arg_amode
= ASSERT(isDataCon con)
returnFC (stableAmodeIdInfo binder (CIntLike arg_amode) (mkConLFInfo con))
where
- tycon = dataConTyCon con
(temp_amode, temp_id_info) = newTempAmodeAndIdInfo binder (mkConLFInfo con)
- in_range_int_lit (CLit (MachInt val _)) = val <= mAX_INTLIKE && val >= mIN_INTLIKE
+ in_range_int_lit (CLit (MachInt val _)) = val <= mAX_INTLIKE &&
+ val >= mIN_INTLIKE
in_range_int_lit other_amode = False
\end{code}