From: Simon Marlow Date: Tue, 3 Jul 2007 14:05:06 +0000 (+0000) Subject: Fix for function info tables: the SRT field cannot be omitted if there are fields... X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=f47653a986cd329dc9159906432f2ed7819a4043;ds=sidebyside Fix for function info tables: the SRT field cannot be omitted if there are fields following it --- diff --git a/compiler/cmm/CmmInfo.hs b/compiler/cmm/CmmInfo.hs index 5937dd4..3f458b5 100644 --- a/compiler/cmm/CmmInfo.hs +++ b/compiler/cmm/CmmInfo.hs @@ -85,12 +85,12 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = where fun_extra_bits = [packHalfWordsCLit fun_type fun_arity] ++ - srt_label ++ case pap_bitmap of ArgGen liveness -> + (if null srt_label then [mkIntCLit 0] else srt_label) ++ [makeRelativeRefTo info_label $ mkLivenessCLit liveness, makeRelativeRefTo info_label slow_entry] - _ -> [] + _ -> srt_label std_info = mkStdInfoTable ty_prof cl_prof type_tag srt_bitmap layout info_label = entryLblToInfoLbl entry_label (srt_label, srt_bitmap) = mkSRTLit info_label srt @@ -121,12 +121,11 @@ mkInfoTable uniq (CmmProc info entry_label arguments blocks) = -- | A selector thunk. CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag (ThunkSelectorInfo offset srt) -> - mkInfoTableAndCode info_label std_info srt_label entry_label + mkInfoTableAndCode info_label std_info [{- no SRT -}] entry_label arguments blocks where - std_info = mkStdInfoTable ty_prof cl_prof type_tag srt_bitmap (mkWordCLit offset) + std_info = mkStdInfoTable ty_prof cl_prof type_tag 0 (mkWordCLit offset) info_label = entryLblToInfoLbl entry_label - (srt_label, srt_bitmap) = mkSRTLit info_label srt -- A continuation/return-point. CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag (ContInfo stack_layout srt) ->