X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=compiler%2Fcmm%2FCmmParse.y;h=8679ff221ba6d88a3ca6952b4d6fb8f24ef4bc46;hb=f56db204b1b4c819755a3457b61e1302c22bdc64;hp=a1cbbf51ed9bd824509e036ae5795a05c5d261c8;hpb=61d2625ae2e6a4cdae2ffc92df828905e81c24cc;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y index a1cbbf5..8679ff2 100644 --- a/compiler/cmm/CmmParse.y +++ b/compiler/cmm/CmmParse.y @@ -1,6 +1,6 @@ ----------------------------------------------------------------------------- -- --- (c) The University of Glasgow, 2004 +-- (c) The University of Glasgow, 2004-2006 -- -- Parser for concrete Cmm. -- @@ -16,38 +16,39 @@ import CgProf import CgTicky import CgInfoTbls import CgForeignCall -import CgTailCall ( pushUnboxedTuple ) -import CgStackery ( emitPushUpdateFrame ) -import ClosureInfo ( C_SRT(..) ) -import CgCallConv ( smallLiveness ) -import CgClosure ( emitBlackHoleCode ) -import CostCentre ( dontCareCCS ) +import CgTailCall +import CgStackery +import ClosureInfo +import CgCallConv +import CgClosure +import CostCentre import Cmm import PprCmm -import CmmUtils ( mkIntCLit ) +import CmmUtils import CmmLex import CLabel import MachOp -import SMRep ( fixedHdrSize, CgRep(..) ) +import SMRep import Lexer -import ForeignCall ( CCallConv(..), Safety(..) ) -import Literal ( mkMachInt ) +import ForeignCall +import Literal import Unique import UniqFM import SrcLoc -import DynFlags ( DynFlags, DynFlag(..) ) -import StaticFlags ( opt_SccProfilingOn ) -import ErrUtils ( printError, dumpIfSet_dyn, showPass ) -import StringBuffer ( hGetStringBuffer ) +import DynFlags +import StaticFlags +import ErrUtils +import StringBuffer import FastString -import Panic ( panic ) -import Constants ( wORD_SIZE ) +import Panic +import Constants import Outputable -import Monad ( when ) +import Control.Monad import Data.Char ( ord ) +import System.Exit #include "HsVersions.h" } @@ -424,6 +425,7 @@ section :: String -> Section section "text" = Text section "data" = Data section "rodata" = ReadOnlyData +section "relrodata" = RelocatableReadOnlyData section "bss" = UninitialisedData section s = OtherSection s @@ -917,9 +919,12 @@ parseCmmFile dflags filename = do -- in there we don't want. case unP cmmParse init_state of PFailed span err -> do printError span err; return Nothing - POk _ code -> do + POk pst code -> do cmm <- initC dflags no_module (getCmm (unEC code initEnv [] >> return ())) - dumpIfSet_dyn dflags Opt_D_dump_cmm "Cmm" (pprCmms [cmm]) + let ms = getMessages pst + printErrorsAndWarnings dflags ms + when (errorsFound dflags ms) $ exitWith (ExitFailure 1) + dumpIfSet_dyn dflags Opt_D_dump_cmm "Cmm" (pprCmms [cmm]) return (Just cmm) where no_module = panic "parseCmmFile: no module"