(* Phase 2: Clean trace *) (* This function removes the conditional jumps (loop instructions) from the trace *) let filter_cjmps = List.filter (function | IR.CJmp(_,_,_) -> false | _ -> true);; (* Remove any computation that does not have an ultimate effect on memory *) let dse_instrs = IRLocalOpt.local_dse (filter_cjmps (List.rev !state.instrs)) [X86ToIRUtil.vMem];; (* Convert the trace to SSA form *) let tbl,ir_ssa = IRSSA.bb_to_ssa_state_out X86ToIRUtil.num_reserved_vars dse_instrs;;