Fixed disjoint clock computation
This commit is contained in:
parent
ffeb81f529
commit
7a10ba028a
2 changed files with 17 additions and 15 deletions
|
@ -143,3 +143,19 @@ let rec first_ck ct = match ct with
|
|||
| Ck ck -> ck
|
||||
| Cprod [] -> assert false
|
||||
| Cprod (ct::_) -> first_ck ct
|
||||
|
||||
let are_disjoint ck1 ck2 =
|
||||
let rec list_of_samplers acc ck = match ck with
|
||||
| Cbase | Cvar _ -> acc
|
||||
| Con(ck, c, x) -> list_of_samplers ((c, x)::acc) ck
|
||||
in
|
||||
let rec disjoint_samplers s_ck1 s_ck2 = match s_ck1, s_ck2 with
|
||||
| [], _ -> false
|
||||
| _ , [] -> false
|
||||
| (c1, x1)::s_ck1, (c2, x2)::s_ck2 ->
|
||||
if Idents.ident_compare x1 x2 <> 0 then
|
||||
false
|
||||
else
|
||||
c1 <> c2 || disjoint_samplers s_ck1 s_ck2
|
||||
in
|
||||
disjoint_samplers (list_of_samplers [] ck1) (list_of_samplers [] ck2)
|
||||
|
|
|
@ -325,20 +325,6 @@ let compute_live_vars eqs =
|
|||
let _, res = List.fold_left aux (VarEnv.empty, []) (List.rev eqs) in
|
||||
res
|
||||
|
||||
let rec disjoint_clock ck1 ck2 =
|
||||
match Clocks.ck_repr ck1, Clocks.ck_repr ck2 with
|
||||
| Cbase, Cbase -> false
|
||||
| Con(ck1, c1, n1), Con(ck2,c2,n2) ->
|
||||
if ck1 = ck2 & n1 = n2 & c1 <> c2 then
|
||||
true
|
||||
else
|
||||
disjoint_clock ck1 ck2
|
||||
(*let separated_by_reset =
|
||||
(match x_is_mem, y_is_mem with
|
||||
| true, true -> are_separated_by_reset c1 c2
|
||||
| _, _ -> true) in *)
|
||||
| _ -> false
|
||||
|
||||
(** [should_interfere x y] returns whether variables x and y
|
||||
can interfere. *)
|
||||
let should_interfere (ivx, ivy) =
|
||||
|
@ -360,7 +346,7 @@ let should_interfere (ivx, ivy) =
|
|||
that the value of the register will
|
||||
be done at the end of the step. *)
|
||||
let disjoint_clocks =
|
||||
not ((x_is_mem && not x_is_when) || (y_is_mem && not y_is_when)) && disjoint_clock ckx cky
|
||||
not ((x_is_mem && not x_is_when) || (y_is_mem && not y_is_when)) && Clocks.are_disjoint ckx cky
|
||||
in
|
||||
not (disjoint_clocks or are_copies)
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue