middleLiveness :: Middle -> CmmLive -> CmmLive
middleLiveness m = middle m
- where middle (MidNop) = id
- middle (MidComment {}) = id
+ where middle (MidComment {}) = id
middle (MidAssign lhs expr) = gen expr . kill lhs
middle (MidStore addr rval) = gen addr . gen rval
middle (MidUnsafeCall tgt ress args) = gen tgt . gen args . kill ress
middleAvail (Spill _) = id
middleAvail (Reload regs) = agen regs
middleAvail (NotSpillOrReload m) = middle m
- where middle (MidNop) = id
- middle (MidComment {}) = id
+ where middle (MidComment {}) = id
middle (MidAssign lhs _expr) = akill lhs
middle (MidStore {}) = id
middle (MidUnsafeCall _tgt ress _args) = akill ress
-- ================ IMPLEMENTATION ================--
-mkNop = mkMiddle $ MidNop
+mkNop = emptyAgraph
mkComment fs = mkMiddle $ MidComment fs
mkAssign l r = mkMiddle $ MidAssign l r
mkStore l r = mkMiddle $ MidStore l r
type CmmTopZ = GenCmmTop CmmStatic CmmInfo CmmGraph
data Middle
- = MidNop
- | MidComment FastString
+ = MidComment FastString
| MidAssign CmmReg CmmExpr -- Assign to register
pprMiddle :: Middle -> SDoc
pprMiddle stmt = (case stmt of
- MidNop -> semi
-
CopyIn conv args _ ->
if null args then ptext SLIT("empty CopyIn")
else commafy (map pprHinted args) <+> equals <+>
if debugPpr then empty
else text " //" <+>
case stmt of
- MidNop {} -> text "MidNop"
CopyIn {} -> text "CopyIn"
CopyOut {} -> text "CopyOut"
MidComment {} -> text "MidComment"