diff --git a/INSTALL.txt b/INSTALL.txt index 8cbc168caa02379f07af461a270d0af245332d95..a33f4fad7e30439ee2609bf2a0674cd17c5d0592 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -1,5 +1,5 @@ (* OASIS_START *) -(* DO NOT EDIT (digest: 508d99c6cac10435d93632adee94a796) *) +(* DO NOT EDIT (digest: 2bc39709ec41ab29bcd687aeb4b37571) *) This is the INSTALL file for the lustre-v6 distribution. @@ -15,7 +15,7 @@ In order to compile this package, you will need: * findlib * lutils for executable lus2lic, executable lus2lic.dbg * extlib for executable lus2lic, executable lus2lic.dbg -* rdbg-plugin (>= 1.51) for library lustre-v6 +* rdbg-plugin (>= 1.109) for library lustre-v6 Installing ========== diff --git a/_oasis b/_oasis index 61691a0b7c47d05a4e00eccab4f7bd2c3b6159f8..eab3d130ea001e4534b0b4606bbe55a25eba744a 100644 --- a/_oasis +++ b/_oasis @@ -1,6 +1,6 @@ OASISFormat: 0.4 Name: lustre-v6 -Version: 1.713 +Version: 1.714 Synopsis: The Lustre V6 Verimag compiler Description: This package contains: (1) lus2lic: the (current) name of the compiler (and interpreter via -exec). @@ -47,7 +47,7 @@ Library "lustre-v6" Modules: Lus2licRun Path: src/ BuildTools: ocamlbuild - BuildDepends: str,unix,num,rdbg-plugin (>= 1.51) + BuildDepends: str,unix,num,rdbg-plugin (>= 1.109) Install:true XMETAEnable: true InternalModules: SocExecValue,SocUtils,Lv6util,Lv6version,Lv6errors,Lxm,Lv6MainArgs,Lv6Verbose,Soc,SocPredef,Lv6Id,SocExecDbg,SocExec,SocExecEvalPredef,Lv6Compile,AstTab,AstTabSymbol,AstInstanciateModel,Lv6parserUtils,AstV6,FilenameExtras,LicTab,LicDump,AstPredef,Lic,AstCore,FreshName,IdSolver,EvalConst,LicEvalConst,LicEvalType,UnifyType,Ast2lic,AstV6Dump,EvalClock,UnifyClock,LicEvalClock,EvalType,LicPrg,LicMetaOp,L2lCheckOutputs,Lv6Misc,L2lRmPoly,L2lExpandMetaOp,L2lSplit,L2lExpandNodes,L2lExpandArrays,L2lCheckLoops,L2lCheckMemSafe,L2lOptimIte,Lv6lexer,Lv6parser,AstRecognizePredef,Lic2soc,Action,ActionsDeps,SocVar,TopoSort,SortActions,SortActionsExpe,L2lCheckCKeyWord,L2lCheckKcgKeyWord,L2lWhenOnId,L2lNoWhenNot,L2lRemoveAlias,L2lExpandEnum diff --git a/src/astRecognizePredef.ml b/src/astRecognizePredef.ml index d6c784bfe3edff36a4f6f6a8a2a43d976148f6d3..dc3cf4da6e5e4fdf2472e7c572cf948b3748c217 100644 --- a/src/astRecognizePredef.ml +++ b/src/astRecognizePredef.ml @@ -1,9 +1,9 @@ -(* Time-stamp: <modified the 26/02/2015 (at 11:19) by Erwan Jahier> *) +(* Time-stamp: <modified the 22/08/2017 (at 14:57) by Erwan Jahier> *) let (get_predef : Lv6Id.idref -> AstPredef.op option) = fun idref -> - let get_op () = + let get_op () = (* XXX if a user node is named "plus", this does not work *) try Some (AstPredef.string_to_op (Lv6Id.to_string (Lv6Id.name_of_idref idref))) with Not_found -> None in diff --git a/src/lv6version.ml b/src/lv6version.ml index 9a8940f001c4023a3a3d9f39b3a249ca28a8077f..46d59b961223897cb4be78e2c77e226b285d829d 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 = "713" -let sha_1 = "1057e2e156514d86bf984a88335a79013826b823" +let commit = "714" +let sha_1 = "4921d8393f86044569a89270e71dcc6d466e29a7" let str = (branch ^ "." ^ commit ^ " (" ^ sha_1 ^ ")") let maintainer = "erwan.jahier@univ-grenoble-alpes.fr" diff --git a/src/socExecDbg.ml b/src/socExecDbg.ml index 6879f73fce16e39c72b29c379476002d9a056f4b..738633b100c1d015bf909d384675fa209ef67cf4 100644 --- a/src/socExecDbg.ml +++ b/src/socExecDbg.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 10/07/2017 (at 11:01) by Erwan Jahier> *) +(* Time-stamp: <modified the 06/09/2017 (at 11:57) by Erwan Jahier> *) open Soc open Data open SocExecValue @@ -269,6 +269,23 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> [_] -> soc_name | _ -> soc_name^"."^step.name in + let locals = if soc.step = [] then [] else + match (List.hd soc.step).impl with + | Gaol (var_list, _) -> var_list + | Iterator _ + | Boolred _ + | Condact _ + | Predef + | Extern -> [] + in + let sinfo_subst arg var = + match arg with + | Var v -> v,var + | Const v -> v,var + | Field (_,_,t) + | Index (_,_,t) + | Slice (_,_,_,_,_,t) -> (SocUtils.string_of_filter arg, t), var + in (* let soc_step_in, soc_step_out = step.profile in *) let sinfo = let l = Lxm.line lxm in @@ -290,6 +307,8 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> Event.expr = Expr.Var "dummy" ; (* XXX *) Event.atoms = [atom]; Event.more = None; (* yet *) + Event.in_subst = List.map2 sinfo_subst vel_in step_in_vars; + Event.out_subst = List.map2 sinfo_subst vel_out step_out_vars; } ) in @@ -301,6 +320,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> Event.data = datal; Event.inputs = fst soc.profile; Event.outputs = snd soc.profile; + Event.locals = locals; Event.sinfo = sinfo; } in @@ -321,6 +341,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> Event.name = step_name; Event.inputs = ectx.Event.inputs; Event.outputs = ectx.Event.outputs; + Event.locals = ectx.Event.locals; Event.sinfo = sinfo; Event.data = datal; Event.next = (fun () -> cont nectx val_ctx); @@ -336,6 +357,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx -> Event.name = step_name; Event.inputs = ectx.Event.inputs; Event.outputs = ectx.Event.outputs; + Event.locals = ectx.Event.locals; Event.sinfo = sinfo; Event.data = ectx.Event.data; Event.next = (fun () -> @@ -375,6 +397,15 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> 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 + let locals = if soc.step = [] then [] else + match (List.hd soc.step).impl with + | Gaol (var_list, _) -> var_list + | Iterator _ + | Boolred _ + | Condact _ + | Predef + | Extern -> [] + in let sinfo = Some(fun () -> let atom = @@ -390,6 +421,8 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> Event.expr = Expr.Var "dummy" ; (* XXX *) Event.atoms = [atom]; Event.more = None; (* yet *) + Event.in_subst = []; + Event.out_subst = []; } ) in @@ -400,6 +433,7 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> Event.data = datal; Event.inputs = fst soc.profile; Event.outputs = snd soc.profile; + Event.locals = locals; Event.sinfo = sinfo; } in @@ -421,6 +455,7 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> Event.name = soc_name; Event.inputs = fst soc.profile; Event.outputs = snd soc.profile; + Event.locals = locals; Event.sinfo = sinfo; Event.data = datal; Event.next = (fun () -> cont nectx val_ctx); @@ -436,7 +471,8 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx -> Event.name = soc_name; Event.inputs = ectx.Event.inputs; Event.outputs = ectx.Event.outputs; - Event.sinfo = None; + Event.locals = locals; + Event.sinfo = sinfo; Event.data = ectx.Event.data; Event.next = (fun () -> let step = match soc.step with [step] -> step | _ -> assert false in diff --git a/src/socExecValue.ml b/src/socExecValue.ml index fcc82c7ca7a56c7164622443dc8315fb50fd05ac..e01424d8b01cedeaea1b401768d9a5ad46a509d0 100644 --- a/src/socExecValue.ml +++ b/src/socExecValue.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 16/08/2017 (at 17:13) by Erwan Jahier> *) +(* Time-stamp: <modified the 29/08/2017 (at 15:55) by Erwan Jahier> *) let dbg = (Lv6Verbose.get_flag "exec") diff --git a/test/lus2lic.sum b/test/lus2lic.sum index 5e11b8d8242e9cb16055ec6f9958f1cf4b09a654..c263d411d313f8cf69d5ed36a026fe1633d0566c 100644 --- a/test/lus2lic.sum +++ b/test/lus2lic.sum @@ -1,5 +1,5 @@ ==> lus2lic0.sum <== -Test Run By jahier on Tue Aug 22 11:31:21 +Test Run By jahier on Mon Aug 28 17:05:56 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 Tue Aug 22 11:31:22 +Test Run By jahier on Mon Aug 28 17:05:57 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 Tue Aug 22 11:32:16 +Test Run By jahier on Mon Aug 28 17:06:49 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 Tue Aug 22 11:33:12 +Test Run By jahier on Mon Aug 28 17:07:47 Native configuration is x86_64-unknown-linux-gnu === lus2lic3 tests === @@ -1101,7 +1101,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node is_stable.lus {} PASS: ./lus2lic {} {-o iter.lic iter.lus} PASS: ./lus2lic {-ec -o iter.ec iter.lus} PASS: ./myec2c {-o iter.c iter.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {} +FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {} PASS: ./lus2lic {} {-o iterFibo.lic iterFibo.lus} PASS: ./lus2lic {-ec -o iterFibo.ec iterFibo.lus} PASS: ./myec2c {-o iterFibo.c iterFibo.ec} @@ -1266,7 +1266,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {} ==> lus2lic4.sum <== -Test Run By jahier on Tue Aug 22 11:34:25 +Test Run By jahier on Mon Aug 28 17:09:00 Native configuration is x86_64-unknown-linux-gnu === lus2lic4 tests === @@ -1771,8 +1771,8 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {} ==> lus2lic3.sum <== === lus2lic3 Summary === -# of expected passes 495 -# of unexpected failures 5 +# of expected passes 494 +# of unexpected failures 6 # of unresolved testcases 1 ==> lus2lic4.sum <== @@ -1782,15 +1782,15 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {} # of expected passes 465 # of unexpected failures 6 =============================== -# Total number of failures: 13 -lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds -lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 53 seconds -lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 56 seconds +# Total number of failures: 14 +lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds +lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 52 seconds +lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 58 seconds lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 73 seconds -lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 45 seconds +lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 46 seconds * Ref time: -0.06user 0.01system 3:50.32elapsed 0%CPU (0avgtext+0avgdata 5564maxresident)k -32inputs+0outputs (0major+6181minor)pagefaults 0swaps +0.06user 0.00system 3:51.51elapsed 0%CPU (0avgtext+0avgdata 5588maxresident)k +0inputs+0outputs (0major+6187minor)pagefaults 0swaps * Quick time (-j 4): -0.05user 0.02system 1:41.84elapsed 0%CPU (0avgtext+0avgdata 5660maxresident)k -128inputs+0outputs (0major+6194minor)pagefaults 0swaps +0.05user 0.02system 1:58.38elapsed 0%CPU (0avgtext+0avgdata 5704maxresident)k +0inputs+0outputs (0major+6193minor)pagefaults 0swaps diff --git a/test/should_work/iter.lus b/test/should_work/iter.lus index 856b27485af509a84d63e34f56fe02d33874432d..c1412fde0c17d93906af684eff26f49d1e83ccaa 100644 --- a/test/should_work/iter.lus +++ b/test/should_work/iter.lus @@ -7,7 +7,7 @@ var let bidon, T_inter = fill<<filled,n>>(init); Tab_out = map<<mapped,n>>(T_inter); - Red_plus = red<<myplus,n>>(-100, Tab_out); + Red_plus = red<<plus,n>>(-100, Tab_out); zorroAcc, zorroTab = fillred<<garcia,5>>(0,[0,0,0,0,0]); tel @@ -23,7 +23,7 @@ let elt_out = elt_in + 1; tel -node myplus(accu_in, elt_in : int) returns (accu_out : int); +node plus(accu_in, elt_in : int) returns (accu_out : int); let accu_out = accu_in + elt_in ; tel