diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2020-03-10 14:16:23 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2020-03-10 14:16:23 +0100 |
commit | 22bfb4389571e9b2779b6e5b9f48b8a0e5c35867 (patch) | |
tree | f11c304b3fa95aca59bb4d086bfd3bad18f94845 /backend/Linearizeaux.ml | |
parent | 7cfe8a97803c2ca8d5cfa110ba506f5b189c0923 (diff) | |
download | compcert-kvx-22bfb4389571e9b2779b6e5b9f48b8a0e5c35867.tar.gz compcert-kvx-22bfb4389571e9b2779b6e5b9f48b8a0e5c35867.zip |
Bug fix in ftracelinearize
Diffstat (limited to 'backend/Linearizeaux.ml')
-rw-r--r-- | backend/Linearizeaux.ml | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/backend/Linearizeaux.ml b/backend/Linearizeaux.ml index 22db25e0..23d06075 100644 --- a/backend/Linearizeaux.ml +++ b/backend/Linearizeaux.ml @@ -140,10 +140,21 @@ let rec last_element = function | e :: [] -> e | e' :: e :: l -> last_element (e::l) +let print_plist l = + let rec f = function + | [] -> () + | n :: l -> Printf.printf "%d, " (P.to_int n); f l + in begin + Printf.printf "["; + f l; + Printf.printf "]" + end + let forward_sequences code entry = let visited = ref (PTree.map (fun n i -> false) code) in (* returns the list of traversed nodes, and a list of nodes to start traversing next *) let rec traverse_fallthrough code node = + (* Printf.printf "Traversing %d..\n" (P.to_int node); *) if not (get_some @@ PTree.get node !visited) then begin visited := PTree.set node true !visited; match PTree.get node code with @@ -164,8 +175,8 @@ let forward_sequences code entry = in let rec f code = function | [] -> [] | node :: ln -> - let fs, rem = traverse_fallthrough code node - in [fs] @ (f code rem) + let fs, rem_from_node = traverse_fallthrough code node + in [fs] @ ((f code rem_from_node) @ (f code ln)) in (f code [entry]) module PInt = struct @@ -417,12 +428,12 @@ let order_sequences code entry fs = end in begin (* Printf.printf "depmap: "; print_depmap depmap; *) - (* print_ssequence fs; *) + (* Printf.printf "forward sequences identified: "; print_ssequence fs; *) while List.length !ordered_fs != List.length fs do let next_id = select_next () in evaluate next_id done; - (* print_ssequence (List.rev (!ordered_fs)); *) + (* Printf.printf "forward sequences ordered: "; print_ssequence (List.rev (!ordered_fs)); *) List.rev (!ordered_fs) end |