summaryrefslogtreecommitdiff
path: root/compiler/cmm/CmmLayoutStack.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cmm/CmmLayoutStack.hs')
-rw-r--r--compiler/cmm/CmmLayoutStack.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/cmm/CmmLayoutStack.hs b/compiler/cmm/CmmLayoutStack.hs
index 5505b92f5a..6f75f5451c 100644
--- a/compiler/cmm/CmmLayoutStack.hs
+++ b/compiler/cmm/CmmLayoutStack.hs
@@ -3,8 +3,9 @@ module CmmLayoutStack (
cmmLayoutStack, setInfoTableStackMap
) where
-import StgCmmUtils ( callerSaveVolatileRegs ) -- XXX
-import StgCmmForeign ( saveThreadState, loadThreadState ) -- XXX
+import StgCmmUtils ( callerSaveVolatileRegs ) -- XXX layering violation
+import StgCmmForeign ( saveThreadState, loadThreadState ) -- XXX layering violation
+import StgCmmLayout ( entryCode ) -- XXX layering violation
import Cmm
import BlockId
@@ -939,7 +940,8 @@ lowerSafeForeignCall dflags block
-- received an exception during the call, then the stack might be
-- different. Hence we continue by jumping to the top stack frame,
-- not by jumping to succ.
- jump = CmmCall { cml_target = CmmLoad (CmmReg spReg) (bWord dflags)
+ jump = CmmCall { cml_target = entryCode dflags $
+ CmmLoad (CmmReg spReg) (bWord dflags)
, cml_cont = Just succ
, cml_args_regs = regs
, cml_args = widthInBytes (wordWidth dflags)