summaryrefslogtreecommitdiff
path: root/ghc/compiler/cmm
diff options
context:
space:
mode:
authorsimonmar <unknown>2005-05-03 10:38:19 +0000
committersimonmar <unknown>2005-05-03 10:38:19 +0000
commitbcdfaf105c8a053b0bd5ad8a380acffd8b3b5ee9 (patch)
tree6fd18eea0703b3ccc88f024d8d7dad70ced3a73b /ghc/compiler/cmm
parentb5d7fd266145bc09088d78e7d5dafbd45195ab31 (diff)
downloadhaskell-bcdfaf105c8a053b0bd5ad8a380acffd8b3b5ee9.tar.gz
[project @ 2005-05-03 10:38:19 by simonmar]
Add a couple more lint tests
Diffstat (limited to 'ghc/compiler/cmm')
-rw-r--r--ghc/compiler/cmm/CmmLint.hs7
1 files changed, 7 insertions, 0 deletions
diff --git a/ghc/compiler/cmm/CmmLint.hs b/ghc/compiler/cmm/CmmLint.hs
index d82fe7c3ac..fbfb14c165 100644
--- a/ghc/compiler/cmm/CmmLint.hs
+++ b/ghc/compiler/cmm/CmmLint.hs
@@ -68,6 +68,9 @@ lintCmmExpr (CmmRegOff reg offset)
= lintCmmExpr (CmmMachOp (MO_Add rep)
[CmmReg reg, CmmLit (CmmInt (fromIntegral offset) rep)])
where rep = cmmRegRep reg
+lintCmmExpr lit@(CmmLit (CmmInt _ rep))
+ | isFloatingRep rep
+ = cmmLintErr (text "integer literal with floating MachRep: " <> ppr lit)
lintCmmExpr expr =
return (cmmExprRep expr)
@@ -77,6 +80,10 @@ cmmCheckMachOp op args@[CmmReg reg, CmmLit (CmmInt i _)]
= cmmLintDubiousWordOffset (CmmMachOp op args)
cmmCheckMachOp op [lit@(CmmLit (CmmInt i _)), reg@(CmmReg _)]
= cmmCheckMachOp op [reg, lit]
+cmmCheckMachOp op@(MO_U_Conv from to) args
+ | isFloatingRep from || isFloatingRep to
+ = cmmLintErr (text "unsigned conversion from/to floating rep: "
+ <> ppr (CmmMachOp op args))
cmmCheckMachOp op args
= return (resultRepOfMachOp op)