- = insns
-
-ffree_before_nonlocal_transfers insn
- = case insn of
- CALL _ _ -> [GFREE, insn]
- JMP _ -> [GFREE, insn]
- other -> [insn]
-
+ = blocks
+ where
+ ffree_before_nonlocal_transfers (BasicBlock id insns)
+ = BasicBlock id (foldr p [] insns)
+ where p insn r = case insn of
+ CALL _ _ -> GFREE : insn : r
+ JMP _ -> GFREE : insn : r
+ other -> insn : r