IRFUNC of (Tree.func -> Tree.func) |
IRSTM of (Tree.stm -> Tree.stm list) |
IREXP of (Tree.exp -> Tree.exp) |
- PRELIVENESS of (x86.insn list -> x86.insn list) |
- FINAL of (x86.insn list -> x86.insn list)
+ PRELIVENESS of (Blarg.insn list -> Blarg.insn list) |
+ FINAL of (Blarg.insn list -> Blarg.insn list)
type optimization = {
shortname : string,
}
val optimize_ir : optimization list -> Tree.program -> Tree.program
- val optimize_preliveness : optimization list -> x86.insn list -> x86.insn list
- val optimize_final : optimization list -> x86.insn list -> x86.insn list
+ val optimize_preliveness : optimization list -> Blarg.insn list -> Blarg.insn list
+ val optimize_final : optimization list -> Blarg.insn list -> Blarg.insn list
end
structure Optimizer :> OPTIMIZER =
IRFUNC of (Tree.func -> Tree.func) |
IRSTM of (Tree.stm -> Tree.stm list) |
IREXP of (Tree.exp -> Tree.exp) |
- PRELIVENESS of (x86.insn list -> x86.insn list) |
- FINAL of (x86.insn list -> x86.insn list)
+ PRELIVENESS of (Blarg.insn list -> Blarg.insn list) |
+ FINAL of (Blarg.insn list -> Blarg.insn list)
type optimization = {
shortname : string,
fun foldfunc f (T.FUNCTION (id, stml)) = T.FUNCTION (id, List.concat (List.map f stml))
fun expfunc f (T.MOVE (e1, e2)) = [T.MOVE (f e1, f e2)]
- | expfunc f (T.RETURN (e, s)) = [T.RETURN (f e, s)]
+ | expfunc f (T.RETURN (e)) = [T.RETURN (f e)]
| expfunc f (T.EFFECT e) = [T.EFFECT (f e)]
| expfunc f (a as T.LABEL _) = [a]
| expfunc f (T.JUMPIFN (e, l)) = [T.JUMPIFN (f e, l)]