diff --git a/_oasis b/_oasis index 8f43809c9f7196806e6f150a97bd46d6683d62df..e62fb321a6c4d0cfb3248931fc9881a261536334 100644 --- a/_oasis +++ b/_oasis @@ -1,6 +1,6 @@ OASISFormat: 0.4 Name: lustre-v6 -Version: 1.716 +Version: 1.717 Synopsis: The Lustre V6 Verimag compiler Description: This package contains: (1) lus2lic: the (current) name of the compiler (and interpreter via -exec). diff --git a/src/ast2lic.ml b/src/ast2lic.ml index d632f5bf428f2451faea8d578db3635a250e8534..637cf85fba401e1b1ac225ea49ca2a550063e61f 100644 --- a/src/ast2lic.ml +++ b/src/ast2lic.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 07/09/2017 (at 15:17) by Erwan Jahier> *) +(* Time-stamp: <modified the 12/09/2017 (at 09:37) by Erwan Jahier> *) open Lxm @@ -510,6 +510,7 @@ and (translate_val_exp : IdSolver.t -> UnifyClock.subst -> AstCore.val_exp | [e1;e2] -> let ve_pre = CallByPosLic(flagit Lic.PRE lxm, [e2]) in let ve_pre = { e2 with ve_core=ve_pre } in + let lxm = Lxm.override_name "->" lxm in s,CallByPosLic(flagit Lic.ARROW lxm, [e1;ve_pre]) | _ -> assert false ) diff --git a/src/lic2soc.ml b/src/lic2soc.ml index 03bddb40486c66a684e746f4165b17037e53da17..16cde1989e934797d7174779e99190aa4b854d27 100644 --- a/src/lic2soc.ml +++ b/src/lic2soc.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 07/09/2017 (at 14:13) by Erwan Jahier> *) +(** Time-stamp: <modified the 11/09/2017 (at 16:47) by Erwan Jahier> *) (* XXX ce module est mal écrit. A reprendre. (R1) *) @@ -907,7 +907,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) = Soc.step = [ { name = "step"; - lxm = nsoc_step.lxm; + lxm = lxm; idx_ins = nsoc_step.idx_ins; idx_outs = nsoc_step.idx_outs; impl = Iterator(snd (fst nk), nsk, c); diff --git a/src/lv6version.ml b/src/lv6version.ml index 23044f6b9774bc3f7556d18fe14b1330d7233e4a..ea32b769cbf35fc37d5a81397ffadddc65e63e47 100644 --- a/src/lv6version.ml +++ b/src/lv6version.ml @@ -1,7 +1,7 @@ (** Automatically generated from Makefile *) let tool = "lus2lic" let branch = "master" -let commit = "716" -let sha_1 = "7654ff44fd22fa505ddd7580a9f4c8f9d5dececf" +let commit = "717" +let sha_1 = "a80c5c7342142db766bda3353b81cff2cfcc8288" let str = (branch ^ "." ^ commit ^ " (" ^ sha_1 ^ ")") let maintainer = "erwan.jahier@univ-grenoble-alpes.fr" diff --git a/src/socExec.ml b/src/socExec.ml index cc37337e98dd3cbae94409ef661d9bf33dbf6b2c..e36fedf1193ccd7eaf03b846396d042b146e34b2 100644 --- a/src/socExec.ml +++ b/src/socExec.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 20/02/2017 (at 11:27) by Erwan Jahier> *) +(* Time-stamp: <modified the 11/09/2017 (at 14:47) by Erwan Jahier> *) open Soc open Data @@ -30,185 +30,195 @@ let (array_index : int -> var -> var_expr) = Index(Var(vn,vt),i,vt_elt) let rec (soc_step : Soc.step_method -> Soc.tbl -> Soc.t -> SocExecValue.ctx - -> SocExecValue.ctx) = + -> SocExecValue.ctx) = fun step soc_tbl soc ctx -> - profile_info ("SocExec.soc_step \n"); - let soc_name,_,_ = soc.key in - let ctx = - match step.impl with - | Extern -> - print_string ( - "\nextern nodes and functions not yet supported in the interpreter, sorry.\n"^ - "Please use the C code generator (-2c)." - ); - exit 2 - | Predef -> ( - try - let ctx = SocExecEvalPredef.get soc.key ctx in - ctx - with Not_found -> (* Not a predef op *) print_string ( - "*** internal error in "^soc_name^". Is it defined in SocExecEvalPredef?\n"); - flush stdout; assert false - ) - | Gaol(vl,gaol) -> List.fold_left (do_gao step.lxm soc_tbl) ctx gaol - | Boolred(i,j,k) -> ( - (* XXX mettre ce code dans socPredef ? (ou socMetaopPredef)*) - let inputs, outputs = soc.profile in - let b_array = (List.hd inputs) in - let cpt = ref 0 in - for i = 0 to k-1 do - let a_i = array_index i b_array in - let v = SocExecValue.get_value ctx a_i in - if v = B true then incr cpt; - done; - let res = B (!cpt >= i && !cpt <= j) in - let res_var = fst (List.hd outputs) in - let s = sadd ctx.s (res_var::ctx.cpath) res in - { ctx with s = s } - ) - | Condact(node_sk, dft_cst) -> ( - let clk = SocExecValue.get_value ctx (Var ("activate",Bool)) in - let vel_in, vel_out = soc.profile in - assert(vel_in <> []); - let vel_in = List.map (fun x -> Var x) (List.tl vel_in) in - let vel_out = List.map (fun x -> Var x) vel_out in - let node_soc = SocUtils.find step.lxm node_sk soc_tbl in - let inst_name = - match soc.instances with - | [] -> let (proc_name,_,_) = node_soc.key in proc_name - | [inst] -> fst inst - | _ -> assert false - in - let path_saved = ctx.cpath in - let ctx = { ctx with cpath=inst_name::ctx.cpath } in - let ctx = - if clk = B true then - let node_step = match node_soc.step with - [step] -> step - | _ -> assert false - in - let ctx = do_step inst_name node_step ctx soc_tbl node_soc vel_in vel_out in - { ctx with cpath=path_saved } - else - let first_step = Var ("_memory",Bool) in - let ctx = { ctx with cpath=path_saved } in - let v = get_value ctx first_step in - if v = U || v = B true then - (* We are on the first step of node_soc; - - we assign the output var to the default values *) - (assert (List.length dft_cst = List.length vel_out); - List.fold_left2 assign_expr ctx dft_cst vel_out) - else - (* We are not on the first step of node_soc; hence we do nothing - and the output will keep their previous value. *) - ctx - in - let ctx = { ctx with s = sadd ctx.s ("_memory"::ctx.cpath) (B false) } in - ctx - ) - | Iterator(iter, node_sk, n) -> - let node_soc = SocUtils.find step.lxm node_sk soc_tbl in - let node_step = match node_soc.step with [step] -> step | _ -> assert false in - let iter_inputs,iter_outputs = soc.profile in - let rctx = ref ctx in - let (proc_name,_,_) = node_soc.key in - let inst_name = - match soc.instances with - | [] -> Array.make n proc_name - | _ -> Array.of_list (List.map fst soc.instances) - in - for i = 0 to n-1 do - rctx := { !rctx with cpath = inst_name.(i)::ctx.cpath }; - let vel_in, vel_out = - match iter with - | "map" -> (List.map (array_index i) iter_inputs, - List.map (array_index i) iter_outputs) - | "fold" | "red" | "fill" | "fillred" -> - let a_in = Var (List.hd iter_inputs) in - ( - assert(iter_inputs <> []); - assert(iter_outputs <> []); - a_in::(List.map (array_index i) (List.tl iter_inputs)), - a_in::(List.map (array_index i) (List.tl iter_outputs))) - | _ -> assert false (* should not occur *) - in - rctx := do_step inst_name.(i) node_step !rctx soc_tbl node_soc vel_in vel_out; - rctx := { !rctx with cpath = List.tl !rctx.cpath }; - done; - if iter <> "map" then ( - let a_in = Var (List.hd iter_inputs) in - let a_out = Var (List.hd iter_outputs) in - rctx := assign_expr !rctx a_in a_out); (* a_out=a_n *) - !rctx; - in - ctx - -and (do_gao : Lxm.t -> Soc.tbl -> SocExecValue.ctx -> gao -> SocExecValue.ctx) = - fun lxm soc_tbl ctx gao -> - match gao with - | Case(id, id_gao_l,lxm) -> ( + profile_info ("SocExec.soc_step \n"); + let soc_name,_,_ = soc.key in + let ctx = + match step.impl with + | Extern -> + print_string ( + "\nextern nodes and functions not yet supported in the interpreter, sorry.\n"^ + "Please use the C code generator (-2c)." + ); + exit 2 + | Predef -> ( try - let id_val = get_enum id ctx in - let gaol = List.assoc id_val id_gao_l in - let ctx = List.fold_left (do_gao lxm soc_tbl) ctx gaol in + let ctx = SocExecEvalPredef.get soc.key ctx in ctx - with Not_found -> ctx + with Not_found -> (* Not a predef op *) print_string ( + "*** internal error in "^soc_name^". Is it defined in SocExecEvalPredef?\n"); + flush stdout; assert false ) - | Call(vel_out, Assign, vel_in,lxm) -> ( - let ctx = - assert (List.length vel_in = List.length vel_out); - List.fold_left2 assign_expr ctx vel_in vel_out - in - ctx - ) - | Call(vel_out, Procedure sk, vel_in,lxm) -> ( - let (proc_name,_,_) = sk in - let path_saved = ctx.cpath in - let ctx = { ctx with cpath = proc_name::ctx.cpath } in - let soc = SocUtils.find lxm sk soc_tbl in - let step = match soc.step with [step] -> step | _ -> assert false in - let ctx = do_step proc_name step ctx soc_tbl soc vel_in vel_out in - { ctx with - cpath = path_saved - } + | Gaol(vl,gaol) -> List.fold_left (do_gao step.lxm soc_tbl) ctx gaol + | Boolred(i,j,k) -> ( + (* XXX mettre ce code dans socPredef ? (ou socMetaopPredef)*) + let inputs, outputs = soc.profile in + let b_array = (List.hd inputs) in + let cpt = ref 0 in + for i = 0 to k-1 do + let a_i = array_index i b_array in + let v = SocExecValue.get_value ctx a_i in + if v = B true then incr cpt; + done; + let res = B (!cpt >= i && !cpt <= j) in + let res_var = fst (List.hd outputs) in + let s = sadd ctx.s (res_var::ctx.cpath) res in + { ctx with s = s } ) - | Call(vel_out, Method((inst_name,sk),step_name), vel_in,lxm) -> ( + | Condact(node_sk, dft_cst) -> ( + let clk = SocExecValue.get_value ctx (Var ("activate",Bool)) in + let vel_in, vel_out = soc.profile in + assert(vel_in <> []); + let vel_in = List.map (fun x -> Var x) (List.tl vel_in) in + let vel_out = List.map (fun x -> Var x) vel_out in + let node_soc = SocUtils.find step.lxm node_sk soc_tbl in + let inst_name = + match soc.instances with + | [] -> let (proc_name,_,_) = node_soc.key in proc_name + | [inst] -> fst inst + | _ -> assert false + in let path_saved = ctx.cpath in - let ctx = { ctx with cpath = inst_name::ctx.cpath } in - let soc = SocUtils.find lxm sk soc_tbl in - let step = try List.find (fun sm -> sm.name = step_name) soc.step - with Not_found -> assert false + let ctx = { ctx with cpath=inst_name::ctx.cpath } in + let ctx = + if clk = B true then + let node_step = match node_soc.step with + [step] -> step + | _ -> assert false + in + let ctx = do_step inst_name node_step ctx soc_tbl node_soc vel_in vel_out in + { ctx with cpath=path_saved } + else + let first_step = Var ("_memory",Bool) in + let ctx = { ctx with cpath=path_saved } in + let v = get_value ctx first_step in + if v = U || v = B true then + (* We are on the first step of node_soc; + - we assign the output var to the default values *) + (assert (List.length dft_cst = List.length vel_out); + List.fold_left2 assign_expr ctx dft_cst vel_out) + else + (* We are not on the first step of node_soc; hence we do nothing + and the output will keep their previous value. *) + ctx in - let ctx = do_step inst_name step ctx soc_tbl soc vel_in vel_out in - let ctx = { ctx with cpath = path_saved } in + let ctx = { ctx with s = sadd ctx.s ("_memory"::ctx.cpath) (B false) } in ctx ) + | Iterator(iter, node_sk, n) -> + let node_soc = SocUtils.find step.lxm node_sk soc_tbl in + let node_step = match node_soc.step with [step] -> step | _ -> assert false in + let iter_inputs,iter_outputs = soc.profile in + let rctx = ref ctx in + let (proc_name,_,_) = node_soc.key in + let inst_name = + match soc.instances with + | [] -> Array.make n proc_name + | _ -> Array.of_list (List.map fst soc.instances) + in + let rec f i ctx = (* iterate over the list of instances *) + if i=n then ctx else + let vel_in, vel_out = + match iter with + | "map" -> (List.map (array_index i) iter_inputs, + List.map (array_index i) iter_outputs) + | "fold" | "red" | "fill" + | "fillred" -> + let a_in = Var (List.hd iter_inputs) in + ( + assert(iter_inputs <> []); + assert(iter_outputs <> []); + a_in::(List.map (array_index i) (List.tl iter_inputs)), + a_in::(List.map (array_index i) (List.tl iter_outputs))) + | _ -> assert false (* should not occur *) + in + let ctx = { ctx with cpath = inst_name.(i)::ctx.cpath } in + let ctx = + do_step inst_name.(i) node_step ctx soc_tbl node_soc vel_in vel_out + in + let ctx = { ctx with cpath = List.tl ctx.cpath } in + f (i+1) ctx + in + let ctx = f 0 ctx in + let ctx = + if iter <> "map" then + let a_in = Var (List.hd iter_inputs) in + let a_out = Var (List.hd iter_outputs) in + assign_expr ctx a_in a_out (* a_out=a_n *) + else + ctx + in + ctx + in + ctx + +and (do_gao : Lxm.t -> Soc.tbl -> SocExecValue.ctx -> gao -> SocExecValue.ctx) = + fun lxm soc_tbl ctx gao -> + match gao with + | Case(id, id_gao_l,lxm) -> ( + try + let id_val = get_enum id ctx in + let gaol = List.assoc id_val id_gao_l in + let ctx = List.fold_left (do_gao lxm soc_tbl) ctx gaol in + ctx + with Not_found -> ctx + ) + | Call(vel_out, Assign, vel_in,lxm) -> ( + let ctx = + assert (List.length vel_in = List.length vel_out); + List.fold_left2 assign_expr ctx vel_in vel_out + in + ctx + ) + | Call(vel_out, Procedure sk, vel_in,lxm) -> ( + let (proc_name,_,_) = sk in + let path_saved = ctx.cpath in + let ctx = { ctx with cpath = proc_name::ctx.cpath } in + let soc = SocUtils.find lxm sk soc_tbl in + let step = match soc.step with [step] -> step | _ -> assert false in + let ctx = do_step proc_name step ctx soc_tbl soc vel_in vel_out in + { ctx with + cpath = path_saved + } + ) + | Call(vel_out, Method((inst_name,sk),step_name), vel_in,lxm) -> ( + let path_saved = ctx.cpath in + let ctx = { ctx with cpath = inst_name::ctx.cpath } in + let soc = SocUtils.find lxm sk soc_tbl in + let step = try List.find (fun sm -> sm.name = step_name) soc.step + with Not_found -> assert false + in + let ctx = do_step inst_name step ctx soc_tbl soc vel_in vel_out in + let ctx = { ctx with cpath = path_saved } in + ctx + ) and (do_step : Lv6Id.t -> step_method -> SocExecValue.ctx -> Soc.tbl -> Soc.t -> - var_expr list -> var_expr list -> SocExecValue.ctx) = + var_expr list -> var_expr list -> SocExecValue.ctx) = fun name step ctx soc_tbl soc vel_in vel_out -> - profile_info ("SocExec.do_step "^name^"\n"); - let soc_in_vars, soc_out_vars = soc.profile in - let step_in_vars = filter_params soc soc_in_vars step.idx_ins in - let step_out_vars = filter_params soc soc_out_vars step.idx_outs in - let new_s = substitute_args_and_params vel_in step_in_vars ctx in - let ctx = soc_step step soc_tbl soc { ctx with s=new_s } in - let s_out = substitute_params_and_args step_out_vars vel_out ctx in - { ctx with s = s_out } + profile_info ("SocExec.do_step "^name^"\n"); + let soc_in_vars, soc_out_vars = soc.profile in + let step_in_vars = filter_params soc soc_in_vars step.idx_ins in + let step_out_vars = filter_params soc soc_out_vars step.idx_outs in + let new_s = substitute_args_and_params vel_in step_in_vars ctx in + let ctx = soc_step step soc_tbl soc { ctx with s=new_s } in + let s_out = substitute_params_and_args step_out_vars vel_out ctx in + { ctx with s = s_out } (* get the step params from its soc params *) and (filter_params : Soc.t -> Soc.var list -> int list -> Soc.var list) = fun soc el il -> - let local_nth i l = - try List.nth l i - with _ -> - print_string ( + let local_nth i l = + try List.nth l i + with _ -> + print_string ( "\n*** Cannot get the " ^ (string_of_int (i+1)) ^ "the element of a list of size " ^ (string_of_int (List.length l))^"\n"); - flush stdout; - assert false - in - let res = List.map (fun i -> local_nth i el) il in - res + flush stdout; + assert false + in + let res = List.map (fun i -> local_nth i el) il in + res (* [add_data_subst vtnl data_s s] add the data_s to s; *) diff --git a/src/socExecDbg.ml b/src/socExecDbg.ml index d88da240b2a2acc1ab41bdcbe767a9c37daca8e7..a470f1f38868e842b4a83d270f3a7e1951a72ab8 100644 --- a/src/socExecDbg.ml +++ b/src/socExecDbg.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 08/09/2017 (at 10:33) by Erwan Jahier> *) +(* Time-stamp: <modified the 12/09/2017 (at 08:52) by Erwan Jahier> *) open Soc open Data open SocExecValue @@ -113,7 +113,7 @@ let (assign_expr_dbg : Lxm.t -> SocExecValue.ctx -> var_expr -> var_expr -> Even Event.data = datal; Event.next = (fun () -> cont nectx val_ctx); Event.terminate = ectx.Event.terminate; - } + } in { ectx with Event.kind = Event.Call; @@ -128,13 +128,13 @@ let (assign_expr_dbg : Lxm.t -> SocExecValue.ctx -> var_expr -> var_expr -> Even Event.nb = n; Event.data = datal; Event.next = (fun () -> cont2 ectx res); - } + } + - (* [array_index i v] returns the var_expr v[i] *) let (array_index : int -> var -> var_expr) = - fun i (vn,vt) -> - let vt_elt = + fun i (vn,vt) -> + let vt_elt = match vt with | Array(vt_elt,_) -> vt_elt | _ -> assert false @@ -157,6 +157,7 @@ let rec (soc_step : Lxm.t -> Soc.step_method -> Soc.tbl -> Soc.t -> fun lxm step soc_tbl soc ectx val_ctx cont -> profile_info ("SocExecDbg.soc_step \n"); let soc_name,_,_ = soc.key in + let lxm = step.lxm in let event = match step.impl with | Extern -> @@ -169,9 +170,10 @@ let rec (soc_step : Lxm.t -> Soc.step_method -> Soc.tbl -> Soc.t -> try let val_ctx = SocExecEvalPredef.get soc.key val_ctx in cont ectx val_ctx - with Not_found -> (* Not a predef op *) print_string ( - "*** internal error in "^soc_name^". Is it defined in SocExecEvalPredef?\n"); - flush stdout; assert false + with Not_found -> (* Not a predef op *) + print_string ( + "*** internal error in "^soc_name^". Is it defined in SocExecEvalPredef?\n"); + flush stdout; assert false ) | Gaol(vl,gaol) -> do_gaol soc_tbl ectx gaol val_ctx cont @@ -242,50 +244,52 @@ let rec (soc_step : Lxm.t -> Soc.step_method -> Soc.tbl -> Soc.t -> cont ectx val_ctx ) ) - | Iterator(iter, node_sk, n) -> - let node_soc = SocUtils.find lxm node_sk soc_tbl in - let node_step = match node_soc.step with [step] -> step | _ -> assert false in - let iter_inputs,iter_outputs = soc.profile in - let (proc_name,_,_) = node_soc.key in - let inst_name = - match soc.instances with - | [] -> Array.make n proc_name - | _ -> Array.of_list (List.map fst soc.instances) - in - (* As we need to iterate on an (instance) array, we locally switch - to the evildark side *) - let rval_ctx = ref val_ctx in - let ref_event = ref ectx (* XXX dummy ?? *) in - for i = 0 to n-1 do - rval_ctx := { !rval_ctx with cpath = inst_name.(i)::val_ctx.cpath }; - let vel_in, vel_out = - match iter with - | "map" -> (List.map (array_index i) iter_inputs, - List.map (array_index i) iter_outputs) - | "fold" | "red" | "fill" - | "fillred" -> - let a_in = Var (List.hd iter_inputs) in - ( a_in::(List.map (array_index i) (List.tl iter_inputs)), - a_in::(List.map (array_index i) (List.tl iter_outputs))) - | _ -> assert false (* should not occur *) - in - let cont ectx val_ctx = (* necessary? correct? *) - rval_ctx := val_ctx; - ref_event := ectx; - cont ectx val_ctx - in - ref_event := - do_soc_step lxm inst_name.(i) node_step !rval_ctx soc_tbl - node_soc vel_in vel_out !ref_event cont; - - rval_ctx := { !rval_ctx with cpath = List.tl !rval_ctx.cpath }; - done; - if iter <> "map" then ( - let a_in = Var (List.hd iter_inputs) in - let a_out = Var (List.hd iter_outputs) in - rval_ctx := assign_expr !rval_ctx a_in a_out); (* a_out=a_n *) - (* XXX use assign_expr_dbg *) - cont !ref_event !rval_ctx + | Iterator(iter, node_sk, n) -> ( + let node_soc = SocUtils.find lxm node_sk soc_tbl in + let node_step = match node_soc.step with [step] -> step | _ -> assert false in + let iter_inputs,iter_outputs = soc.profile in + let (proc_name,_,_) = node_soc.key in + let inst_name = + match soc.instances with + | [] -> Array.make n proc_name + | _ -> Array.of_list (List.map fst soc.instances) + in + let path_saved = val_ctx.cpath in + let rec f i cont ectx val_ctx = (* iterate over the list of instances *) + if i < 0 then + let val_ctx = if iter = "map" then val_ctx else + let a_in = Var (List.hd iter_inputs) in + let a_out = Var (List.hd iter_outputs) in + assign_expr val_ctx a_in a_out (* a_out=a_n *) + in + cont ectx val_ctx + else ( + let vel_in, vel_out = + match iter with + | "map" -> (List.map (array_index i) iter_inputs, + List.map (array_index i) iter_outputs) + | "fold" | "red" | "fill" + | "fillred" -> + let a_in = Var (List.hd iter_inputs) in + ( a_in::(List.map (array_index i) (List.tl iter_inputs)), + a_in::(List.map (array_index i) (List.tl iter_outputs))) + | _ -> assert false (* should not occur *) + in + let cont ectx val_ctx = + let val_ctx = { val_ctx with cpath = path_saved } in + cont ectx val_ctx + in + let cont ectx val_ctx = + let val_ctx = { val_ctx with cpath = inst_name.(i)::val_ctx.cpath } in + do_soc_step lxm inst_name.(i) node_step val_ctx soc_tbl node_soc + vel_in vel_out ectx cont + in + f (i-1) cont ectx val_ctx + ) + (* XXX use assign_expr_dbg to let rdbg step into iterators *) + in + f (n-1) cont ectx val_ctx + ) in event @@ -447,9 +451,12 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> | Predef | Extern -> [] in - (* let soc_step_in, soc_step_out = step.profile in *) - let name = if (List.hd soc.step).impl = Predef then Some step_name else None in - let sinfo = make_sinfo lxm (None) ectx + let name_opt = + (* the long names of lustre op are boring *) + if String.length step_name > 8 && String.sub step_name 0 8 = "Lustre::" then + None else Some step_name + in + let sinfo = make_sinfo lxm name_opt ectx (List.map2 sinfo_subst vel_in step_in_vars) (List.map2 sinfo_subst vel_out step_out_vars) in @@ -534,7 +541,7 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> (Event.t -> SocExecValue.ctx -> Event.t) -> Event.t) = fun soc_tbl soc ectx val_ctx cont -> let soc_in_vars, soc_out_vars = soc.profile in - (* let (datal:Data.subst list) = get_all_subst val_ctx.s in *) + (* let (datal:Data.subst list) = get_all_subst val_ctx.s in *) let (datal:Data.subst list) = get_input_vals val_ctx soc_in_vars in let (soc_name,_,_) = soc.key in let lxm = (List.hd soc.step).lxm in diff --git a/test/lus2lic.sum b/test/lus2lic.sum index e04bfcb2844583afa396b6338103647f8604257a..09b1f8b4ebce8f5d8127c3f443f1b01a67f90cdf 100644 --- a/test/lus2lic.sum +++ b/test/lus2lic.sum @@ -1,5 +1,5 @@ ==> lus2lic0.sum <== -Test Run By jahier on Fri Sep 8 10:38:01 +Test Run By jahier on Mon Sep 11 15:03:42 Native configuration is x86_64-unknown-linux-gnu === lus2lic0 tests === @@ -66,7 +66,7 @@ XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/lecte XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/s.lus ==> lus2lic1.sum <== -Test Run By jahier on Fri Sep 8 10:38:01 +Test Run By jahier on Mon Sep 11 15:03:43 Native configuration is x86_64-unknown-linux-gnu === lus2lic1 tests === @@ -412,7 +412,7 @@ PASS: sh multipar.sh PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus {} ==> lus2lic2.sum <== -Test Run By jahier on Fri Sep 8 10:38:55 +Test Run By jahier on Mon Sep 11 15:04:37 Native configuration is x86_64-unknown-linux-gnu === lus2lic2 tests === @@ -752,7 +752,7 @@ PASS: sh zzz2.sh PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus {} ==> lus2lic3.sum <== -Test Run By jahier on Fri Sep 8 10:39:54 +Test Run By jahier on Mon Sep 11 15:05:36 Native configuration is x86_64-unknown-linux-gnu === lus2lic3 tests === @@ -1266,7 +1266,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {} ==> lus2lic4.sum <== -Test Run By jahier on Fri Sep 8 10:41:11 +Test Run By jahier on Mon Sep 11 15:06:50 Native configuration is x86_64-unknown-linux-gnu === lus2lic4 tests === @@ -1783,14 +1783,14 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {} # of unexpected failures 6 =============================== # Total number of failures: 14 -lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds +lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 54 seconds lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 59 seconds -lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 77 seconds +lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 74 seconds lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 47 seconds * Ref time: -0.07user 0.00system 3:57.18elapsed 0%CPU (0avgtext+0avgdata 5692maxresident)k -32inputs+0outputs (0major+6203minor)pagefaults 0swaps +0.06user 0.01system 3:55.62elapsed 0%CPU (0avgtext+0avgdata 5580maxresident)k +32inputs+0outputs (0major+6192minor)pagefaults 0swaps * Quick time (-j 4): -0.05user 0.02system 1:41.39elapsed 0%CPU (0avgtext+0avgdata 5608maxresident)k -32inputs+0outputs (0major+6183minor)pagefaults 0swaps +0.06user 0.01system 1:44.43elapsed 0%CPU (0avgtext+0avgdata 5648maxresident)k +64inputs+0outputs (0major+6216minor)pagefaults 0swaps diff --git a/test/should_work/simpleRed.lus b/test/should_work/simpleRed.lus index d3710aef446eb7a9048b6af718abc600d67ec8cd..36c2cf97120b00805aa14a506f68305eab1dddfe 100644 --- a/test/should_work/simpleRed.lus +++ b/test/should_work/simpleRed.lus @@ -3,5 +3,5 @@ const m = 3 ; node simpleRed ( a : int ) returns ( res : int ); let - res = red << +, m >> (0 , a^m ); + res = red << +, m >> (0 , a^m ); tel \ No newline at end of file diff --git a/test/should_work/test_condact.lus b/test/should_work/test_condact.lus index adbd5a5a6a609a7a8efc5243b1fb9099340af46e..d2320832fcefcbe17e461752ad74aa3dcb70fb5a 100644 --- a/test/should_work/test_condact.lus +++ b/test/should_work/test_condact.lus @@ -18,4 +18,4 @@ let -- (x, y, z) = m erge c (true -> toto(a, b)) (false -> (11, 42, 12) fby (x,y,z)) ; tel --- \ No newline at end of file +-- c \ No newline at end of file