From 6c4f5c6abdf19fe5558e0caed3388f80ed4f7cfb Mon Sep 17 00:00:00 2001
From: Erwan Jahier <jahier@imag.fr>
Date: Thu, 9 Oct 2014 09:41:35 +0200
Subject: [PATCH] soc2c: fix bugs introduced 4 commits ago (nonreg test were
 inhibited since 7 commits! arg...)

More precisely, it was introduced here 6c7bc5620d71375016b8e83f86e7ce11f3001cc6

bug1: Soc2cGenAssign.f was calling Soc2cIdent.type_to_short_string,
which was generating bad idents (ie, containing "::").

bug2 : some _assign_array_types macro def were missing.

to be continued...
---
 src/lv6version.ml      |  4 +-
 src/soc2c.ml           |  6 +--
 src/soc2cGenAssign.ml  | 67 +++++++++++++++++--------------
 src/soc2cGenAssign.mli | 10 ++---
 src/soc2cIdent.ml      |  4 +-
 src/soc2cPredef.ml     |  8 ++--
 src/socPredef.ml       |  8 ++--
 src/socPredef2cHeap.ml |  2 +-
 test/lus2lic.sum       | 91 ++++++++++++++++++++++++++----------------
 test/lus2lic.time      | 14 ++++---
 10 files changed, 123 insertions(+), 91 deletions(-)

diff --git a/src/lv6version.ml b/src/lv6version.ml
index 331383e1..366ebb23 100644
--- a/src/lv6version.ml
+++ b/src/lv6version.ml
@@ -1,7 +1,7 @@
 (** Automatically generated from Makefile *) 
 let tool = "lus2lic"
 let branch = "(no"
-let commit = "534"
-let sha_1 = "f37347fe7fa7f49efe1b0ae7a462d649437f4872"
+let commit = "535"
+let sha_1 = "55efeadeedd3a8c7a3600eb47d978b0d078ecc8a"
 let str = (branch ^ "." ^ commit ^ " (" ^ sha_1 ^ ")")
 let maintainer = "jahier@imag.fr"
diff --git a/src/soc2c.ml b/src/soc2c.ml
index aecf4293..ff1430fc 100644
--- a/src/soc2c.ml
+++ b/src/soc2c.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/10/2014 (at 17:42) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/10/2014 (at 18:35) by Erwan Jahier> *)
 
 
 (* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *)
@@ -608,8 +608,8 @@ typedef float _float;
     List.iter (soc2c 2 och occ stbl) socs;
     
     puth "/////////////////////////////////////////////////\n";
-    let l =  (Soc2cGenAssign.gen_used_types licprg) in
-    if l <> [] then puth "// Defining array and extern types assignements \n";
+    let l =  (Soc2cGenAssign.gen_used_types socs) in 
+    if l <> [] then puth "// Defining array and extern types assignments \n";
     List.iter (fun t -> puth (Soc2cGenAssign.f t)) l;
     
     puth "#endif\n";
diff --git a/src/soc2cGenAssign.ml b/src/soc2cGenAssign.ml
index 721c1039..a8ff2a5c 100644
--- a/src/soc2cGenAssign.ml
+++ b/src/soc2cGenAssign.ml
@@ -1,4 +1,8 @@
-(* Time-stamp: <modified the 03/10/2014 (at 17:29) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/10/2014 (at 18:23) by Erwan Jahier> *)
+
+open Data
+open Lic
+open Lxm
 
 module OrderedData = struct
   type t = Data.t
@@ -7,36 +11,41 @@ end
 
 module DataSet = Set.Make(OrderedData)
 
