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) = *)