Make lint check for undefined variables in Cmm
authorSimon Marlow <marlowsd@gmail.com>
Mon, 6 Aug 2012 14:29:20 +0000 (15:29 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 7 Aug 2012 14:30:35 +0000 (15:30 +0100)
compiler/cmm/CmmLint.hs

index 2e24dd7..47c30b1 100644 (file)
@@ -13,6 +13,7 @@ module CmmLint (
 import Hoopl
 import Cmm
 import CmmUtils
+import CmmLive
 import PprCmm ()
 import BlockId
 import FastString
@@ -53,7 +54,10 @@ lintCmmDecl (CmmData {})
 
 
 lintCmmGraph :: CmmGraph -> CmmLint ()
-lintCmmGraph g = mapM_ (lintCmmBlock labels) blocks
+lintCmmGraph g = cmmLiveness g `seq` mapM_ (lintCmmBlock labels) blocks
+                 -- cmmLiveness throws an error if there are registers
+                 -- live on entry to the graph (i.e. undefined
+                 -- variables)
   where
        blocks = toBlockList g
        labels = setFromList (map entryLabel blocks)