-let (var_info_to_data : Lic.var_info -> Data.t) =
-  fun vi -> 
-    Lic2soc.lic_to_data_type vi.var_type_eff 
-
-let (update_set : DataSet.t -> Lic.var_info -> DataSet.t) =
-  fun acc vi -> 
-    try 
-      let t = var_info_to_data vi in
-      (match t with
-        | Data.Array _
-        | Data.Extern _ -> DataSet.add t acc 
-        | _ -> acc)
-    with Lic2soc.Polymorphic  -> 
-      (* migth be raised by var_info_to_data *)
-      acc
-      
+let rec (update_set : DataSet.t -> Data.t -> DataSet.t) =
+fun acc t -> 
+  match t with 
+    | Data.Array(st,_) -> update_set (DataSet.add t acc) st
+    | Data.Extern _ -> DataSet.add t acc 
+    | Struct(_,fl)  -> List.fold_left (fun acc (_,t) -> update_set acc t) acc fl
+    | Alias(n,t) -> update_set acc t
+    | _ -> acc
+
+open Soc
+
+let (update_set_soc_var : DataSet.t -> Soc.var -> DataSet.t) =
+  fun acc (_,datat) -> 
+    update_set acc datat
+
+let (update_set_step:  DataSet.t -> Soc.step_method -> DataSet.t) =
+  fun acc sm -> 
+    match sm.impl with
+      | Gaol(vl,_) -> List.fold_left update_set_soc_var acc vl
+      | _ -> acc
+
+
 (* exported *)
-let (gen_used_types : LicPrg.t -> Data.t list) =
-  fun prg -> 
-    let tset =
-      LicPrg.fold_nodes
-        (fun _nk ne acc -> 
-          let acc = List.fold_left update_set acc ne.inlist_eff in
-          let acc = List.fold_left update_set acc ne.outlist_eff in
-          acc
-        )
-        prg
-        DataSet.empty
+let (gen_used_types : Soc.t list -> Data.t list) =
+  fun socs -> 
+    let rec aux acc soc =
+      let ins, outs = soc.profile in
+      let acc = List.fold_left update_set_soc_var acc ins in
+      let acc = List.fold_left update_set_soc_var acc outs in
+      let acc = List.fold_left update_set_step acc soc.step in
+      acc
     in
-    DataSet.elements tset
+    let acc = List.fold_left aux DataSet.empty socs in
+    DataSet.elements acc
+      
 
 (* exported *)
 let (f: Data.t -> string) =
diff --git a/src/soc2cGenAssign.mli b/src/soc2cGenAssign.mli
index db41bda0..cd02306d 100644
--- a/src/soc2cGenAssign.mli
+++ b/src/soc2cGenAssign.mli
@@ -1,10 +1,8 @@
- (* Time-stamp: <modified the 02/10/2014 (at 17:18) by Erwan Jahier> *)
+ (* Time-stamp: <modified the 08/10/2014 (at 18:35) by Erwan Jahier> *)
 
-(* Returns the list of non-trivial data types (i.e., arrays) that are
-   used in a program, with no duplicates *)
-
-
-val gen_used_types : LicPrg.t -> Data.t list
+(* Returns the list of non-trivial data types (i.e., arrays and
+   extern) that are used in a program, with no duplicates *)
+val gen_used_types : Soc.t list -> Data.t list
 
 (* Generates a ccp macro the provides a default definition copying Data.t *)
 val f: Data.t -> string
diff --git a/src/soc2cIdent.ml b/src/soc2cIdent.ml
index ea241fa5..2501daad 100644
--- a/src/soc2cIdent.ml
+++ b/src/soc2cIdent.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/10/2014 (at 17:33) by Erwan Jahier> *)
+(* Time-stamp: <modified the 07/10/2014 (at 16:35) by Erwan Jahier> *)
 open Soc
 
 let colcol = Str.regexp "::"
@@ -25,7 +25,7 @@ let rec (type_to_short_string : Data.t -> string) =
         | Data.Real-> "r"
         | Data.Extern s -> id2s s 
         | Data.Enum  (s, sl) -> "e" (* s *) 
-        | Data.Struct (sid,_) -> sid
+        | Data.Struct (sid,_) -> id2s sid
         | Data.Array (ty, sz) -> Printf.sprintf "%sp%d" (type_to_short_string ty) sz 
         | Data.Alias(n,_) -> n
         | Data.Alpha nb ->
