From 27f2db7234539fbbc5f1e4de36110e8a0c5921bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9lio=20Brun?= <lb@leliobrun.net> Date: Thu, 2 Mar 2023 18:21:54 +0900 Subject: [PATCH] follow chains of recycling for introducing ghost assigns --- src/optimize_machine.ml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/optimize_machine.ml b/src/optimize_machine.ml index 22efd56f..5e4accbc 100644 --- a/src/optimize_machine.ml +++ b/src/optimize_machine.ml @@ -908,10 +908,11 @@ and instrs_replace_var m fvar instrs = let instrs = List.fold_left (instr_replace_var m fvar) [] instrs in List.rev instrs -let add_ghost_assigns reuse instrs = - let is_reused_def v = Hashtbl.find_opt reuse v.var_id in +let add_ghost_assigns fvar instrs = + (* let is_reused_def v = Hashtbl.find_opt reuse v.var_id in *) let add_reused vars i = - match is_reused_def i with None -> vars | Some v -> VMap.add i v vars + let v = fvar i in + if v.var_id = i.var_id then vars else VMap.add i v vars in let rec is_defining_reused vars instr = match instr.instr_desc with @@ -1058,7 +1059,7 @@ let step_replace_var m reuse step = asg in (* SSA *) - let step_instrs = add_ghost_assigns reuse step.step_instrs in + let step_instrs = add_ghost_assigns fvar step.step_instrs in (* register the locations of assignments *) let asg = assigned VMap.empty step_instrs in (* let pp fmt (k, s) = *) -- GitLab