From 22bfb4389571e9b2779b6e5b9f48b8a0e5c35867 Mon Sep 17 00:00:00 2001 From: Cyril SIX Date: Tue, 10 Mar 2020 14:16:23 +0100 Subject: Bug fix in ftracelinearize --- backend/Linearizeaux.ml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'backend/Linearizeaux.ml') 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 -- cgit