1 module CmmCPS (cmmCPS) where
3 #include "HsVersions.h"
9 import Dataflow (mapCmmTop, onBasicBlock, cmmLivenessComment, cmmLiveness)
20 -> [Cmm] -- C-- with Proceedures
21 -> IO [Cmm] -- Output: CPS transformed C--
23 cmmCPS dflags abstractC = do
24 when (dopt Opt_DoCmmLinting dflags) $
25 do showPass dflags "CmmLint"
26 case firstJust $ map cmmLint abstractC of
27 Just err -> do printDump err
31 -- continuationC <- return abstractC
32 continuationC <- return $ map (mapCmmTop (onBasicBlock (\bs -> map (cmmLivenessComment (cmmLiveness bs)) bs))) abstractC
34 dumpIfSet_dyn dflags Opt_D_dump_cps_cmm "CPS Cmm" (pprCmms continuationC)
35 -- TODO: add option to dump Cmm to file