diff --git a/src/soc2cPredef.ml b/src/soc2cPredef.ml
index a975025b..2d7ebe22 100644
--- a/src/soc2cPredef.ml
+++ b/src/soc2cPredef.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/10/2014 (at 11:11) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/10/2014 (at 10:59) by Erwan Jahier> *)
 
 (* A local exception used to check if a predef is supported. 
    The idea is that when gen_call_do is called  with empty lists,
@@ -11,19 +11,19 @@ exception Is_supported
 
 let stdbin op ll rl = 
 	match (ll,rl) with
-	| ([l], [r1;r2]) -> Printf.sprintf "%s = %s %s %s;" l r1 op r2
+	| ([l], [r1;r2]) -> Printf.sprintf "  %s = %s %s %s;\n" l r1 op r2
 	| ([],[]) -> raise Is_supported
 	| _ -> assert false
 
 let stduna op ll rl = 
 	match (ll,rl) with
-	| ([l], [r]) -> Printf.sprintf "%s = %s %s;" l op r
+	| ([l], [r]) -> Printf.sprintf "  %s = %s %s;\n" l op r
 	| ([],[]) -> raise Is_supported
 	| _ -> assert false
 
 let stdimpl ll rl = 
 	match (ll,rl) with
-	| ([l], [r1;r2]) -> Printf.sprintf "%s = !%s | %s;" l r1 r2
+	| ([l], [r1;r2]) -> Printf.sprintf   "%s = !%s | %s;\n" l r1 r2
 	| ([],[]) -> raise Is_supported
 	| _ -> assert false
 
diff --git a/src/socPredef.ml b/src/socPredef.ml
index 4a97d544..94e6b8b8 100644
--- a/src/socPredef.ml
+++ b/src/socPredef.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 29/08/2014 (at 16:32) by Erwan JAHIER> *)
+(* Time-stamp: <modified the 08/10/2014 (at 17:49) by Erwan Jahier> *)
 
 (** Synchronous Object Code for Predefined operators. *)
 
@@ -33,8 +33,10 @@ let (soc_profile_of_types : Data.t list -> var list * var list) =
 
 (* For diese and nor *)  
 let (soc_profile_of_types_nary : Data.t list -> var list * var list) = 
-  fun vl -> 
-    ["i0", Array(Bool,List.length vl)], ["o0",Bool]
+  fun vl ->
+    match vl with
+      | ta::Bool::[] ->  ["i0", ta], ["o0",Bool]
+      | _ -> assert false (* sno *)
         
 
 let step11 = { (* a useful alias again *)
diff --git a/src/socPredef2cHeap.ml b/src/socPredef2cHeap.ml
index 04828231..7fb512a3 100644
--- a/src/socPredef2cHeap.ml
+++ b/src/socPredef2cHeap.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/10/2014 (at 11:13) by Erwan Jahier> *)
+(* Time-stamp: <modified the 08/10/2014 (at 17:44) by Erwan Jahier> *)
 
 open Data
 open Soc
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 3824b058..18b1b259 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,5 +1,5 @@
 ==> lus2lic0.sum <==
-Test Run By jahier on Tue Oct  7 16:22:36 
+Test Run By jahier on Thu Oct  9 09:38:05 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic0 tests ===
@@ -63,7 +63,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 Oct  7 16:22:37 
+Test Run By jahier on Thu Oct  9 09:38:03 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic1 tests ===
@@ -84,7 +84,8 @@ PASS: ./lus2lic  {-2c EDGE.lus -n EDGE}
 PASS: gcc -o EDGE.exec EDGE_EDGE.c EDGE_EDGE_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c EDGE.lus  {}
 PASS: ./lus2lic  {-2c ELMU.lus -n ELMU}
