diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-11-02 12:09:35 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-11-05 14:51:06 +0000 |
commit | 811a19c95bcb4d97a075134a45fb04f2e81acf4e (patch) | |
tree | 1c78faa8c5bb6e7688eee4e980c5bfd4ef51f611 | |
parent | 8b25d3953f2fa7055dc217e77a849cac92d2aa78 (diff) | |
download | haskell-811a19c95bcb4d97a075134a45fb04f2e81acf4e.tar.gz |
fix 'return' in cmm code when tablesNextToCode==False
-rw-r--r-- | compiler/cmm/CmmParse.y | 6 | ||||
-rw-r--r-- | compiler/cmm/MkGraph.hs | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y index 1291f6466a..dfa44ca274 100644 --- a/compiler/cmm/CmmParse.y +++ b/compiler/cmm/CmmParse.y @@ -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 diff --git a/compiler/cmm/MkGraph.hs b/compiler/cmm/MkGraph.hs index 1536794a70..7971b1de0f 100644 --- a/compiler/cmm/MkGraph.hs +++ b/compiler/cmm/MkGraph.hs @@ -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) |