aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2021-01-26 14:46:37 +0100
committerCyril SIX <cyril.six@kalray.eu>2021-01-26 14:46:37 +0100
commitd85a8eb3d89ecb0ff5d7894b26a3497cd9fd7155 (patch)
tree4056ff7f8aff4ec4f954a5f2e9616b780cba1523
parent18a2f80686c651dde5964098c8b76e5aa94e6340 (diff)
downloadcompcert-kvx-d85a8eb3d89ecb0ff5d7894b26a3497cd9fd7155.tar.gz
compcert-kvx-d85a8eb3d89ecb0ff5d7894b26a3497cd9fd7155.zip
Code simplification of get_path_map (no functionality change)
-rw-r--r--scheduling/RTLpathLivegenaux.ml30
1 files changed, 16 insertions, 14 deletions
diff --git a/scheduling/RTLpathLivegenaux.ml b/scheduling/RTLpathLivegenaux.ml
index ab921954..d415c115 100644
--- a/scheduling/RTLpathLivegenaux.ml
+++ b/scheduling/RTLpathLivegenaux.ml
@@ -82,13 +82,15 @@ let get_path_map code entry join_points =
let visited = ref (PTree.map (fun n i -> false) code) in
let path_map = ref PTree.empty in
let rec dig_path e =
- let psize = ref (-1) in
- let path_successors = ref [] in
- let rec dig_path_rec n : (path_info * node list) option =
- if not (get_some @@ PTree.get n !visited) then
+ if (get_some @@ PTree.get e !visited) then
+ ()
+ else begin
+ visited := PTree.set e true !visited;
+ let psize = ref (-1) in
+ let path_successors = ref [] in
+ let rec dig_path_rec n : (path_info * node list) option =
let inst = get_some @@ PTree.get n code in
begin
- visited := PTree.set n true !visited;
psize := !psize + 1;
let successor = match predicted_successor inst with
| None -> None
@@ -102,15 +104,15 @@ let get_path_map code entry join_points =
input_regs = Regset.empty; output_regs = Regset.empty },
!path_successors @ successors_inst inst)
end
- else None
- in match dig_path_rec e with
- | None -> ()
- | Some ret ->
- let (path_info, succs) = ret in
- begin
- path_map := PTree.set e path_info !path_map;
- List.iter dig_path succs
- end
+ in match dig_path_rec e with
+ | None -> ()
+ | Some ret ->
+ let (path_info, succs) = ret in
+ begin
+ path_map := PTree.set e path_info !path_map;
+ List.iter dig_path succs
+ end
+ end
in begin
dig_path entry;
!path_map