X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLint.hs;h=bf10135b5fce749cc62b98bb075f7bf4851f2b39;hb=ec6e7468ff70c40c2f24792cec0261512ee32431;hp=b1922d0cac02e7226d6b2c014b95465bf5bbf916;hpb=16a2f6a8a381af31c23b6a41a851951da9bc1803;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmLint.hs b/compiler/cmm/CmmLint.hs index b1922d0..bf10135 100644 --- a/compiler/cmm/CmmLint.hs +++ b/compiler/cmm/CmmLint.hs @@ -17,8 +17,6 @@ module CmmLint ( cmmLint, cmmLintTop ) where -#include "HsVersions.h" - import Cmm import CLabel import MachOp @@ -27,6 +25,7 @@ import Outputable import PprCmm import Unique import Constants +import FastString import Control.Monad @@ -42,7 +41,7 @@ cmmLintTop top = runCmmLint $ lintCmmTop top runCmmLint :: CmmLint a -> Maybe SDoc runCmmLint l = case unCL l of - Left err -> Just (ptext SLIT("Cmm lint error:") $$ nest 2 err) + Left err -> Just (ptext (sLit "Cmm lint error:") $$ nest 2 err) Right _ -> Nothing lintCmmTop :: (GenCmmTop h i (ListGraph CmmStmt)) -> CmmLint () @@ -137,7 +136,7 @@ lintCmmStmt labels = lint lintCmmExpr r return () lint (CmmCall target _res args _ _) = - lintTarget target >> mapM_ (lintCmmExpr.fst) args + lintTarget target >> mapM_ (lintCmmExpr . hintlessCmm) args lint (CmmCondBranch e id) = checkTarget id >> lintCmmExpr e >> checkCond e lint (CmmSwitch e branches) = do mapM_ checkTarget $ catMaybes branches @@ -145,8 +144,8 @@ lintCmmStmt labels = lint if (erep == wordRep) then return () else cmmLintErr (text "switch scrutinee is not a word: " <> ppr e) - lint (CmmJump e args) = lintCmmExpr e >> mapM_ (lintCmmExpr.fst) args - lint (CmmReturn ress) = mapM_ (lintCmmExpr.fst) ress + lint (CmmJump e args) = lintCmmExpr e >> mapM_ (lintCmmExpr . hintlessCmm) args + lint (CmmReturn ress) = mapM_ (lintCmmExpr . hintlessCmm) ress lint (CmmBranch id) = checkTarget id checkTarget id = if elemBlockSet id labels then return () else cmmLintErr (text "Branch to nonexistent id" <+> ppr id)