- replace_eid (G.LGraph eid blocks) = G.LGraph (lookup eid) blocks
- last (LastBranch id) = LastBranch (lookup id)
- last (LastCondBranch e ti fi) = LastCondBranch e (lookup ti) (lookup fi)
- last (LastSwitch e tbl) = LastSwitch e (map (fmap lookup) tbl)
- last (LastCall tgt (Just id)) = LastCall tgt (Just $ lookup id)
- last exit_jump_return = exit_jump_return
- lookup id = lookupBlockEnv env id `orElse` id
+ replace_eid (G.LGraph eid off blocks) = G.LGraph (lookup eid) off blocks
+ middle m@(MidComment _) = m
+ middle (MidAssign r e) = MidAssign r (exp e)
+ middle (MidStore addr e) = MidStore (exp addr) (exp e)
+ middle (MidUnsafeCall tgt fs as) = MidUnsafeCall (midcall tgt) fs (map exp as)
+ middle (MidAddToContext e es) = MidAddToContext (exp e) (map exp es)
+ last (LastBranch id) = LastBranch (lookup id)
+ last (LastCondBranch e ti fi) = LastCondBranch (exp e) (lookup ti) (lookup fi)
+ last (LastSwitch e tbl) = LastSwitch (exp e) (map (fmap lookup) tbl)
+ last (LastCall tgt mb_id s) = LastCall (exp tgt) (fmap lookup mb_id) s
+ last (LastJump e s) = LastJump (exp e) s
+ last (LastReturn s) = LastReturn s
+ midcall (ForeignTarget e c) = ForeignTarget (exp e) c
+ midcall m@(PrimTarget _) = m
+ exp e@(CmmLit _) = e
+ exp (CmmLoad addr ty) = CmmLoad (exp addr) ty
+ exp e@(CmmReg _) = e
+ exp (CmmMachOp op es) = CmmMachOp op $ map exp es
+ exp e@(CmmRegOff _ _) = e
+ exp (CmmStackSlot (CallArea (Young id)) i) =
+ CmmStackSlot (CallArea (Young (lookup id))) i
+ exp e@(CmmStackSlot _ _) = e
+ lookup id = fmap lookup (lookupBlockEnv env id) `orElse` id