-FAIL: Check that the generated C code compiles  : gcc -o ELMU.exec ELMU_ELMU.c ELMU_ELMU_loop.c 
+PASS: gcc -o ELMU.exec ELMU_ELMU.c ELMU_ELMU_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c ELMU.lus  {}
 PASS: ./lus2lic  {-2c FALLING_EDGE.lus -n FALLING_EDGE}
 PASS: gcc -o FALLING_EDGE.exec FALLING_EDGE_FALLING_EDGE.c FALLING_EDGE_FALLING_EDGE_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c FALLING_EDGE.lus  {}
@@ -92,9 +93,11 @@ PASS: ./lus2lic  {-2c FillFollowedByRed.lus -n FillFollowedByRed}
 PASS: gcc -o FillFollowedByRed.exec FillFollowedByRed_FillFollowedByRed.c FillFollowedByRed_FillFollowedByRed_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c FillFollowedByRed.lus  {}
 PASS: ./lus2lic  {-2c Gyroscope.lus -n Gyroscope}
-FAIL: Check that the generated C code compiles  : gcc -o Gyroscope.exec Gyroscope_Gyroscope.c Gyroscope_Gyroscope_loop.c 
+PASS: gcc -o Gyroscope.exec Gyroscope_Gyroscope.c Gyroscope_Gyroscope_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope.lus  {}
 PASS: ./lus2lic  {-2c Gyroscope2.lus -n Gyroscope2}
-FAIL: Check that the generated C code compiles  : gcc -o Gyroscope2.exec Gyroscope2_Gyroscope2.c Gyroscope2_Gyroscope2_loop.c 
+PASS: gcc -o Gyroscope2.exec Gyroscope2_Gyroscope2.c Gyroscope2_Gyroscope2_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope2.lus  {}
 PASS: ./lus2lic  {-2c Int.lus -n Int}
 PASS: ./lus2lic  {-2c aa.lus -n aa}
 PASS: gcc -o aa.exec aa_aa.c aa_aa_loop.c 
@@ -122,9 +125,11 @@ PASS: ./lus2lic  {-2c argos.lus -n argos}
 PASS: gcc -o argos.exec argos_argos.c argos_argos_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c argos.lus  {}
 PASS: ./lus2lic  {-2c array_concat.lus -n array_concat}
-FAIL: Check that the generated C code compiles  : gcc -o array_concat.exec array_concat_array_concat.c array_concat_array_concat_loop.c 
+PASS: gcc -o array_concat.exec array_concat_array_concat.c array_concat_array_concat_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c array_concat.lus  {}
 PASS: ./lus2lic  {-2c array_concat2.lus -n array_concat2}
-FAIL: Check that the generated C code compiles  : gcc -o array_concat2.exec array_concat2_array_concat2.c array_concat2_array_concat2_loop.c 
+PASS: gcc -o array_concat2.exec array_concat2_array_concat2.c array_concat2_array_concat2_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c array_concat2.lus  {}
 PASS: ./lus2lic  {-2c arrays.lus -n arrays}
 PASS: gcc -o arrays.exec arrays_arrays.c arrays_arrays_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c arrays.lus  {}
@@ -145,9 +150,11 @@ PASS: ./lus2lic  {-2c bred_lv4.lus -n bred_lv4}
 PASS: gcc -o bred_lv4.exec bred_lv4_bred_lv4.c bred_lv4_bred_lv4_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c bred_lv4.lus  {}
 PASS: ./lus2lic  {-2c bug.lus -n bug}
-FAIL: Check that the generated C code compiles  : gcc -o bug.exec bug_bug.c bug_bug_loop.c 
+PASS: gcc -o bug.exec bug_bug.c bug_bug_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c bug.lus  {}
 PASS: ./lus2lic  {-2c bug2.lus -n bug2}
-FAIL: Check that the generated C code compiles  : gcc -o bug2.exec bug2_bug2.c bug2_bug2_loop.c 
+PASS: gcc -o bug2.exec bug2_bug2.c bug2_bug2_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c bug2.lus  {}
 PASS: ./lus2lic  {-2c calculs_max.lus -n calculs_max}
 PASS: gcc -o calculs_max.exec calculs_max_calculs_max.c calculs_max_calculs_max_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c calculs_max.lus  {}
@@ -163,7 +170,8 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c call04.lus  {}
 PASS: ./lus2lic  {-2c call05.lus -n call05}
 PASS: ./lus2lic  {-2c call06.lus -n call06}
 PASS: ./lus2lic  {-2c call07.lus -n call07}
-FAIL: Check that the generated C code compiles  : gcc -o call07.exec call07_call07.c call07_call07_loop.c 
+PASS: gcc -o call07.exec call07_call07.c call07_call07_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c call07.lus  {}
 PASS: ./lus2lic  {-2c carV2.lus -n carV2}
 PASS: gcc -o carV2.exec carV2_carV2.c carV2_carV2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c carV2.lus  {}
@@ -243,7 +251,8 @@ PASS: ./lus2lic  {-2c ex.lus -n ex}
 PASS: gcc -o ex.exec ex_ex.c ex_ex_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c ex.lus  {}
 PASS: ./lus2lic  {-2c exclusion.lus -n exclusion}
-FAIL: Check that the generated C code compiles  : gcc -o exclusion.exec exclusion_exclusion.c exclusion_exclusion_loop.c 
+PASS: gcc -o exclusion.exec exclusion_exclusion.c exclusion_exclusion_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c exclusion.lus  {}
 PASS: ./lus2lic  {-2c filliter.lus -n filliter}
 PASS: gcc -o filliter.exec filliter_filliter.c filliter_filliter_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c filliter.lus  {}
@@ -259,7 +268,8 @@ PASS: gcc -o fresh_name.exec fresh_name_fresh_name.c fresh_name_fresh_name_loop.
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c fresh_name.lus  {}
 PASS: ./lus2lic  {-2c func_with_body.lus -n func_with_body}
 PASS: ./lus2lic  {-2c hanane.lus -n hanane}
-FAIL: Check that the generated C code compiles  : gcc -o hanane.exec hanane_hanane.c hanane_hanane_loop.c 
+PASS: gcc -o hanane.exec hanane_hanane.c hanane_hanane_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c hanane.lus  {}
 PASS: ./lus2lic  {-2c heater_control.lus -n heater_control}
 PASS: gcc -o heater_control.exec heater_control_heater_control.c heater_control_heater_control_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c heater_control.lus  {}
@@ -387,7 +397,7 @@ PASS: gcc -o multipar.exec multipar_multipar.c multipar_multipar_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus  {}
 
 ==> lus2lic2.sum <==
-Test Run By jahier on Tue Oct  7 16:22:57 
+Test Run By jahier on Thu Oct  9 09:38:09 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic2 tests ===
@@ -478,16 +488,20 @@ PASS: ./lus2lic  {-2c noeudsIndependants.lus -n noeudsIndependants}
 PASS: gcc -o noeudsIndependants.exec noeudsIndependants_noeudsIndependants.c noeudsIndependants_noeudsIndependants_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c noeudsIndependants.lus  {}
 PASS: ./lus2lic  {-2c normal.lus -n normal}
-FAIL: Check that the generated C code compiles  : gcc -o normal.exec normal_normal.c normal_normal_loop.c 
+PASS: gcc -o normal.exec normal_normal.c normal_normal_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c normal.lus  {}
 PASS: ./lus2lic  {-2c notTwo.lus -n notTwo}
 PASS: gcc -o notTwo.exec notTwo_notTwo.c notTwo_notTwo_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c notTwo.lus  {}
 PASS: ./lus2lic  {-2c o2l_feux_compl.lus -n o2l_feux_compl}
-FAIL: Check that the generated C code compiles  : gcc -o o2l_feux_compl.exec o2l_feux_compl_o2l_feux_compl.c o2l_feux_compl_o2l_feux_compl_loop.c 
+PASS: gcc -o o2l_feux_compl.exec o2l_feux_compl_o2l_feux_compl.c o2l_feux_compl_o2l_feux_compl_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c o2l_feux_compl.lus  {}
 PASS: ./lus2lic  {-2c onlyroll.lus -n onlyroll}
