diff options
Diffstat (limited to 'compiler/deSugar/DsCCall.lhs')
-rw-r--r-- | compiler/deSugar/DsCCall.lhs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compiler/deSugar/DsCCall.lhs b/compiler/deSugar/DsCCall.lhs index 76bdfb930f..a2459f5a4c 100644 --- a/compiler/deSugar/DsCCall.lhs +++ b/compiler/deSugar/DsCCall.lhs @@ -48,6 +48,7 @@ import Literal import PrelNames import VarSet import Constants +import DynFlags import Outputable import Util \end{code} @@ -98,13 +99,14 @@ dsCCall lbl args may_gc result_ty = do (unboxed_args, arg_wrappers) <- mapAndUnzipM unboxArg args (ccall_result_ty, res_wrapper) <- boxResult result_ty uniq <- newUnique + dflags <- getDynFlags let target = StaticTarget lbl Nothing True the_fcall = CCall (CCallSpec target CCallConv may_gc) - the_prim_app = mkFCall uniq the_fcall unboxed_args ccall_result_ty + the_prim_app = mkFCall dflags uniq the_fcall unboxed_args ccall_result_ty return (foldr ($) (res_wrapper the_prim_app) arg_wrappers) -mkFCall :: Unique -> ForeignCall +mkFCall :: DynFlags -> Unique -> ForeignCall -> [CoreExpr] -- Args -> Type -- Result type -> CoreExpr @@ -117,14 +119,14 @@ mkFCall :: Unique -> ForeignCall -- Here we build a ccall thus -- (ccallid::(forall a b. StablePtr (a -> b) -> Addr -> Char -> IO Addr)) -- a b s x c -mkFCall uniq the_fcall val_args res_ty +mkFCall dflags uniq the_fcall val_args res_ty = mkApps (mkVarApps (Var the_fcall_id) tyvars) val_args where arg_tys = map exprType val_args body_ty = (mkFunTys arg_tys res_ty) tyvars = varSetElems (tyVarsOfType body_ty) ty = mkForAllTys tyvars body_ty - the_fcall_id = mkFCallId uniq the_fcall ty + the_fcall_id = mkFCallId dflags uniq the_fcall ty \end{code} \begin{code} |