From fe74030f789145b236e2f17da9b8908f007fc57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9onard=20G=C3=A9rard?= Date: Wed, 25 May 2011 08:14:01 +0200 Subject: [PATCH] Fix clocking of iterators. --- compiler/minils/analysis/clocking.ml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/minils/analysis/clocking.ml b/compiler/minils/analysis/clocking.ml index 9907ccb..8e02919 100644 --- a/compiler/minils/analysis/clocking.ml +++ b/compiler/minils/analysis/clocking.ml @@ -113,7 +113,7 @@ let typing_app h base pat op w_list = match op with | Wvar id -> id | _ -> error_message w.w_loc Edefclock) with Not_found -> - Misc.internal_error "Clocking, non matching signature" + Misc.internal_error "Clocking, non matching signature 2" in Clocks.Con (sigck_to_ck sck, c, id) in @@ -161,15 +161,15 @@ let typing_eq h { eq_lhs = pat; eq_rhs = e; eq_loc = loc } = let base_ck = fresh_clock() in let ct = match it with | Imap -> (* exactly as if clocking the node *) - typing_app h base_ck pat op args + typing_app h base_ck pat op (pargs@args) | Imapi -> (* clocking the node with the extra [i] input on [ck_r] *) let i (* stubs [i] as 0 *) = mk_extvalue ~ty:Initial.tint ~clock:base_ck (Wconst (Initial.mk_static_int 0)) in - typing_app h base_ck pat op (args@[i]) + typing_app h base_ck pat op (pargs@args@[i]) | Ifold | Imapfold -> (* clocking node with equality constaint on last input and last output *) - let ct = typing_app h base_ck pat op args in + let ct = typing_app h base_ck pat op (pargs@args) in unify_ck (Clocks.last_clock ct) (Misc.last_element args).w_ck; ct | Ifoldi -> (* clocking the node with the extra [i] and last in/out constraints *) @@ -181,7 +181,7 @@ let typing_eq h { eq_lhs = pat; eq_rhs = e; eq_loc = loc } = | [l] -> i::[l] | h::l -> h::(insert_i l) in - let ct = typing_app h base_ck pat op (insert_i args) in + let ct = typing_app h base_ck pat op (pargs@(insert_i args)) in unify_ck (Clocks.last_clock ct) (Misc.last_element args).w_ck; ct in