X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FstgSyn%2FCoreToStg.lhs;h=370393b2167334a10b6965029850dcf507a82ff5;hb=e95ee1f718c6915c478005aad8af81705357d6ab;hp=b5484a44d39b8e13ee1578d8c63aca1bfe93e7d1;hpb=388e3356f71daffa62f1d4157e1e07e4c68f218a;p=ghc-hetmet.git diff --git a/compiler/stgSyn/CoreToStg.lhs b/compiler/stgSyn/CoreToStg.lhs index b5484a4..370393b 100644 --- a/compiler/stgSyn/CoreToStg.lhs +++ b/compiler/stgSyn/CoreToStg.lhs @@ -445,7 +445,7 @@ mkStgAltType bndr alts _is_poly_alt_tycon tc = isFunTyCon tc || isPrimTyCon tc -- "Any" is lifted but primitive - || isOpenTyCon tc -- Type family; e.g. arising from strict + || isFamilyTyCon tc -- Type family; e.g. arising from strict -- function application where argument has a -- type-family type @@ -528,15 +528,20 @@ coreToStgApp _ f args = do res_ty = exprType (mkApps (Var f) args) app = case idDetails f of DataConWorkId dc | saturated -> StgConApp dc args' + + -- Some primitive operator that might be implemented as a library call. PrimOpId op -> ASSERT( saturated ) StgOpApp (StgPrimOp op) args' res_ty - FCallId (CCall (CCallSpec (StaticTarget lbl) PrimCallConv _)) - -- prim calls are represented as FCalls in core, - -- but in stg we distinguish them - -> ASSERT( saturated ) - StgOpApp (StgPrimCallOp (PrimCall lbl)) args' res_ty + + -- A call to some primitive Cmm function. + FCallId (CCall (CCallSpec (StaticTarget lbl (Just pkgId)) PrimCallConv _)) + -> ASSERT( saturated ) + StgOpApp (StgPrimCallOp (PrimCall lbl pkgId)) args' res_ty + + -- A regular foreign call. FCallId call -> ASSERT( saturated ) StgOpApp (StgFCallOp call (idUnique f)) args' res_ty + TickBoxOpId {} -> pprPanic "coreToStg TickBox" $ ppr (f,args') _other -> StgApp f args' @@ -1115,7 +1120,7 @@ myCollectArgs expr go (Cast e _) as = go e as go (Note _ e) as = go e as go (Lam b e) as - | isTyVar b = go e as -- Note [Collect args] + | isTyCoVar b = go e as -- Note [Collect args] go _ _ = pprPanic "CoreToStg.myCollectArgs" (ppr expr) \end{code}