replaceLabels: null out the cml_cont field of CmmCall
authorSimon Marlow <marlowsd@gmail.com>
Mon, 12 Nov 2012 14:01:01 +0000 (14:01 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 12 Nov 2012 15:20:37 +0000 (15:20 +0000)
This fixes a CmmLint complaint when doing proc-point splitting.

compiler/cmm/CmmProcPoint.hs

index 02b232d..fb94b95 100644 (file)
@@ -354,7 +354,10 @@ replaceBranches env cmmg
     last (CmmBranch id)          = CmmBranch (lookup id)
     last (CmmCondBranch e ti fi) = CmmCondBranch e (lookup ti) (lookup fi)
     last (CmmSwitch e tbl)       = CmmSwitch e (map (fmap lookup) tbl)
-    last l@(CmmCall {})          = l
+    last l@(CmmCall {})          = l { cml_cont = Nothing }
+            -- NB. remove the continuation of a CmmCall, since this
+            -- label will now be in a different CmmProc.  Not only
+            -- is this tidier, it stops CmmLint from complaining.
     last l@(CmmForeignCall {})   = l
     lookup id = fmap lookup (mapLookup id env) `orElse` id
             -- XXX: this is a recursive lookup, it follows chains