fix 'return' in cmm code when tablesNextToCode==False
authorSimon Marlow <marlowsd@gmail.com>
Fri, 2 Nov 2012 12:09:35 +0000 (12:09 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 5 Nov 2012 14:51:06 +0000 (14:51 +0000)
compiler/cmm/CmmParse.y
compiler/cmm/MkGraph.hs

index 1291f64..dfa44ca 100644 (file)
@@ -1065,6 +1065,12 @@ doReturn exprs_code = do
   updfr_off <- getUpdFrameOff
   emit (mkReturnSimple dflags exprs updfr_off)
 
+mkReturnSimple  :: DynFlags -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
+mkReturnSimple dflags actuals updfr_off =
+  mkReturn dflags e actuals updfr_off
+  where e = entryCode dflags (CmmLoad (CmmStackSlot Old updfr_off)
+                             (gcWord dflags))
+
 doRawJump :: CmmParse CmmExpr -> [GlobalReg] -> CmmParse ()
 doRawJump expr_code vols = do
   dflags <- getDynFlags
index 1536794..7971b1d 100644 (file)
@@ -12,7 +12,7 @@ module MkGraph
   , mkJump, mkJumpExtra, mkDirectJump, mkForeignJump, mkForeignJumpExtra
   , mkRawJump
   , mkCbranch, mkSwitch
-  , mkReturn, mkReturnSimple, mkComment, mkCallEntry, mkBranch
+  , mkReturn, mkComment, mkCallEntry, mkBranch
   , copyInOflow, copyOutOflow
   , noExtraStack
   , toCall, Transfer(..)
@@ -23,7 +23,6 @@ import BlockId
 import Cmm
 import CmmCallConv
 
-
 import Compiler.Hoopl hiding (Unique, (<*>), mkFirst, mkMiddle, mkLast, mkLabel, mkBranch, Shape(..))
 import DynFlags
 import FastString
@@ -241,11 +240,6 @@ mkReturn dflags e actuals updfr_off =
   lastWithArgs dflags Ret  Old NativeReturn actuals updfr_off $
     toCall e Nothing updfr_off 0
 
-mkReturnSimple  :: DynFlags -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
-mkReturnSimple dflags actuals updfr_off =
-  mkReturn dflags e actuals updfr_off
-  where e = CmmLoad (CmmStackSlot Old updfr_off) (gcWord dflags)
-
 mkBranch        :: BlockId -> CmmAGraph
 mkBranch bid     = mkLast (CmmBranch bid)