aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Linearizeaux.ml
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2020-02-20 11:25:58 +0100
committerCyril SIX <cyril.six@kalray.eu>2020-02-20 11:25:58 +0100
commit840f7e5af8294d121caf1c712b75ba3c13914a54 (patch)
tree1e0e2fad3121b7a3b605656cf710ad355e033b11 /backend/Linearizeaux.ml
parent305d3d307fd1a83b17052119d75516946ce617b4 (diff)
downloadcompcert-kvx-840f7e5af8294d121caf1c712b75ba3c13914a54.tar.gz
compcert-kvx-840f7e5af8294d121caf1c712b75ba3c13914a54.zip
WIP
Diffstat (limited to 'backend/Linearizeaux.ml')
-rw-r--r--backend/Linearizeaux.ml26
1 files changed, 26 insertions, 0 deletions
diff --git a/backend/Linearizeaux.ml b/backend/Linearizeaux.ml
index 28719207..8dccbb4b 100644
--- a/backend/Linearizeaux.ml
+++ b/backend/Linearizeaux.ml
@@ -195,6 +195,32 @@ let forward_sequences code entry =
in [fs] @ (f code rem)
in (f code [entry])
+let iter_set f s = Seq.iter f (Set.to_seq s)
+
+let try_merge code fs =
+ let seqs = ref (Set.of_list fs) in
+ let oldLength = ref (Set.cardinal !seqs) in
+ let continue = ref true in
+ while !continue do
+ iter_set (fun s ->
+ iter_set (fun s' ->
+ if (s == s') then ()
+ else if (can_be_merged s s') then
+ begin
+ seqs
+ end
+ else ()
+ ) !seqs
+ ) !seqs
+ (* FIXME - FIXME - continue *)
+
+
+ if !oldLength == List.length !seqs then
+ continue := false
+ else
+ oldLength := List.length !seqs
+ done
+
let order_sequences fs = fs
let enumerate_aux_trace f reach =