aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Linearizeaux.ml
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2020-03-09 11:27:38 +0100
committerCyril SIX <cyril.six@kalray.eu>2020-03-09 11:27:38 +0100
commit7794bebc14750c5d8116f54cabe143231ef60308 (patch)
tree4a51077017bca87f166290aa499f7bad8a37317c /backend/Linearizeaux.ml
parent8300321b348a6b416a8e0498ecebf944697d0641 (diff)
downloadcompcert-kvx-7794bebc14750c5d8116f54cabe143231ef60308.tar.gz
compcert-kvx-7794bebc14750c5d8116f54cabe143231ef60308.zip
Linearizeaux: Fixed bug where the output list was in reverse order
Diffstat (limited to 'backend/Linearizeaux.ml')
-rw-r--r--backend/Linearizeaux.ml24
1 files changed, 20 insertions, 4 deletions
diff --git a/backend/Linearizeaux.ml b/backend/Linearizeaux.ml
index b609b57a..7aed5936 100644
--- a/backend/Linearizeaux.ml
+++ b/backend/Linearizeaux.ml
@@ -312,6 +312,18 @@ end
module ISet = Set.Make(Int)
+let print_iset s = begin
+ Printf.printf "{";
+ ISet.iter (fun e -> Printf.printf "%d, " e) s;
+ Printf.printf "}"
+end
+
+let print_depmap dm = begin
+ Printf.printf "[|";
+ Array.iter (fun s -> print_iset s; Printf.printf ", ") dm;
+ Printf.printf "|]\n"
+end
+
let construct_depmap code entry fs =
let is_loop_edge = get_loop_edges code entry in
let visited = ref (PTree.map (fun n i -> false) code) in
@@ -395,19 +407,23 @@ let order_sequences code entry fs =
let selected_id = ref (-1) in
begin
Array.iteri (fun i deps ->
- if !selected_id == -1 && deps == ISet.empty && not fs_evaluated.(i)
- then selected_id := i
+ begin
+ (* Printf.printf "Deps: "; print_iset deps; Printf.printf "\n"; *)
+ if !selected_id == -1 && deps == ISet.empty && not fs_evaluated.(i)
+ then selected_id := i
+ end
) depmap;
!selected_id
end
in begin
+ (* Printf.printf "depmap: "; print_depmap depmap; *)
print_ssequence fs;
while List.length !ordered_fs != List.length fs do
let next_id = select_next () in
evaluate next_id
done;
- print_ssequence !ordered_fs;
- !ordered_fs
+ (* print_ssequence (List.rev (!ordered_fs)); *)
+ List.rev (!ordered_fs)
end
let enumerate_aux_trace f reach =