This repository has been archived on 2024-01-18. You can view files and clone it, but cannot push or open issues or pull requests.
compilation/flap/src/retrolix/retrolixDeadCodeElimination.ml
2023-10-04 15:40:22 +02:00

63 lines
1.2 KiB
OCaml

open RetrolixAST
open RetrolixUtils
let activated = ref false
module Source = Retrolix
let shortname = "dce"
let longname = "dead-code elimination"
(** {2 The Analysis Itself} *)
module LivenessDomain =
struct
type t = LValueSet.t
let print = LValueSet.print
let equal = LValueSet.equal
let compare = LValueSet.compare
let bot =
failwith "Students! This is your job!"
let le =
failwith "Students! This is your job!"
let lub =
failwith "Students! This is your job!"
let global_variables =
ref bot
let gen insn =
failwith "Students! This is your job!"
let kill insn =
failwith "Students! This is your job!"
let transfer (_, insn) liveout =
failwith "Students! This is your job!"
end
module LivenessAnalysis = RetrolixDataflowEngines.Default(LivenessDomain)
(** {2 Putting Everything Together} *)
let analyze block =
failwith "Students! This is your job!"
let rewrite sol (lab, insn) =
failwith "Students! This is your job!"
let translate p =
LivenessDomain.global_variables :=
LValueSet.of_list
@@ List.map (fun v -> `Variable v)
@@ RetrolixUtils.global_variables p;
RetrolixUtils.transform_blocks analyze rewrite p