-FAIL: Check that the generated C code compiles  : gcc -o onlyroll.exec onlyroll_onlyroll.c onlyroll_onlyroll_loop.c 
+PASS: gcc -o onlyroll.exec onlyroll_onlyroll.c onlyroll_onlyroll_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c onlyroll.lus  {}
 PASS: ./lus2lic  {-2c onlyroll2.lus -n onlyroll2}
-FAIL: Check that the generated C code compiles  : gcc -o onlyroll2.exec onlyroll2_onlyroll2.c onlyroll2_onlyroll2_loop.c 
+PASS: gcc -o onlyroll2.exec onlyroll2_onlyroll2.c onlyroll2_onlyroll2_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c onlyroll2.lus  {}
 PASS: ./lus2lic  {-2c over2.lus -n over2}
 PASS: gcc -o over2.exec over2_over2.c over2_over2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c over2.lus  {}
@@ -515,7 +529,8 @@ PASS: ./lus2lic  {-2c param_node4.lus -n param_node4}
 PASS: gcc -o param_node4.exec param_node4_param_node4.c param_node4_param_node4_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c param_node4.lus  {}
 PASS: ./lus2lic  {-2c param_struct.lus -n param_struct}
-FAIL: Check that the generated C code compiles  : gcc -o param_struct.exec param_struct_param_struct.c param_struct_param_struct_loop.c 
+PASS: gcc -o param_struct.exec param_struct_param_struct.c param_struct_param_struct_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c param_struct.lus  {}
 PASS: ./lus2lic  {-2c pilote-1.0.lus -n pilote-1.0}
 PASS: ./lus2lic  {-2c pipeline.lus -n pipeline}
 PASS: gcc -o pipeline.exec pipeline_pipeline.c pipeline_pipeline_loop.c 
@@ -552,7 +567,8 @@ PASS: ./lus2lic  {-2c predefOp.lus -n predefOp}
 PASS: gcc -o predefOp.exec predefOp_predefOp.c predefOp_predefOp_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c predefOp.lus  {}
 PASS: ./lus2lic  {-2c produitBool.lus -n produitBool}
-FAIL: Check that the generated C code compiles  : gcc -o produitBool.exec produitBool_produitBool.c produitBool_produitBool_loop.c 
+PASS: gcc -o produitBool.exec produitBool_produitBool.c produitBool_produitBool_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c produitBool.lus  {}
 PASS: ./lus2lic  {-2c redIf.lus -n redIf}
 PASS: gcc -o redIf.exec redIf_redIf.c redIf_redIf_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c redIf.lus  {}
@@ -627,7 +643,8 @@ PASS: ./lus2lic  {-2c test_const.lus -n test_const}
 PASS: gcc -o test_const.exec test_const_test_const.c test_const_test_const_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_const.lus  {}
 PASS: ./lus2lic  {-2c test_diese.lus -n test_diese}
-FAIL: Check that the generated C code compiles  : gcc -o test_diese.exec test_diese_test_diese.c test_diese_test_diese_loop.c 
+PASS: gcc -o test_diese.exec test_diese_test_diese.c test_diese_test_diese_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_diese.lus  {}
 PASS: ./lus2lic  {-2c test_enum.lus -n test_enum}
 PASS: gcc -o test_enum.exec test_enum_test_enum.c test_enum_test_enum_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c test_enum.lus  {}
@@ -657,7 +674,8 @@ PASS: ./lus2lic  {-2c toolate.lus -n toolate}
 PASS: gcc -o toolate.exec toolate_toolate.c toolate_toolate_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c toolate.lus  {}
 PASS: ./lus2lic  {-2c toto.lus -n toto}
