Fixing live analysis

This commit is contained in:
elvis
2025-01-16 23:48:23 +01:00
parent cf0bc41a23
commit d78e8bfbe0
9 changed files with 269 additions and 27 deletions

View File

@ -755,10 +755,15 @@ let convert (prg: CfgImp.SSCfg.t) : RISCCfg.t =
} ->
let initial_bindings =
match inputOutputVar with
| Some (i, o) ->
RegisterMap.empty |>
RegisterMap.set_register i {index = "in"} |>
RegisterMap.set_register o {index = "out"}
| Some (i, o) -> (
if i = o then
RegisterMap.empty |>
RegisterMap.set_register i {index = "in"}
else
RegisterMap.empty |>
RegisterMap.set_register i {index = "in"} |>
RegisterMap.set_register o {index = "out"}
)
| None ->
RegisterMap.empty
in
@ -767,7 +772,16 @@ let convert (prg: CfgImp.SSCfg.t) : RISCCfg.t =
edges = edges;
reverseEdges = reverseEdges;
inputVal = inputVal;
inputOutputVar = Some ("in", "out");
inputOutputVar = (
match inputOutputVar with
| Some (i, o) -> (
if i = o then
Some ("in", "in")
else
Some ("in", "out")
)
| None -> Some ("in", "out")
);
initial = initial;
terminal = terminal;
content = helper content initial_bindings;