X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcodeGen%2FCgMonad.lhs;h=b96db8022eda052492fc12d9da2e2753920fe438;hb=c23fe488fc0c4b019a2dc3186106e4654b5f5107;hp=ca08e06582460c62e488fb5df6d9cbe9f55c2347;hpb=affbe8dae5d7eb350686b42ddbd4f3561b7bd0ec;p=ghc-hetmet.git diff --git a/compiler/codeGen/CgMonad.lhs b/compiler/codeGen/CgMonad.lhs index ca08e06..b96db80 100644 --- a/compiler/codeGen/CgMonad.lhs +++ b/compiler/codeGen/CgMonad.lhs @@ -79,6 +79,7 @@ import FastString import Outputable import Control.Monad +import Data.List infixr 9 `thenC` -- Right-associative! infixr 9 `thenFC` @@ -246,6 +247,7 @@ flattenCgStmts id stmts = isJump (CmmJump _ _) = True isJump (CmmBranch _) = True isJump (CmmSwitch _ _) = True +isJump (CmmReturn _) = True isJump _ = False isOrdinaryStmt (CgStmt _) = True @@ -734,9 +736,9 @@ emitData sect lits where data_block = CmmData sect lits -emitProc :: [CmmLit] -> CLabel -> CmmFormals -> [CmmBasicBlock] -> Code -emitProc lits lbl args blocks - = do { let proc_block = CmmProc (map CmmStaticLit lits) lbl args blocks +emitProc :: CmmInfo -> CLabel -> CmmFormals -> [CmmBasicBlock] -> Code +emitProc info lbl args blocks + = do { let proc_block = CmmProc info lbl args blocks ; state <- getState ; setState $ state { cgs_tops = cgs_tops state `snocOL` proc_block } } @@ -745,7 +747,7 @@ emitSimpleProc :: CLabel -> Code -> Code emitSimpleProc lbl code = do { stmts <- getCgStmts code ; blks <- cgStmtsToBlocks stmts - ; emitProc [] lbl [] blks } + ; emitProc (CmmInfo Nothing Nothing CmmNonInfoTable) lbl [] blks } getCmm :: Code -> FCode Cmm -- Get all the CmmTops (there should be no stmts)