diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-01-04 15:40:41 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-01-05 15:20:18 +0000 |
commit | 974f45103b930ed4310f9ec67b20399e3f289adf (patch) | |
tree | 7e7774440c4906a6fbe7323425e8cddc09c5a907 | |
parent | a385b85eb5bd62e696a2b6b3048ddae3e97f58eb (diff) | |
download | haskell-974f45103b930ed4310f9ec67b20399e3f289adf.tar.gz |
Fixup to 4464c92badaedc45ce53d6349f6790f6d2298103
Instead of enterLocalIdLabel we should get the label from the
ClosureInfo, because that knows better whether the label should be
local or not.
Needed by #5357
-rw-r--r-- | compiler/codeGen/CgClosure.lhs | 2 | ||||
-rw-r--r-- | compiler/codeGen/ClosureInfo.lhs | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/compiler/codeGen/CgClosure.lhs b/compiler/codeGen/CgClosure.lhs index 1ebe22e66e..96e6395e95 100644 --- a/compiler/codeGen/CgClosure.lhs +++ b/compiler/codeGen/CgClosure.lhs @@ -374,7 +374,7 @@ mkSlowEntryCode cl_info reg_args stk_adj_pop = CmmAssign spReg (cmmRegOffW spReg final_stk_offset) stk_adj_push = CmmAssign spReg (cmmRegOffW spReg (- final_stk_offset)) - jump_to_entry = CmmJump (mkLblExpr (enterIdLabel name has_caf_refs)) [] + jump_to_entry = CmmJump (mkLblExpr (entryLabelFromCI cl_info)) [] \end{code} diff --git a/compiler/codeGen/ClosureInfo.lhs b/compiler/codeGen/ClosureInfo.lhs index 8dc86ab39b..34746984c2 100644 --- a/compiler/codeGen/ClosureInfo.lhs +++ b/compiler/codeGen/ClosureInfo.lhs @@ -963,7 +963,10 @@ infoTableLabelFromCI :: ClosureInfo -> CLabel infoTableLabelFromCI = fst . labelsFromCI entryLabelFromCI :: ClosureInfo -> CLabel -entryLabelFromCI = snd . labelsFromCI +entryLabelFromCI ci + | tablesNextToCode = info_lbl + | otherwise = entry_lbl + where (info_lbl, entry_lbl) = labelsFromCI ci labelsFromCI :: ClosureInfo -> (CLabel, CLabel) -- (Info, Entry) labelsFromCI cl@(ClosureInfo { closureName = name, |