diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2020-03-09 11:27:38 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2020-03-09 11:27:38 +0100 |
commit | 7794bebc14750c5d8116f54cabe143231ef60308 (patch) | |
tree | 4a51077017bca87f166290aa499f7bad8a37317c /backend/Linearizeaux.ml | |
parent | 8300321b348a6b416a8e0498ecebf944697d0641 (diff) | |
download | compcert-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.ml | 24 |
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 = |