X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FdeSugar%2FDsUtils.lhs;h=62284dbf0ce9f786ebf7b83e6e03d45dc562df05;hp=3c565674f2cea68b4f7f2dc76cfa5f3012c0f03e;hb=367b0590cc0d8ba3d1561c85b366a183b8a71d24;hpb=cb429c8ac482f3b294f709b5ba50423fdf1f35b0 diff --git a/compiler/deSugar/DsUtils.lhs b/compiler/deSugar/DsUtils.lhs index 3c56567..62284db 100644 --- a/compiler/deSugar/DsUtils.lhs +++ b/compiler/deSugar/DsUtils.lhs @@ -936,12 +936,12 @@ mkFailurePair expr \end{code} \begin{code} -mkOptTickBox :: Maybe Int -> CoreExpr -> DsM CoreExpr +mkOptTickBox :: Maybe (Int,[Id]) -> CoreExpr -> DsM CoreExpr mkOptTickBox Nothing e = return e -mkOptTickBox (Just ix) e = mkTickBox ix e +mkOptTickBox (Just (ix,ids)) e = mkTickBox ix ids e -mkTickBox :: Int -> CoreExpr -> DsM CoreExpr -mkTickBox ix e = do +mkTickBox :: Int -> [Id] -> CoreExpr -> DsM CoreExpr +mkTickBox ix vars e = do uq <- newUnique mod <- getModuleDs let tick | opt_Hpc = mkTickBoxOpId uq mod ix @@ -954,11 +954,10 @@ mkTickBox ix e = do if opt_Hpc then return (Var tick) else do - locals <- getLocalBindsDs let tickVar = Var tick - let tickType = mkFunTys (map idType locals) realWorldStatePrimTy + let tickType = mkFunTys (map idType vars) realWorldStatePrimTy let scrutApTy = App tickVar (Type tickType) - return (mkApps scrutApTy (map Var locals) :: Expr Id) + return (mkApps scrutApTy (map Var vars) :: Expr Id) return $ Case scrut var ty [(DEFAULT,[],e)] where ty = exprType e @@ -969,8 +968,8 @@ mkBinaryTickBox ixT ixF e = do uq <- newUnique mod <- getModuleDs let bndr1 = mkSysLocal FSLIT("t1") uq boolTy - falseBox <- mkTickBox ixF $ Var falseDataConId - trueBox <- mkTickBox ixT $ Var trueDataConId + falseBox <- mkTickBox ixF [] $ Var falseDataConId + trueBox <- mkTickBox ixT [] $ Var trueDataConId return $ Case e bndr1 boolTy [ (DataAlt falseDataCon, [], falseBox) , (DataAlt trueDataCon, [], trueBox)