X-Git-Url: http://git.joshuawise.com/snipe.git/blobdiff_plain/c2b45b3681553192a462bcdd376ee7a9bf83eef3..a644da892dbd55a7be1aed029dafebe28d26d27e:/codegen/liveness.sml?ds=inline diff --git a/codegen/liveness.sml b/codegen/liveness.sml index 97037cb..df411bb 100644 --- a/codegen/liveness.sml +++ b/codegen/liveness.sml @@ -99,13 +99,14 @@ struct (* val gendef : ident * X.insn -> ident * pred list * generates the def/use/succ predicates for a single insn *) - fun gendef (n, X.DIRECTIVE(_)) = (nil) - | gendef (n, X.COMMENT(_)) = (nil) + fun gendef (n, X.DIRECTIVE(_)) = ([SUCC (n+1)]) + | gendef (n, X.COMMENT(_)) = ([SUCC (n+1)]) | gendef (n, X.LIVEIGN (_)) = ([SUCC (n+1)]) | gendef (n, X.LABEL l) = ([SUCC (n+1)]) | gendef (n, X.INSN(X.NV, _)) = ([SUCC (n+1)]) | gendef (n, X.INSN(_, X.MOVLIT(dest, _))) = (defhit dest @ [SUCC(n+1), ISMOVE]) | gendef (n, X.INSN(_, X.MOVSYM(dest, sym))) = (defhit dest @ [SUCC(n+1), ISMOVE]) + | gendef (n, X.INSN(_, X.MOVSTR(dest, str))) = (defhit dest @ [SUCC(n+1), ISMOVE]) | gendef (n, X.INSN(X.AL, X.MOVLBL(X.REG X.PC, l))) = ([SUCC (findlabel l)]) | gendef (n, X.INSN(_, X.MOVLBL(X.REG X.PC, l))) = ([SUCC (n+1), SUCC (findlabel l)]) | gendef (n, X.INSN(_, X.MOVLBL(_, _))) = raise ErrorMsg.InternalError "MOVLBL with target neq PC"