diff --git a/src/optimize_machine.ml b/src/optimize_machine.ml index 22efd56fb101c5d79262cc40298d24b8c4e8cf6c..5e4accbc90ff336a41721522b27d010120245af9 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) = *)