+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module CmmInfo (
cmmToRawCmm,
mkInfoTable
import Cmm
import CmmUtils
-import PprCmm
import CLabel
import MachOp
import Constants
import StaticFlags
-import DynFlags
import Unique
import UniqSupply
import Panic
CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag type_info ->
let info_label = entryLblToInfoLbl entry_label
- ty_prof' = if tablesNextToCode
- then makeRelativeRefTo info_label ty_prof
- else ty_prof
- cl_prof' = if tablesNextToCode
- then makeRelativeRefTo info_label cl_prof
- else cl_prof
+ ty_prof' = makeRelativeRefTo info_label ty_prof
+ cl_prof' = makeRelativeRefTo info_label cl_prof
in case type_info of
-- | A function entry point.
FunInfo (ptrs, nptrs) srt fun_type fun_arity pap_bitmap slow_entry ->
-> [CmmLit]
-> [CmmLit]
-> CLabel
- -> CmmFormals
- -> [CmmBasicBlock]
+ -> CmmFormalsWithoutKinds
+ -> ListGraph CmmStmt
-> [RawCmmTop]
mkInfoTableAndCode info_lbl std_info extra_bits entry_lbl args blocks
| tablesNextToCode -- Reverse the extra_bits; and emit the top-level proc
= [CmmProc (map CmmStaticLit (reverse extra_bits ++ std_info))
entry_lbl args blocks]
- | null blocks -- No actual code; only the info table is significant
+ | ListGraph [] <- blocks -- No code; only the info table is significant
= -- Use a zero place-holder in place of the
-- entry-label in the info table
[mkRODataLits info_lbl (zeroCLit : std_info ++ extra_bits)]
is_non_ptr Nothing = True
is_non_ptr (Just reg) =
case localRegGCFollow reg of
- KindNonPtr -> True
- KindPtr -> False
+ GCKindNonPtr -> True
+ GCKindPtr -> False
bits :: [Bool]
bits = mkBits live
| otherwise = []
type_lit = packHalfWordsCLit cl_type srt_len
+
+
+_unused :: FS.FastString -- stops a warning
+_unused = undefined