import CoreUtils ( coreExprType )
import SimplUtils ( etaCoreExpr, typeOkForCase )
import CoreUnfold
-import Literal ( Literal(..), literalType, mkMachInt )
+import Literal ( Literal(..), literalType, mkMachInt, mkMachInt_safe )
import ErrUtils ( ghcExit, dumpIfSet, doIfSet )
import FiniteMap ( FiniteMap, emptyFM )
import FloatIn ( floatInwards )
\end{code}
\begin{code}
-tidyPrimOp (CCallOp fn casm gc tys ty)
+tidyPrimOp (CCallOp fn casm gc cconv tys ty)
= mapTM tidyTy tys `thenTM` \ tys' ->
tidyTy ty `thenTM` \ ty' ->
- returnTM (CCallOp fn casm gc tys' ty')
+ returnTM (CCallOp fn casm gc cconv tys' ty')
tidyPrimOp other_prim_op = returnTM other_prim_op
\end{code}
then -- Must cater for NULs in literal string
mkGenApp (Var unpackCString2Id)
[LitArg (MachStr s),
- LitArg (mkMachInt (toInteger (_LENGTH_ s)))]
+ LitArg (mkMachInt_safe (toInteger (_LENGTH_ s)))]
else -- No NULs in the string
App (Var unpackCStringId) (LitArg (MachStr s))
| i > tARGET_MIN_INT && -- Small enough, so start from an Int
i < tARGET_MAX_INT
- = Prim Int2IntegerOp [LitArg (mkMachInt i)]
+ = Prim Int2IntegerOp [LitArg (mkMachInt (fromInteger i))]
| otherwise -- Big, so start from a string
= Prim Addr2IntegerOp [LitArg (MachStr (_PK_ (show i)))]
where
-- PrimOps just need any types in them renamed.
- simpl_op (CCallOp label is_asm may_gc arg_tys result_ty)
+ simpl_op (CCallOp label is_asm may_gc cconv arg_tys result_ty)
= mapEager (simplTy env) arg_tys `appEager` \ arg_tys' ->
simplTy env result_ty `appEager` \ result_ty' ->
- returnEager (CCallOp label is_asm may_gc arg_tys' result_ty')
+ returnEager (CCallOp label is_asm may_gc cconv arg_tys' result_ty')
simpl_op other_op = returnEager other_op
\end{code}
returnSmpl (Lam (TyBinder tyvar') body')
#ifdef DEBUG
-simplExpr env (Lam (TyBinder _) _) (_ : _) result_ty
- = panic "simplExpr:TyLam with non-TyArg"
+simplExpr env e@(Lam (TyBinder _) _) args@(_ : _) result_ty
+ = pprPanic "simplExpr:TyLam with non-TyArg" (ppr e $$ ppr args)
#endif
\end{code}