From 83be3d7b8881eca63adf834e425e6799e572bd1f Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 11 Oct 2013 10:35:14 +0100 Subject: Fix a bug in the canned selector code when profiling. --- compiler/codeGen/StgCmm.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'compiler/codeGen/StgCmm.hs') diff --git a/compiler/codeGen/StgCmm.hs b/compiler/codeGen/StgCmm.hs index bf950c4158..a92f80439b 100644 --- a/compiler/codeGen/StgCmm.hs +++ b/compiler/codeGen/StgCmm.hs @@ -233,7 +233,12 @@ cgDataCon data_con $ mk_code ticky_code mk_code ticky_code - = -- NB: We don't set CC when entering data (WDP 94/06) + = -- NB: the closure pointer is assumed *untagged* on + -- entry to a constructor. If the pointer is tagged, + -- then we should not be entering it. This assumption + -- is used in ldvEnter and when tagging the pointer to + -- return it. + -- NB 2: We don't set CC when entering data (WDP 94/06) do { _ <- ticky_code ; ldvEnter (CmmReg nodeReg) ; tickyReturnOldCon (length arg_things) -- cgit v1.2.1