-FAIL: Check that the generated C code compiles  : gcc -o toto.exec toto_toto.c toto_toto_loop.c 
+PASS: gcc -o toto.exec toto_toto.c toto_toto_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c toto.lus  {}
 PASS: ./lus2lic  {-2c tri.lus -n tri}
 PASS: gcc -o tri.exec tri_tri.c tri_tri_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c tri.lus  {}
@@ -671,7 +689,8 @@ PASS: ./lus2lic  {-2c trivial2.lus -n trivial2}
 PASS: gcc -o trivial2.exec trivial2_trivial2.c trivial2_trivial2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c trivial2.lus  {}
 PASS: ./lus2lic  {-2c trivial_array.lus -n trivial_array}
-FAIL: Check that the generated C code compiles  : gcc -o trivial_array.exec trivial_array_trivial_array.c trivial_array_trivial_array_loop.c 
+PASS: gcc -o trivial_array.exec trivial_array_trivial_array.c trivial_array_trivial_array_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c trivial_array.lus  {}
 PASS: ./lus2lic  {-2c ts01.lus -n ts01}
 PASS: gcc -o ts01.exec ts01_ts01.c ts01_ts01_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c ts01.lus  {}
@@ -708,7 +727,7 @@ PASS: gcc -o zzz2.exec zzz2_zzz2.c zzz2_zzz2_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus  {}
 
 ==> lus2lic3.sum <==
-Test Run By jahier on Tue Oct  7 16:23:54 
+Test Run By jahier on Thu Oct  9 09:38:07 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic3 tests ===
@@ -1204,7 +1223,7 @@ PASS: ./myec2c {-o multipar.c multipar.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {}
 
 ==> lus2lic4.sum <==
-Test Run By jahier on Tue Oct  7 16:24:11 
+Test Run By jahier on Thu Oct  9 09:38:11 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic4 tests ===
@@ -1675,15 +1694,15 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 
 		=== lus2lic1 Summary ===
 
-# of expected passes		299
-# of unexpected failures	13
+# of expected passes		319
+# of unexpected failures	3
 
 ==> lus2lic2.sum <==
 
 		=== lus2lic2 Summary ===
 
-# of expected passes		298
-# of unexpected failures	11
+# of expected passes		316
+# of unexpected failures	2
 
 ==> lus2lic3.sum <==
 
@@ -1699,13 +1718,15 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 # of expected passes		447
 # of unexpected failures	3
 ===============================
-# Total number of failures: 47
+# Total number of failures: 28
 lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 20 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 56 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 17 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 66 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 23 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 63 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 18 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 67 seconds
 * Ref time: 
-0.05user 0.09system 2:40.91elapsed 0%CPU (0avgtext+0avgdata 3000maxresident)k
-120inputs+0outputs (0major+14858minor)pagefaults 0swaps
+0.06user 0.07system 2:45.60elapsed 0%CPU (0avgtext+0avgdata 3000maxresident)k
+120inputs+0outputs (0major+14863minor)pagefaults 0swaps
 * Quick time (-j 4):
+0.04user 0.09system 1:15.78elapsed 0%CPU (0avgtext+0avgdata 3008maxresident)k
+120inputs+0outputs (0major+14883minor)pagefaults 0swaps
diff --git a/test/lus2lic.time b/test/lus2lic.time
index 2e484539..abf43558 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -1,9 +1,11 @@
 lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 20 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 56 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 17 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 66 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 23 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 63 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 18 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 67 seconds
 * Ref time: 
-0.05user 0.09system 2:40.91elapsed 0%CPU (0avgtext+0avgdata 3000maxresident)k
-120inputs+0outputs (0major+14858minor)pagefaults 0swaps
+0.06user 0.07system 2:45.60elapsed 0%CPU (0avgtext+0avgdata 3000maxresident)k
+120inputs+0outputs (0major+14863minor)pagefaults 0swaps
 * Quick time (-j 4):
+0.04user 0.09system 1:15.78elapsed 0%CPU (0avgtext+0avgdata 3008maxresident)k
+120inputs+0outputs (0major+14883minor)pagefaults 0swaps
-- 
GitLab