From bcf13972da66990a562a868c8011c272bab3d415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9lio=20Brun?= <lb@leliobrun.net> Date: Thu, 2 Mar 2023 17:48:21 +0900 Subject: [PATCH] avoid removing spec of `x = x` assignments --- src/optimize_machine.ml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/optimize_machine.ml b/src/optimize_machine.ml index e38cfc7f..22efd56f 100644 --- a/src/optimize_machine.ml +++ b/src/optimize_machine.ml @@ -784,7 +784,15 @@ let rec instr_is_skip instr = and instrs_are_skip instrs = List.for_all instr_is_skip instrs -let instr_cons instr cont = if instr_is_skip instr then cont else instr :: cont +let instr_cons instr cont = + match instr_is_skip instr, cont with + | true, [] -> [ { instr with instr_desc = MComment "" } ] + | true, i :: cont -> { i with instr_spec = i.instr_spec @ instr.instr_spec } :: cont + | false, _ -> instr :: cont + (* let instr_desc = *) + (* if instr_is_skip instr then MComment "" else instr.instr_desc in *) + (* let instr = { instr with instr_desc } in *) + (* instr :: cont *) (* XXX: UNUSED *) (* let rec instr_remove_skip instr cont = @@ -1465,7 +1473,8 @@ let optimize params prog node_schs machine_code = let reuse_tables = Scheduling.compute_prog_reuse_table node_schs in machine_code |> machines_reuse_variables reuse_tables - |> machines_fusion |> machines_clean + |> machines_fusion + |> machines_clean else machine_code in -- GitLab