From ab082bb297f9417ee4fd596256b2ca89e5a02985 Mon Sep 17 00:00:00 2001
From: Erwan Jahier <jahier@imag.fr>
Date: Fri, 11 Jul 2014 16:27:33 +0200
Subject: [PATCH] non-reg tests: compare lus2lic -exec and -2c.

30 tests fail, but 169 pass!!!

# of expected passes 		1339 -> 1508
# of unexpected failures	100 -> 130
---
 src/lv6MainArgs.ml              |  11 +-
 src/lv6MainArgs.mli             |   1 +
 src/soc2c.ml                    |  51 +++++---
 test/lus2lic.sum                | 199 +++++++++++++++++++++++++++++++-
 test/lus2lic.tests/non-reg.exp  |  18 +--
 test/should_work/test_arrow.lus |   5 +
 test/site.exp                   |  12 +-
 todo.org                        |  81 +++++--------
 utils/compare_exec_and_2c       |  60 ++++++++++
 9 files changed, 363 insertions(+), 75 deletions(-)
 create mode 100644 test/should_work/test_arrow.lus
 create mode 100755 utils/compare_exec_and_2c

diff --git a/src/lv6MainArgs.ml b/src/lv6MainArgs.ml
index 6da27780..20b14c6b 100644
--- a/src/lv6MainArgs.ml
+++ b/src/lv6MainArgs.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 17/04/2014 (at 15:03) by Erwan Jahier> *)
+(* Time-stamp: <modified the 10/07/2014 (at 14:58) by Erwan Jahier> *)
 (*
 Le manager d'argument adapté de celui de lutin, plus joli
 N.B. solution un peu batarde : les options sont stockées, comme avant, dans Global,
@@ -35,7 +35,9 @@ type t = {
   mutable gen_c :  bool;
   mutable rif  :  bool;
   mutable gen_ocaml :  bool;
+  mutable launch_cc :  bool;
   mutable precision : int option;
+  
 }
 
 (* Those are really too boring to be functionnal (used in all over the places) *)
@@ -89,6 +91,8 @@ let (make_opt : unit -> t) =
       rif  =  false;
       gen_ocaml =  false;
       precision = None;
+      launch_cc = false;
+
     }
 
 
@@ -345,6 +349,11 @@ let mkoptab (opt:t) : unit = (
       (Arg.Int (fun i -> opt.precision <- Some i))
       ["Number of digits after ther dot used to print floats"]
     ;
+    mkopt opt ~hide:true
+      ["-cc"]
+      (Arg.Unit (fun i -> opt.launch_cc <- true))
+      ["Try to compile the generated C files (requires -2c)"]
+    ;
     mkopt opt ~hide:true
       ["--nonreg-test"]
       (Arg.Unit (fun () -> global_opt.nonreg_test <- true))
diff --git a/src/lv6MainArgs.mli b/src/lv6MainArgs.mli
index b7dbee86..7c332918 100644
--- a/src/lv6MainArgs.mli
+++ b/src/lv6MainArgs.mli
@@ -31,6 +31,7 @@ type t = {
   mutable gen_c :  bool;
   mutable rif :  bool;
   mutable gen_ocaml :  bool;
+  mutable launch_cc :  bool;
   mutable precision : int option;
 }
 
diff --git a/src/soc2c.ml b/src/soc2c.ml
index fd3a30fe..b17410c9 100644
--- a/src/soc2c.ml
+++ b/src/soc2c.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 09/07/2014 (at 12:54) by Erwan Jahier> *)
+(* Time-stamp: <modified the 11/07/2014 (at 11:44) by Erwan Jahier> *)
 
 
 (* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *)
@@ -392,6 +392,11 @@ let (gen_loop_file : Soc.t -> out_channel -> Soc.tbl -> unit) =
     let step = Soc2cUtil.step_name soc.key "step" in
     let (n,_,_) = soc.key in
     let n = id2s n in
+    let inputs,outputs = soc.profile in
+    let inputs_io = SocVar.expand_profile true false inputs in
+    let outputs_io = SocVar.expand_profile true false  outputs in
+    let inputs = SocVar.expand_profile true true inputs in
+    let outputs = SocVar.expand_profile true true  outputs in
     Lv6util.entete oc "/*" "*/";
     putc  ("
 #include <stdlib.h>
@@ -441,7 +446,7 @@ _integer _get_int(char* n){
    do {
       if(ISATTY) {
          if(s != 1) printf(\"\a\");
-         printf(\"%s (integer) ? \", n);
+         //printf(\"%s (integer) ? \", n);
       }
       if(scanf(\"%s\", b)==EOF) exit(0);
       if (*b == 'q') exit(0);
@@ -457,7 +462,7 @@ _real _get_real(char* n){
    do {
       if(ISATTY) {
          if(s != 1) printf(\"\a\");
-         printf(\"%s (real) ? \", n);
+         //printf(\"%s (real) ? \", n);
       }
       if(scanf(\"%s\", b)==EOF) exit(0);
       if (*b == 'q') exit(0);
@@ -503,7 +508,18 @@ int main(){
    /* Context allocation */
    "^ctx^"_type* ctx = "^(if is_memory_less soc then (
      "&"^ ctx^ ";"
-   ) else (ctx^"_new_ctx(NULL);"))^"
+   ) else (ctx^"_new_ctx(NULL);")));
+
+    let to_rif_decl (n,t) = ("\\\""^n^"\\\":" ^(type_to_string t)) in
+    let inputs_t  = List.map to_rif_decl inputs_io in
+    let outputs_t = List.map to_rif_decl outputs_io in
+    let inputs_decl = Printf.sprintf "#inputs %s" (String.concat " " inputs_t) in
+    let outputs_decl = Printf.sprintf "#outputs %s" (String.concat " " outputs_t) in
+    
+    putc  ("
+    printf(\""^inputs_decl^"\\n\");
+    printf(\""^outputs_decl^"\\n\");
+
    /* Main loop */
    ISATTY = isatty(0);
    while(1){
@@ -512,9 +528,6 @@ int main(){
       fflush(stdout);
       ++s;
 ");
-    let inputs,outputs = soc.profile in
-    let inputs = SocVar.expand_profile true true inputs in
-    let outputs = SocVar.expand_profile true true  outputs in
     List.iter (fun (id,t) -> 
       let t = type_to_string2 t in
       let str = Printf.sprintf "      ctx->%s = _get_%s(\"%s\");\n" id t id in
@@ -524,10 +537,14 @@ int main(){
     let inputs_fmt  = List.map (fun (_,t) -> type_to_format_string t) inputs in
     let outputs_fmt = List.map (fun (_,t) -> type_to_format_string t) outputs in
     putc ("      " ^ step^"(ctx);
-      printf(\"" ^ (String.concat " " inputs_fmt)^ " #outs " ^ 
+      // printf(\"" ^ (String.concat " " inputs_fmt)^ " #outs " ^ 
              (String.concat " " outputs_fmt)^ "\\n\"," ^
              (String.concat "," (List.map (fun (id,_) -> "ctx->"^id ) (inputs@outputs)))^ 
             ");
+      printf(\"" ^ 
+             (String.concat " " outputs_fmt)^ "\\n\"," ^
+             (String.concat "," (List.map (fun (id,_) -> "ctx->"^id ) (outputs)))^ 
+            ");
    }
    return 1;
    
@@ -606,9 +623,17 @@ typedef float _float;
     Printf.printf "%s has been generated.\n" hfile; 
     Printf.printf "%s has been generated.\n" cfile;
 
-    if needs_cfile then 
-      Printf.printf "you can compile those files doing, e.g.,\n  gcc %s %s %s\n"  
-        cfile ext_cfile loopfile
-    else 
-      Printf.printf "you can compile those files doing, e.g.,\n  gcc %s %s\n"  cfile loopfile;
+    let gcc =
+      if needs_cfile then 
+        Printf.sprintf " gcc %s %s %s" cfile ext_cfile loopfile 
+      else 
+        Printf.sprintf "gcc %s %s"  cfile loopfile 
+    in
+    if args.Lv6MainArgs.launch_cc then (
+      if (Sys.command gcc)=0 then 
+        print_string ("sys call: '"^gcc^"' executed with success\n")
+      else
+        print_string ("sys call: '"^gcc^"' failed\n")
+    ) else
+      print_string ("you can compile those files doing, e.g.,\n  "^gcc^"\n");
     flush stdout
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 868fc9bc..ff24668f 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jul 11 14:08:40 2014
+Test Run By jahier on Fri Jul 11 16:15:55 2014
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -15,36 +15,42 @@ PASS: ./myec2c {-o /tmp/nc6.c /tmp/nc6.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc6.lus
 PASS: ./lus2lic {-2c should_work/nc6.lus -n nc6}
 PASS: gcc nc6_nc6.c nc6_nc6_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc6.lus
 PASS: ./lus2lic {-o /tmp/argos.lic should_work/argos.lus}
 PASS: ./lus2lic {-ec -o /tmp/argos.ec should_work/argos.lus}
 PASS: ./myec2c {-o /tmp/argos.c /tmp/argos.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/argos.lus
 PASS: ./lus2lic {-2c should_work/argos.lus -n argos}
 PASS: gcc argos_argos.c argos_argos_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/argos.lus
 PASS: ./lus2lic {-o /tmp/ck5.lic should_work/ck5.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck5.ec should_work/ck5.lus}
 PASS: ./myec2c {-o /tmp/ck5.c /tmp/ck5.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ck5.lus
 PASS: ./lus2lic {-2c should_work/ck5.lus -n ck5}
 PASS: gcc ck5_ck5.c ck5_ck5_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck5.lus
 PASS: ./lus2lic {-o /tmp/normal.lic should_work/normal.lus}
 PASS: ./lus2lic {-ec -o /tmp/normal.ec should_work/normal.lus}
 PASS: ./myec2c {-o /tmp/normal.c /tmp/normal.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/normal.lus
 PASS: ./lus2lic {-2c should_work/normal.lus -n normal}
 PASS: gcc normal_normal.c normal_normal_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/normal.lus
 PASS: ./lus2lic {-o /tmp/nodeparam.lic should_work/nodeparam.lus}
 PASS: ./lus2lic {-ec -o /tmp/nodeparam.ec should_work/nodeparam.lus}
 PASS: ./myec2c {-o /tmp/nodeparam.c /tmp/nodeparam.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nodeparam.lus
 PASS: ./lus2lic {-2c should_work/nodeparam.lus -n nodeparam}
 PASS: gcc nodeparam_nodeparam.c nodeparam_nodeparam_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nodeparam.lus
 PASS: ./lus2lic {-o /tmp/enum0.lic should_work/enum0.lus}
 PASS: ./lus2lic {-ec -o /tmp/enum0.ec should_work/enum0.lus}
 PASS: ./myec2c {-o /tmp/enum0.c /tmp/enum0.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/enum0.lus
 PASS: ./lus2lic {-2c should_work/enum0.lus -n enum0}
 PASS: gcc enum0_enum0.c enum0_enum0_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/enum0.lus
 PASS: ./lus2lic {-o /tmp/ck6.lic should_work/ck6.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck6.ec should_work/ck6.lus}
 PASS: ./myec2c {-o /tmp/ck6.c /tmp/ck6.ec}
@@ -57,36 +63,42 @@ PASS: ./myec2c {-o /tmp/Gyroscope2.c /tmp/Gyroscope2.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Gyroscope2.lus
 PASS: ./lus2lic {-2c should_work/Gyroscope2.lus -n Gyroscope2}
 PASS: gcc Gyroscope2_Gyroscope2.c Gyroscope2_Gyroscope2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/Gyroscope2.lus
 PASS: ./lus2lic {-o /tmp/mouse2.lic should_work/mouse2.lus}
 PASS: ./lus2lic {-ec -o /tmp/mouse2.ec should_work/mouse2.lus}
 PASS: ./myec2c {-o /tmp/mouse2.c /tmp/mouse2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mouse2.lus
 PASS: ./lus2lic {-2c should_work/mouse2.lus -n mouse2}
 PASS: gcc mouse2_mouse2.c mouse2_mouse2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mouse2.lus
 PASS: ./lus2lic {-o /tmp/dep.lic should_work/dep.lus}
 PASS: ./lus2lic {-ec -o /tmp/dep.ec should_work/dep.lus}
 PASS: ./myec2c {-o /tmp/dep.c /tmp/dep.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/dep.lus
 PASS: ./lus2lic {-2c should_work/dep.lus -n dep}
 PASS: gcc dep_dep.c dep_dep_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/dep.lus
 PASS: ./lus2lic {-o /tmp/ELMU.lic should_work/ELMU.lus}
 PASS: ./lus2lic {-ec -o /tmp/ELMU.ec should_work/ELMU.lus}
 PASS: ./myec2c {-o /tmp/ELMU.c /tmp/ELMU.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ELMU.lus
 PASS: ./lus2lic {-2c should_work/ELMU.lus -n ELMU}
 PASS: gcc ELMU_ELMU.c ELMU_ELMU_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ELMU.lus
 PASS: ./lus2lic {-o /tmp/testPilote.lic should_work/testPilote.lus}
 PASS: ./lus2lic {-ec -o /tmp/testPilote.ec should_work/testPilote.lus}
 PASS: ./myec2c {-o /tmp/testPilote.c /tmp/testPilote.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testPilote.lus
 PASS: ./lus2lic {-2c should_work/testPilote.lus -n testPilote}
 PASS: gcc testPilote_testPilote.c testPilote_testPilote_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/testPilote.lus
 PASS: ./lus2lic {-o /tmp/redIf.lic should_work/redIf.lus}
 PASS: ./lus2lic {-ec -o /tmp/redIf.ec should_work/redIf.lus}
 PASS: ./myec2c {-o /tmp/redIf.c /tmp/redIf.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/redIf.lus
 PASS: ./lus2lic {-2c should_work/redIf.lus -n redIf}
 PASS: gcc redIf_redIf.c redIf_redIf_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/redIf.lus
 PASS: ./lus2lic {-o /tmp/t0.lic should_work/t0.lus}
 PASS: ./lus2lic {-ec -o /tmp/t0.ec should_work/t0.lus}
 PASS: ./myec2c {-o /tmp/t0.c /tmp/t0.ec}
@@ -99,54 +111,63 @@ PASS: ./myec2c {-o /tmp/lucky.c /tmp/lucky.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/lucky.lus
 PASS: ./lus2lic {-2c should_work/lucky.lus -n lucky}
 PASS: gcc lucky_lucky.c lucky_lucky_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/lucky.lus
 PASS: ./lus2lic {-o /tmp/heater_control.lic should_work/heater_control.lus}
 PASS: ./lus2lic {-ec -o /tmp/heater_control.ec should_work/heater_control.lus}
 PASS: ./myec2c {-o /tmp/heater_control.c /tmp/heater_control.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/heater_control.lus
 PASS: ./lus2lic {-2c should_work/heater_control.lus -n heater_control}
 PASS: gcc heater_control_heater_control.c heater_control_heater_control_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/heater_control.lus
 PASS: ./lus2lic {-o /tmp/titi.lic should_work/titi.lus}
 PASS: ./lus2lic {-ec -o /tmp/titi.ec should_work/titi.lus}
 PASS: ./myec2c {-o /tmp/titi.c /tmp/titi.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/titi.lus
 PASS: ./lus2lic {-2c should_work/titi.lus -n titi}
 PASS: gcc titi_titi.c titi_titi_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/titi.lus
 PASS: ./lus2lic {-o /tmp/cminus.lic should_work/cminus.lus}
 PASS: ./lus2lic {-ec -o /tmp/cminus.ec should_work/cminus.lus}
 PASS: ./myec2c {-o /tmp/cminus.c /tmp/cminus.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/cminus.lus
 PASS: ./lus2lic {-2c should_work/cminus.lus -n cminus}
 PASS: gcc cminus_cminus.c cminus_cminus_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/cminus.lus
 PASS: ./lus2lic {-o /tmp/rs.lic should_work/rs.lus}
 PASS: ./lus2lic {-ec -o /tmp/rs.ec should_work/rs.lus}
 PASS: ./myec2c {-o /tmp/rs.c /tmp/rs.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/rs.lus
 PASS: ./lus2lic {-2c should_work/rs.lus -n rs}
 PASS: gcc rs_rs.c rs_rs_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/rs.lus
 PASS: ./lus2lic {-o /tmp/access.lic should_work/access.lus}
 PASS: ./lus2lic {-ec -o /tmp/access.ec should_work/access.lus}
 PASS: ./myec2c {-o /tmp/access.c /tmp/access.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/access.lus
 PASS: ./lus2lic {-2c should_work/access.lus -n access}
 PASS: gcc access_access.c access_access_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/access.lus
 PASS: ./lus2lic {-o /tmp/consensus2.lic should_work/consensus2.lus}
 PASS: ./lus2lic {-ec -o /tmp/consensus2.ec should_work/consensus2.lus}
 PASS: ./myec2c {-o /tmp/consensus2.c /tmp/consensus2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/consensus2.lus
 PASS: ./lus2lic {-2c should_work/consensus2.lus -n consensus2}
 PASS: gcc consensus2_consensus2.c consensus2_consensus2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/consensus2.lus
 PASS: ./lus2lic {-o /tmp/dependeur.lic should_work/dependeur.lus}
 PASS: ./lus2lic {-ec -o /tmp/dependeur.ec should_work/dependeur.lus}
 PASS: ./myec2c {-o /tmp/dependeur.c /tmp/dependeur.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/dependeur.lus
 PASS: ./lus2lic {-2c should_work/dependeur.lus -n dependeur}
 PASS: gcc dependeur_dependeur.c dependeur_dependeur_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/dependeur.lus
 PASS: ./lus2lic {-o /tmp/mappredef.lic should_work/mappredef.lus}
 PASS: ./lus2lic {-ec -o /tmp/mappredef.ec should_work/mappredef.lus}
 PASS: ./myec2c {-o /tmp/mappredef.c /tmp/mappredef.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mappredef.lus
 PASS: ./lus2lic {-2c should_work/mappredef.lus -n mappredef}
 PASS: gcc mappredef_mappredef.c mappredef_mappredef_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mappredef.lus
 PASS: ./lus2lic {-o /tmp/call06.lic should_work/call06.lus}
 PASS: ./lus2lic {-ec -o /tmp/call06.ec should_work/call06.lus}
 PASS: ./myec2c {-o /tmp/call06.c /tmp/call06.ec}
@@ -159,60 +180,70 @@ PASS: ./myec2c {-o /tmp/deSimone.c /tmp/deSimone.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/deSimone.lus
 PASS: ./lus2lic {-2c should_work/deSimone.lus -n deSimone}
 PASS: gcc deSimone_deSimone.c deSimone_deSimone_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/deSimone.lus
 PASS: ./lus2lic {-o /tmp/bug2.lic should_work/bug2.lus}
 PASS: ./lus2lic {-ec -o /tmp/bug2.ec should_work/bug2.lus}
 PASS: ./myec2c {-o /tmp/bug2.c /tmp/bug2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bug2.lus
 PASS: ./lus2lic {-2c should_work/bug2.lus -n bug2}
 PASS: gcc bug2_bug2.c bug2_bug2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bug2.lus
 PASS: ./lus2lic {-o /tmp/mm.lic should_work/mm.lus}
 PASS: ./lus2lic {-ec -o /tmp/mm.ec should_work/mm.lus}
 PASS: ./myec2c {-o /tmp/mm.c /tmp/mm.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mm.lus
 PASS: ./lus2lic {-2c should_work/mm.lus -n mm}
 PASS: gcc mm_mm.c mm_mm_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mm.lus
 PASS: ./lus2lic {-o /tmp/yyy.lic should_work/yyy.lus}
 PASS: ./lus2lic {-ec -o /tmp/yyy.ec should_work/yyy.lus}
 PASS: ./myec2c {-o /tmp/yyy.c /tmp/yyy.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/yyy.lus
 PASS: ./lus2lic {-2c should_work/yyy.lus -n yyy}
 PASS: gcc yyy_yyy.c yyy_yyy_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/yyy.lus
 PASS: ./lus2lic {-o /tmp/toolate.lic should_work/toolate.lus}
 PASS: ./lus2lic {-ec -o /tmp/toolate.ec should_work/toolate.lus}
 PASS: ./myec2c {-o /tmp/toolate.c /tmp/toolate.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/toolate.lus
 PASS: ./lus2lic {-2c should_work/toolate.lus -n toolate}
 PASS: gcc toolate_toolate.c toolate_toolate_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/toolate.lus
 PASS: ./lus2lic {-o /tmp/testCapt.lic should_work/testCapt.lus}
 PASS: ./lus2lic {-ec -o /tmp/testCapt.ec should_work/testCapt.lus}
 PASS: ./myec2c {-o /tmp/testCapt.c /tmp/testCapt.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testCapt.lus
 PASS: ./lus2lic {-2c should_work/testCapt.lus -n testCapt}
 PASS: gcc testCapt_testCapt.c testCapt_testCapt_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/testCapt.lus
 PASS: ./lus2lic {-o /tmp/nc7.lic should_work/nc7.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc7.ec should_work/nc7.lus}
 PASS: ./myec2c {-o /tmp/nc7.c /tmp/nc7.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc7.lus
 PASS: ./lus2lic {-2c should_work/nc7.lus -n nc7}
 PASS: gcc nc7_nc7.c nc7_nc7_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc7.lus
 PASS: ./lus2lic {-o /tmp/predefOp.lic should_work/predefOp.lus}
 PASS: ./lus2lic {-ec -o /tmp/predefOp.ec should_work/predefOp.lus}
 PASS: ./myec2c {-o /tmp/predefOp.c /tmp/predefOp.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/predefOp.lus
 PASS: ./lus2lic {-2c should_work/predefOp.lus -n predefOp}
 PASS: gcc predefOp_predefOp.c predefOp_predefOp_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/predefOp.lus
 PASS: ./lus2lic {-o /tmp/t1.lic should_work/t1.lus}
 PASS: ./lus2lic {-ec -o /tmp/t1.ec should_work/t1.lus}
 PASS: ./myec2c {-o /tmp/t1.c /tmp/t1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/t1.lus
 PASS: ./lus2lic {-2c should_work/t1.lus -n t1}
 PASS: gcc t1_t1.c t1_t1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/t1.lus
 PASS: ./lus2lic {-o /tmp/nc9.lic should_work/nc9.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc9.ec should_work/nc9.lus}
 PASS: ./myec2c {-o /tmp/nc9.c /tmp/nc9.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc9.lus
 PASS: ./lus2lic {-2c should_work/nc9.lus -n nc9}
 PASS: gcc nc9_nc9.c nc9_nc9_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc9.lus
 PASS: ./lus2lic {-o /tmp/packageTableau.lic should_work/packageTableau.lus}
 PASS: ./lus2lic {-ec -o /tmp/packageTableau.ec should_work/packageTableau.lus}
 PASS: ./myec2c {-o /tmp/packageTableau.c /tmp/packageTableau.ec}
@@ -224,12 +255,14 @@ PASS: ./myec2c {-o /tmp/test_poly.c /tmp/test_poly.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_poly.lus
 PASS: ./lus2lic {-2c should_work/test_poly.lus -n test_poly}
 PASS: gcc test_poly_test_poly.c test_poly_test_poly_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_poly.lus
 PASS: ./lus2lic {-o /tmp/nc8.lic should_work/nc8.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc8.ec should_work/nc8.lus}
 PASS: ./myec2c {-o /tmp/nc8.c /tmp/nc8.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc8.lus
 PASS: ./lus2lic {-2c should_work/nc8.lus -n nc8}
 PASS: gcc nc8_nc8.c nc8_nc8_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc8.lus
 PASS: ./lus2lic {-o /tmp/minmax5.lic should_work/minmax5.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax5.ec should_work/minmax5.lus}
 PASS: ./myec2c {-o /tmp/minmax5.c /tmp/minmax5.ec}
@@ -242,18 +275,21 @@ PASS: ./myec2c {-o /tmp/mm1.c /tmp/mm1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mm1.lus
 PASS: ./lus2lic {-2c should_work/mm1.lus -n mm1}
 PASS: gcc mm1_mm1.c mm1_mm1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mm1.lus
 PASS: ./lus2lic {-o /tmp/predef03.lic should_work/predef03.lus}
 PASS: ./lus2lic {-ec -o /tmp/predef03.ec should_work/predef03.lus}
 PASS: ./myec2c {-o /tmp/predef03.c /tmp/predef03.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/predef03.lus
 PASS: ./lus2lic {-2c should_work/predef03.lus -n predef03}
 PASS: gcc predef03_predef03.c predef03_predef03_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/predef03.lus
 PASS: ./lus2lic {-o /tmp/iter.lic should_work/iter.lus}
 PASS: ./lus2lic {-ec -o /tmp/iter.ec should_work/iter.lus}
 PASS: ./myec2c {-o /tmp/iter.c /tmp/iter.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/iter.lus
 PASS: ./lus2lic {-2c should_work/iter.lus -n iter}
 PASS: gcc iter_iter.c iter_iter_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/iter.lus
 PASS: ./lus2lic {-o /tmp/call05.lic should_work/call05.lus}
 PASS: ./lus2lic {-ec -o /tmp/call05.ec should_work/call05.lus}
 PASS: ./myec2c {-o /tmp/call05.c /tmp/call05.ec}
@@ -277,42 +313,49 @@ PASS: ./myec2c {-o /tmp/node_caller1.c /tmp/node_caller1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/node_caller1.lus
 PASS: ./lus2lic {-2c should_work/node_caller1.lus -n node_caller1}
 PASS: gcc node_caller1_node_caller1.c node_caller1_node_caller1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/node_caller1.lus
 PASS: ./lus2lic {-o /tmp/nc1.lic should_work/nc1.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc1.ec should_work/nc1.lus}
 PASS: ./myec2c {-o /tmp/nc1.c /tmp/nc1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc1.lus
 PASS: ./lus2lic {-2c should_work/nc1.lus -n nc1}
 PASS: gcc nc1_nc1.c nc1_nc1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc1.lus
 PASS: ./lus2lic {-o /tmp/test_node_expand2.lic should_work/test_node_expand2.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_node_expand2.ec should_work/test_node_expand2.lus}
 PASS: ./myec2c {-o /tmp/test_node_expand2.c /tmp/test_node_expand2.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_node_expand2.lus
 PASS: ./lus2lic {-2c should_work/test_node_expand2.lus -n test_node_expand2}
 PASS: gcc test_node_expand2_test_node_expand2.c test_node_expand2_test_node_expand2_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/test_node_expand2.lus
 PASS: ./lus2lic {-o /tmp/test.lic should_work/test.lus}
 PASS: ./lus2lic {-ec -o /tmp/test.ec should_work/test.lus}
 PASS: ./myec2c {-o /tmp/test.c /tmp/test.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test.lus
 PASS: ./lus2lic {-2c should_work/test.lus -n test}
 PASS: gcc test_test.c test_test_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test.lus
 PASS: ./lus2lic {-o /tmp/FALLING_EDGE.lic should_work/FALLING_EDGE.lus}
 PASS: ./lus2lic {-ec -o /tmp/FALLING_EDGE.ec should_work/FALLING_EDGE.lus}
 PASS: ./myec2c {-o /tmp/FALLING_EDGE.c /tmp/FALLING_EDGE.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/FALLING_EDGE.lus
 PASS: ./lus2lic {-2c should_work/FALLING_EDGE.lus -n FALLING_EDGE}
 PASS: gcc FALLING_EDGE_FALLING_EDGE.c FALLING_EDGE_FALLING_EDGE_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/FALLING_EDGE.lus
 PASS: ./lus2lic {-o /tmp/SWITCH.lic should_work/SWITCH.lus}
 PASS: ./lus2lic {-ec -o /tmp/SWITCH.ec should_work/SWITCH.lus}
 PASS: ./myec2c {-o /tmp/SWITCH.c /tmp/SWITCH.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/SWITCH.lus
 PASS: ./lus2lic {-2c should_work/SWITCH.lus -n SWITCH}
 PASS: gcc SWITCH_SWITCH.c SWITCH_SWITCH_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/SWITCH.lus
 PASS: ./lus2lic {-o /tmp/cst.lic should_work/cst.lus}
 PASS: ./lus2lic {-ec -o /tmp/cst.ec should_work/cst.lus}
 PASS: ./myec2c {-o /tmp/cst.c /tmp/cst.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/cst.lus
 PASS: ./lus2lic {-2c should_work/cst.lus -n cst}
 PASS: gcc cst_cst.c cst_cst_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/cst.lus
 PASS: ./lus2lic {-o /tmp/minmax5_random.lic should_work/minmax5_random.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax5_random.ec should_work/minmax5_random.lus}
 PASS: ./myec2c {-o /tmp/minmax5_random.c /tmp/minmax5_random.ec}
@@ -325,48 +368,56 @@ PASS: ./myec2c {-o /tmp/matrice2.c /tmp/matrice2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/matrice2.lus
 PASS: ./lus2lic {-2c should_work/matrice2.lus -n matrice2}
 PASS: gcc matrice2_matrice2.c matrice2_matrice2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/matrice2.lus
 PASS: ./lus2lic {-o /tmp/v1.lic should_work/v1.lus}
 PASS: ./lus2lic {-ec -o /tmp/v1.ec should_work/v1.lus}
 PASS: ./myec2c {-o /tmp/v1.c /tmp/v1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/v1.lus
 PASS: ./lus2lic {-2c should_work/v1.lus -n v1}
 PASS: gcc v1_v1.c v1_v1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/v1.lus
 PASS: ./lus2lic {-o /tmp/call04.lic should_work/call04.lus}
 PASS: ./lus2lic {-ec -o /tmp/call04.ec should_work/call04.lus}
 PASS: ./myec2c {-o /tmp/call04.c /tmp/call04.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/call04.lus
 PASS: ./lus2lic {-2c should_work/call04.lus -n call04}
 PASS: gcc call04_call04.c call04_call04_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/call04.lus
 PASS: ./lus2lic {-o /tmp/bascule.lic should_work/bascule.lus}
 PASS: ./lus2lic {-ec -o /tmp/bascule.ec should_work/bascule.lus}
 PASS: ./myec2c {-o /tmp/bascule.c /tmp/bascule.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bascule.lus
 PASS: ./lus2lic {-2c should_work/bascule.lus -n bascule}
 PASS: gcc bascule_bascule.c bascule_bascule_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bascule.lus
 PASS: ./lus2lic {-o /tmp/double_delay.lic should_work/double_delay.lus}
 PASS: ./lus2lic {-ec -o /tmp/double_delay.ec should_work/double_delay.lus}
 PASS: ./myec2c {-o /tmp/double_delay.c /tmp/double_delay.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/double_delay.lus
 PASS: ./lus2lic {-2c should_work/double_delay.lus -n double_delay}
 PASS: gcc double_delay_double_delay.c double_delay_double_delay_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/double_delay.lus
 PASS: ./lus2lic {-o /tmp/struct_with.lic should_work/struct_with.lus}
 PASS: ./lus2lic {-ec -o /tmp/struct_with.ec should_work/struct_with.lus}
 PASS: ./myec2c {-o /tmp/struct_with.c /tmp/struct_with.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/struct_with.lus
 PASS: ./lus2lic {-2c should_work/struct_with.lus -n struct_with}
 PASS: gcc struct_with_struct_with.c struct_with_struct_with_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/struct_with.lus
 PASS: ./lus2lic {-o /tmp/test_node_expand.lic should_work/test_node_expand.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_node_expand.ec should_work/test_node_expand.lus}
 PASS: ./myec2c {-o /tmp/test_node_expand.c /tmp/test_node_expand.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_node_expand.lus
 PASS: ./lus2lic {-2c should_work/test_node_expand.lus -n test_node_expand}
 PASS: gcc test_node_expand_test_node_expand.c test_node_expand_test_node_expand_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/test_node_expand.lus
 PASS: ./lus2lic {-o /tmp/mm22.lic should_work/mm22.lus}
 PASS: ./lus2lic {-ec -o /tmp/mm22.ec should_work/mm22.lus}
 PASS: ./myec2c {-o /tmp/mm22.c /tmp/mm22.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mm22.lus
 PASS: ./lus2lic {-2c should_work/mm22.lus -n mm22}
 PASS: gcc mm22_mm22.c mm22_mm22_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mm22.lus
 PASS: ./lus2lic {-o /tmp/array_concat2.lic should_work/array_concat2.lus}
 PASS: ./lus2lic {-ec -o /tmp/array_concat2.ec should_work/array_concat2.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/array_concat2.c /tmp/array_concat2.ec}
@@ -376,6 +427,7 @@ PASS: ./myec2c {-o /tmp/is_stable.c /tmp/is_stable.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/is_stable.lus
 PASS: ./lus2lic {-2c should_work/is_stable.lus -n is_stable}
 PASS: gcc is_stable_is_stable.c is_stable_is_stable_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/is_stable.lus
 PASS: ./lus2lic {-o /tmp/test_clash.lic should_work/test_clash.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_clash.ec should_work/test_clash.lus}
 PASS: ./myec2c {-o /tmp/test_clash.c /tmp/test_clash.ec}
@@ -392,24 +444,28 @@ PASS: ./myec2c {-o /tmp/onlyroll2.c /tmp/onlyroll2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/onlyroll2.lus
 PASS: ./lus2lic {-2c should_work/onlyroll2.lus -n onlyroll2}
 PASS: gcc onlyroll2_onlyroll2.c onlyroll2_onlyroll2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/onlyroll2.lus
 PASS: ./lus2lic {-o /tmp/modes3x2_v2.lic should_work/modes3x2_v2.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2_v2.ec should_work/modes3x2_v2.lus}
 PASS: ./myec2c {-o /tmp/modes3x2_v2.c /tmp/modes3x2_v2.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/modes3x2_v2.lus
 PASS: ./lus2lic {-2c should_work/modes3x2_v2.lus -n modes3x2_v2}
 PASS: gcc modes3x2_v2_modes3x2_v2.c modes3x2_v2_modes3x2_v2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/modes3x2_v2.lus
 PASS: ./lus2lic {-o /tmp/X6.lic should_work/X6.lus}
 PASS: ./lus2lic {-ec -o /tmp/X6.ec should_work/X6.lus}
 PASS: ./myec2c {-o /tmp/X6.c /tmp/X6.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/X6.lus
 PASS: ./lus2lic {-2c should_work/X6.lus -n X6}
 PASS: gcc X6_X6.c X6_X6_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/X6.lus
 PASS: ./lus2lic {-o /tmp/zzz2.lic should_work/zzz2.lus}
 PASS: ./lus2lic {-ec -o /tmp/zzz2.ec should_work/zzz2.lus}
 PASS: ./myec2c {-o /tmp/zzz2.c /tmp/zzz2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/zzz2.lus
 PASS: ./lus2lic {-2c should_work/zzz2.lus -n zzz2}
 PASS: gcc zzz2_zzz2.c zzz2_zzz2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/zzz2.lus
 PASS: ./lus2lic {-o /tmp/polymorphic_pack.lic should_work/polymorphic_pack.lus}
 PASS: ./lus2lic {-ec -o /tmp/polymorphic_pack.ec should_work/polymorphic_pack.lus}
 PASS: ./myec2c {-o /tmp/polymorphic_pack.c /tmp/polymorphic_pack.ec}
@@ -421,12 +477,14 @@ PASS: ./myec2c {-o /tmp/COUNTER.c /tmp/COUNTER.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/COUNTER.lus
 PASS: ./lus2lic {-2c should_work/COUNTER.lus -n COUNTER}
 PASS: gcc COUNTER_COUNTER.c COUNTER_COUNTER_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/COUNTER.lus
 PASS: ./lus2lic {-o /tmp/minmax3.lic should_work/minmax3.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax3.ec should_work/minmax3.lus}
 PASS: ./myec2c {-o /tmp/minmax3.c /tmp/minmax3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax3.lus
 PASS: ./lus2lic {-2c should_work/minmax3.lus -n minmax3}
 PASS: gcc minmax3_minmax3.c minmax3_minmax3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax3.lus
 PASS: ./lus2lic {-o /tmp/filter.lic should_work/filter.lus}
 PASS: ./lus2lic {-ec -o /tmp/filter.ec should_work/filter.lus}
 PASS: ./myec2c {-o /tmp/filter.c /tmp/filter.ec}
@@ -438,6 +496,7 @@ PASS: ./myec2c {-o /tmp/ec.c /tmp/ec.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ec.lus
 PASS: ./lus2lic {-2c should_work/ec.lus -n ec}
 PASS: gcc ec_ec.c ec_ec_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ec.lus
 PASS: ./lus2lic {-o /tmp/morel3.lic should_work/morel3.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel3.ec should_work/morel3.lus}
 PASS: ./myec2c {-o /tmp/morel3.c /tmp/morel3.ec}
@@ -450,48 +509,56 @@ PASS: ./myec2c {-o /tmp/fresh_name.c /tmp/fresh_name.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/fresh_name.lus
 PASS: ./lus2lic {-2c should_work/fresh_name.lus -n fresh_name}
 PASS: gcc fresh_name_fresh_name.c fresh_name_fresh_name_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/fresh_name.lus
 PASS: ./lus2lic {-o /tmp/ply03.lic should_work/ply03.lus}
 PASS: ./lus2lic {-ec -o /tmp/ply03.ec should_work/ply03.lus}
 PASS: ./myec2c {-o /tmp/ply03.c /tmp/ply03.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ply03.lus
 PASS: ./lus2lic {-2c should_work/ply03.lus -n ply03}
 PASS: gcc ply03_ply03.c ply03_ply03_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ply03.lus
 PASS: ./lus2lic {-o /tmp/param_struct.lic should_work/param_struct.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_struct.ec should_work/param_struct.lus}
 PASS: ./myec2c {-o /tmp/param_struct.c /tmp/param_struct.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/param_struct.lus
 PASS: ./lus2lic {-2c should_work/param_struct.lus -n param_struct}
 PASS: gcc param_struct_param_struct.c param_struct_param_struct_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/param_struct.lus
 PASS: ./lus2lic {-o /tmp/minmax2.lic should_work/minmax2.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax2.ec should_work/minmax2.lus}
 PASS: ./myec2c {-o /tmp/minmax2.c /tmp/minmax2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax2.lus
 PASS: ./lus2lic {-2c should_work/minmax2.lus -n minmax2}
 PASS: gcc minmax2_minmax2.c minmax2_minmax2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax2.lus
 PASS: ./lus2lic {-o /tmp/plus.lic should_work/plus.lus}
 PASS: ./lus2lic {-ec -o /tmp/plus.ec should_work/plus.lus}
 PASS: ./myec2c {-o /tmp/plus.c /tmp/plus.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/plus.lus
 PASS: ./lus2lic {-2c should_work/plus.lus -n plus}
 PASS: gcc plus_plus.c plus_plus_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/plus.lus
 PASS: ./lus2lic {-o /tmp/xx.lic should_work/xx.lus}
 PASS: ./lus2lic {-ec -o /tmp/xx.ec should_work/xx.lus}
 PASS: ./myec2c {-o /tmp/xx.c /tmp/xx.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/xx.lus
 PASS: ./lus2lic {-2c should_work/xx.lus -n xx}
 PASS: gcc xx_xx.c xx_xx_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/xx.lus
 PASS: ./lus2lic {-o /tmp/call07.lic should_work/call07.lus}
 PASS: ./lus2lic {-ec -o /tmp/call07.ec should_work/call07.lus}
 PASS: ./myec2c {-o /tmp/call07.c /tmp/call07.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/call07.lus
 PASS: ./lus2lic {-2c should_work/call07.lus -n call07}
 PASS: gcc call07_call07.c call07_call07_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/call07.lus
 PASS: ./lus2lic {-o /tmp/shift_ludic.lic should_work/shift_ludic.lus}
 PASS: ./lus2lic {-ec -o /tmp/shift_ludic.ec should_work/shift_ludic.lus}
 PASS: ./myec2c {-o /tmp/shift_ludic.c /tmp/shift_ludic.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/shift_ludic.lus
 PASS: ./lus2lic {-2c should_work/shift_ludic.lus -n shift_ludic}
 PASS: gcc shift_ludic_shift_ludic.c shift_ludic_shift_ludic_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/shift_ludic.lus
 PASS: ./lus2lic {-o /tmp/pilote-1.0.lic should_work/pilote-1.0.lus}
 PASS: ./lus2lic {-ec -o /tmp/pilote-1.0.ec should_work/pilote-1.0.lus}
 PASS: ./myec2c {-o /tmp/pilote-1.0.c /tmp/pilote-1.0.ec}
@@ -503,6 +570,7 @@ PASS: ./myec2c {-o /tmp/trivial.c /tmp/trivial.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/trivial.lus
 PASS: ./lus2lic {-2c should_work/trivial.lus -n trivial}
 PASS: gcc trivial_trivial.c trivial_trivial_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/trivial.lus
 PASS: ./lus2lic {-o /tmp/packs.lic should_work/packs.lus}
 PASS: ./lus2lic {-ec -o /tmp/packs.ec should_work/packs.lus}
 PASS: ./myec2c {-o /tmp/packs.c /tmp/packs.ec}
@@ -514,6 +582,7 @@ PASS: ./myec2c {-o /tmp/sincos.c /tmp/sincos.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/sincos.lus
 PASS: ./lus2lic {-2c should_work/sincos.lus -n sincos}
 PASS: gcc sincos_sincos.c sincos_sincos_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/sincos.lus
 PASS: ./lus2lic {-o /tmp/newpacks.lic should_work/newpacks.lus}
 PASS: ./lus2lic {-ec -o /tmp/newpacks.ec should_work/newpacks.lus}
 PASS: ./myec2c {-o /tmp/newpacks.c /tmp/newpacks.ec}
@@ -525,36 +594,42 @@ PASS: ./myec2c {-o /tmp/morel5.c /tmp/morel5.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/morel5.lus
 PASS: ./lus2lic {-2c should_work/morel5.lus -n morel5}
 PASS: gcc morel5_morel5.c morel5_morel5_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/morel5.lus
 PASS: ./lus2lic {-o /tmp/bred.lic should_work/bred.lus}
 PASS: ./lus2lic {-ec -o /tmp/bred.ec should_work/bred.lus}
 PASS: ./myec2c {-o /tmp/bred.c /tmp/bred.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bred.lus
 PASS: ./lus2lic {-2c should_work/bred.lus -n bred}
 PASS: gcc bred_bred.c bred_bred_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bred.lus
 PASS: ./lus2lic {-o /tmp/test_diese.lic should_work/test_diese.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_diese.ec should_work/test_diese.lus}
 PASS: ./myec2c {-o /tmp/test_diese.c /tmp/test_diese.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_diese.lus
 PASS: ./lus2lic {-2c should_work/test_diese.lus -n test_diese}
 PASS: gcc test_diese_test_diese.c test_diese_test_diese_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_diese.lus
 PASS: ./lus2lic {-o /tmp/tri.lic should_work/tri.lus}
 PASS: ./lus2lic {-ec -o /tmp/tri.ec should_work/tri.lus}
 PASS: ./myec2c {-o /tmp/tri.c /tmp/tri.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/tri.lus
 PASS: ./lus2lic {-2c should_work/tri.lus -n tri}
 PASS: gcc tri_tri.c tri_tri_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/tri.lus
 PASS: ./lus2lic {-o /tmp/calculs_max.lic should_work/calculs_max.lus}
 PASS: ./lus2lic {-ec -o /tmp/calculs_max.ec should_work/calculs_max.lus}
 PASS: ./myec2c {-o /tmp/calculs_max.c /tmp/calculs_max.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/calculs_max.lus
 PASS: ./lus2lic {-2c should_work/calculs_max.lus -n calculs_max}
 PASS: gcc calculs_max_calculs_max.c calculs_max_calculs_max_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/calculs_max.lus
 PASS: ./lus2lic {-o /tmp/testCA.lic should_work/testCA.lus}
 PASS: ./lus2lic {-ec -o /tmp/testCA.ec should_work/testCA.lus}
 PASS: ./myec2c {-o /tmp/testCA.c /tmp/testCA.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/testCA.lus
 PASS: ./lus2lic {-2c should_work/testCA.lus -n testCA}
 PASS: gcc testCA_testCA.c testCA_testCA_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/testCA.lus
 PASS: ./lus2lic {-o /tmp/test_extern.lic should_work/test_extern.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_extern.ec should_work/test_extern.lus}
 PASS: ./myec2c {-o /tmp/test_extern.c /tmp/test_extern.ec}
@@ -573,12 +648,14 @@ PASS: ./myec2c {-o /tmp/noAlarm.c /tmp/noAlarm.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/noAlarm.lus
 PASS: ./lus2lic {-2c should_work/noAlarm.lus -n noAlarm}
 PASS: gcc noAlarm_noAlarm.c noAlarm_noAlarm_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/noAlarm.lus
 PASS: ./lus2lic {-o /tmp/clock_ite.lic should_work/clock_ite.lus}
 PASS: ./lus2lic {-ec -o /tmp/clock_ite.ec should_work/clock_ite.lus}
 PASS: ./myec2c {-o /tmp/clock_ite.c /tmp/clock_ite.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/clock_ite.lus
 PASS: ./lus2lic {-2c should_work/clock_ite.lus -n clock_ite}
 PASS: gcc clock_ite_clock_ite.c clock_ite_clock_ite_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/clock_ite.lus
 PASS: ./lus2lic {-o /tmp/morel4.lic should_work/morel4.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel4.ec should_work/morel4.lus}
 PASS: ./myec2c {-o /tmp/morel4.c /tmp/morel4.ec}
@@ -593,96 +670,112 @@ PASS: ./myec2c {-o /tmp/param_node4.c /tmp/param_node4.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/param_node4.lus
 PASS: ./lus2lic {-2c should_work/param_node4.lus -n param_node4}
 PASS: gcc param_node4_param_node4.c param_node4_param_node4_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/param_node4.lus
 PASS: ./lus2lic {-o /tmp/bad_call03.lic should_work/bad_call03.lus}
 PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec should_work/bad_call03.lus}
 PASS: ./myec2c {-o /tmp/bad_call03.c /tmp/bad_call03.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bad_call03.lus
 PASS: ./lus2lic {-2c should_work/bad_call03.lus -n bad_call03}
 PASS: gcc bad_call03_bad_call03.c bad_call03_bad_call03_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bad_call03.lus
 PASS: ./lus2lic {-o /tmp/onlyroll.lic should_work/onlyroll.lus}
 PASS: ./lus2lic {-ec -o /tmp/onlyroll.ec should_work/onlyroll.lus}
 PASS: ./myec2c {-o /tmp/onlyroll.c /tmp/onlyroll.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/onlyroll.lus
 PASS: ./lus2lic {-2c should_work/onlyroll.lus -n onlyroll}
 PASS: gcc onlyroll_onlyroll.c onlyroll_onlyroll_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/onlyroll.lus
 PASS: ./lus2lic {-o /tmp/produitBool.lic should_work/produitBool.lus}
 PASS: ./lus2lic {-ec -o /tmp/produitBool.ec should_work/produitBool.lus}
 PASS: ./myec2c {-o /tmp/produitBool.c /tmp/produitBool.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/produitBool.lus
 PASS: ./lus2lic {-2c should_work/produitBool.lus -n produitBool}
 PASS: gcc produitBool_produitBool.c produitBool_produitBool_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/produitBool.lus
 PASS: ./lus2lic {-o /tmp/noeudsIndependants.lic should_work/noeudsIndependants.lus}
 PASS: ./lus2lic {-ec -o /tmp/noeudsIndependants.ec should_work/noeudsIndependants.lus}
 PASS: ./myec2c {-o /tmp/noeudsIndependants.c /tmp/noeudsIndependants.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/noeudsIndependants.lus
 PASS: ./lus2lic {-2c should_work/noeudsIndependants.lus -n noeudsIndependants}
 PASS: gcc noeudsIndependants_noeudsIndependants.c noeudsIndependants_noeudsIndependants_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/noeudsIndependants.lus
 PASS: ./lus2lic {-o /tmp/mouse.lic should_work/mouse.lus}
 PASS: ./lus2lic {-ec -o /tmp/mouse.ec should_work/mouse.lus}
 PASS: ./myec2c {-o /tmp/mouse.c /tmp/mouse.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mouse.lus
 PASS: ./lus2lic {-2c should_work/mouse.lus -n mouse}
 PASS: gcc mouse_mouse.c mouse_mouse_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mouse.lus
 PASS: ./lus2lic {-o /tmp/param_node3.lic should_work/param_node3.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node3.ec should_work/param_node3.lus}
 PASS: ./myec2c {-o /tmp/param_node3.c /tmp/param_node3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/param_node3.lus
 PASS: ./lus2lic {-2c should_work/param_node3.lus -n param_node3}
 PASS: gcc param_node3_param_node3.c param_node3_param_node3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/param_node3.lus
 PASS: ./lus2lic {-o /tmp/pipeline.lic should_work/pipeline.lus}
 PASS: ./lus2lic {-ec -o /tmp/pipeline.ec should_work/pipeline.lus}
 PASS: ./myec2c {-o /tmp/pipeline.c /tmp/pipeline.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/pipeline.lus
 PASS: ./lus2lic {-2c should_work/pipeline.lus -n pipeline}
 PASS: gcc pipeline_pipeline.c pipeline_pipeline_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/pipeline.lus
 PASS: ./lus2lic {-o /tmp/mapinf.lic should_work/mapinf.lus}
 PASS: ./lus2lic {-ec -o /tmp/mapinf.ec should_work/mapinf.lus}
 PASS: ./myec2c {-o /tmp/mapinf.c /tmp/mapinf.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mapinf.lus
 PASS: ./lus2lic {-2c should_work/mapinf.lus -n mapinf}
 PASS: gcc mapinf_mapinf.c mapinf_mapinf_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mapinf.lus
 PASS: ./lus2lic {-o /tmp/integrator.lic should_work/integrator.lus}
 PASS: ./lus2lic {-ec -o /tmp/integrator.ec should_work/integrator.lus}
 PASS: ./myec2c {-o /tmp/integrator.c /tmp/integrator.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/integrator.lus
 PASS: ./lus2lic {-2c should_work/integrator.lus -n integrator}
 PASS: gcc integrator_integrator.c integrator_integrator_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/integrator.lus
 PASS: ./lus2lic {-o /tmp/nc4.lic should_work/nc4.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc4.ec should_work/nc4.lus}
 PASS: ./myec2c {-o /tmp/nc4.c /tmp/nc4.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc4.lus
 PASS: ./lus2lic {-2c should_work/nc4.lus -n nc4}
 PASS: gcc nc4_nc4.c nc4_nc4_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc4.lus
 PASS: ./lus2lic {-o /tmp/mm3.lic should_work/mm3.lus}
 PASS: ./lus2lic {-ec -o /tmp/mm3.ec should_work/mm3.lus}
 PASS: ./myec2c {-o /tmp/mm3.c /tmp/mm3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mm3.lus
 PASS: ./lus2lic {-2c should_work/mm3.lus -n mm3}
 PASS: gcc mm3_mm3.c mm3_mm3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mm3.lus
 PASS: ./lus2lic {-o /tmp/over2.lic should_work/over2.lus}
 PASS: ./lus2lic {-ec -o /tmp/over2.ec should_work/over2.lus}
 PASS: ./myec2c {-o /tmp/over2.c /tmp/over2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/over2.lus
 PASS: ./lus2lic {-2c should_work/over2.lus -n over2}
 PASS: gcc over2_over2.c over2_over2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/over2.lus
 PASS: ./lus2lic {-o /tmp/over3.lic should_work/over3.lus}
 PASS: ./lus2lic {-ec -o /tmp/over3.ec should_work/over3.lus}
 PASS: ./myec2c {-o /tmp/over3.c /tmp/over3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/over3.lus
 PASS: ./lus2lic {-2c should_work/over3.lus -n over3}
 PASS: gcc over3_over3.c over3_over3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/over3.lus
 PASS: ./lus2lic {-o /tmp/complex.lic should_work/complex.lus}
 PASS: ./lus2lic {-ec -o /tmp/complex.ec should_work/complex.lus}
 PASS: ./myec2c {-o /tmp/complex.c /tmp/complex.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/complex.lus
 PASS: ./lus2lic {-2c should_work/complex.lus -n complex}
 PASS: gcc complex_complex.c complex_complex_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/complex.lus
 PASS: ./lus2lic {-o /tmp/initial.lic should_work/initial.lus}
 PASS: ./lus2lic {-ec -o /tmp/initial.ec should_work/initial.lus}
 PASS: ./myec2c {-o /tmp/initial.c /tmp/initial.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/initial.lus
 PASS: ./lus2lic {-2c should_work/initial.lus -n initial}
 PASS: gcc initial_initial.c initial_initial_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/initial.lus
 PASS: ./lus2lic {-o /tmp/declaration.lic should_work/declaration.lus}
 PASS: ./lus2lic {-ec -o /tmp/declaration.ec should_work/declaration.lus}
 PASS: ./myec2c {-o /tmp/declaration.c /tmp/declaration.ec}
@@ -695,18 +788,21 @@ PASS: ./myec2c {-o /tmp/PCOND1.c /tmp/PCOND1.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/PCOND1.lus
 PASS: ./lus2lic {-2c should_work/PCOND1.lus -n PCOND1}
 PASS: gcc PCOND1_PCOND1.c PCOND1_PCOND1_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/PCOND1.lus
 PASS: ./lus2lic {-o /tmp/TIME_STABLE1.lic should_work/TIME_STABLE1.lus}
 PASS: ./lus2lic {-ec -o /tmp/TIME_STABLE1.ec should_work/TIME_STABLE1.lus}
 PASS: ./myec2c {-o /tmp/TIME_STABLE1.c /tmp/TIME_STABLE1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/TIME_STABLE1.lus
 PASS: ./lus2lic {-2c should_work/TIME_STABLE1.lus -n TIME_STABLE1}
 PASS: gcc TIME_STABLE1_TIME_STABLE1.c TIME_STABLE1_TIME_STABLE1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/TIME_STABLE1.lus
 PASS: ./lus2lic {-o /tmp/nc5.lic should_work/nc5.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc5.ec should_work/nc5.lus}
 PASS: ./myec2c {-o /tmp/nc5.c /tmp/nc5.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc5.lus
 PASS: ./lus2lic {-2c should_work/nc5.lus -n nc5}
 PASS: gcc nc5_nc5.c nc5_nc5_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc5.lus
 PASS: ./lus2lic {-o /tmp/call.lic should_work/call.lus}
 PASS: ./lus2lic {-ec -o /tmp/call.ec should_work/call.lus}
 PASS: ./myec2c {-o /tmp/call.c /tmp/call.ec}
@@ -719,18 +815,21 @@ PASS: ./myec2c {-o /tmp/mouse1.c /tmp/mouse1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mouse1.lus
 PASS: ./lus2lic {-2c should_work/mouse1.lus -n mouse1}
 PASS: gcc mouse1_mouse1.c mouse1_mouse1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mouse1.lus
 PASS: ./lus2lic {-o /tmp/lustre_test1_ok.lic should_work/lustre_test1_ok.lus}
 PASS: ./lus2lic {-ec -o /tmp/lustre_test1_ok.ec should_work/lustre_test1_ok.lus}
 PASS: ./myec2c {-o /tmp/lustre_test1_ok.c /tmp/lustre_test1_ok.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/lustre_test1_ok.lus
 PASS: ./lus2lic {-2c should_work/lustre_test1_ok.lus -n lustre_test1_ok}
 PASS: gcc lustre_test1_ok_lustre_test1_ok.c lustre_test1_ok_lustre_test1_ok_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
 PASS: ./lus2lic {-o /tmp/compteur.lic should_work/compteur.lus}
 PASS: ./lus2lic {-ec -o /tmp/compteur.ec should_work/compteur.lus}
 PASS: ./myec2c {-o /tmp/compteur.c /tmp/compteur.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/compteur.lus
 PASS: ./lus2lic {-2c should_work/compteur.lus -n compteur}
 PASS: gcc compteur_compteur.c compteur_compteur_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/compteur.lus
 PASS: ./lus2lic {-o /tmp/Int.lic should_work/Int.lus}
 PASS: ./lus2lic {-ec -o /tmp/Int.ec should_work/Int.lus}
 PASS: ./myec2c {-o /tmp/Int.c /tmp/Int.ec}
@@ -744,6 +843,7 @@ PASS: ./myec2c {-o /tmp/t2.c /tmp/t2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/t2.lus
 PASS: ./lus2lic {-2c should_work/t2.lus -n t2}
 PASS: gcc t2_t2.c t2_t2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/t2.lus
 PASS: ./lus2lic {-o /tmp/arbitre.lic should_work/arbitre.lus}
 PASS: ./lus2lic {-ec -o /tmp/arbitre.ec should_work/arbitre.lus}
 PASS: ./myec2c {-o /tmp/arbitre.c /tmp/arbitre.ec}
@@ -756,6 +856,7 @@ PASS: ./myec2c {-o /tmp/test_const.c /tmp/test_const.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_const.lus
 PASS: ./lus2lic {-2c should_work/test_const.lus -n test_const}
 PASS: gcc test_const_test_const.c test_const_test_const_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_const.lus
 PASS: ./lus2lic {-o /tmp/when_tuple.lic should_work/when_tuple.lus}
 PASS: ./lus2lic {-ec -o /tmp/when_tuple.ec should_work/when_tuple.lus}
 PASS: ./myec2c {-o /tmp/when_tuple.c /tmp/when_tuple.ec}
@@ -768,6 +869,7 @@ PASS: ./myec2c {-o /tmp/carV2.c /tmp/carV2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/carV2.lus
 PASS: ./lus2lic {-2c should_work/carV2.lus -n carV2}
 PASS: gcc carV2_carV2.c carV2_carV2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/carV2.lus
 PASS: ./lus2lic {-o /tmp/test_merge.lic should_work/test_merge.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_merge.ec should_work/test_merge.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/test_merge.c /tmp/test_merge.ec}
@@ -777,36 +879,42 @@ PASS: ./myec2c {-o /tmp/FillFollowedByRed.c /tmp/FillFollowedByRed.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/FillFollowedByRed.lus
 PASS: ./lus2lic {-2c should_work/FillFollowedByRed.lus -n FillFollowedByRed}
 PASS: gcc FillFollowedByRed_FillFollowedByRed.c FillFollowedByRed_FillFollowedByRed_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/FillFollowedByRed.lus
 PASS: ./lus2lic {-o /tmp/sample_time_change.lic should_work/sample_time_change.lus}
 PASS: ./lus2lic {-ec -o /tmp/sample_time_change.ec should_work/sample_time_change.lus}
 PASS: ./myec2c {-o /tmp/sample_time_change.c /tmp/sample_time_change.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/sample_time_change.lus
 PASS: ./lus2lic {-2c should_work/sample_time_change.lus -n sample_time_change}
 PASS: gcc sample_time_change_sample_time_change.c sample_time_change_sample_time_change_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/sample_time_change.lus
 PASS: ./lus2lic {-o /tmp/test_enum.lic should_work/test_enum.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_enum.ec should_work/test_enum.lus}
 PASS: ./myec2c {-o /tmp/test_enum.c /tmp/test_enum.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_enum.lus
 PASS: ./lus2lic {-2c should_work/test_enum.lus -n test_enum}
 PASS: gcc test_enum_test_enum.c test_enum_test_enum_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_enum.lus
 PASS: ./lus2lic {-o /tmp/predef01.lic should_work/predef01.lus}
 PASS: ./lus2lic {-ec -o /tmp/predef01.ec should_work/predef01.lus}
 PASS: ./myec2c {-o /tmp/predef01.c /tmp/predef01.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/predef01.lus
 PASS: ./lus2lic {-2c should_work/predef01.lus -n predef01}
 PASS: gcc predef01_predef01.c predef01_predef01_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/predef01.lus
 PASS: ./lus2lic {-o /tmp/long_et_stupide_nom_de_noeud.lic should_work/long_et_stupide_nom_de_noeud.lus}
 PASS: ./lus2lic {-ec -o /tmp/long_et_stupide_nom_de_noeud.ec should_work/long_et_stupide_nom_de_noeud.lus}
 PASS: ./myec2c {-o /tmp/long_et_stupide_nom_de_noeud.c /tmp/long_et_stupide_nom_de_noeud.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/long_et_stupide_nom_de_noeud.lus
 PASS: ./lus2lic {-2c should_work/long_et_stupide_nom_de_noeud.lus -n long_et_stupide_nom_de_noeud}
 PASS: gcc long_et_stupide_nom_de_noeud_long_et_stupide_nom_de_noeud.c long_et_stupide_nom_de_noeud_long_et_stupide_nom_de_noeud_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/long_et_stupide_nom_de_noeud.lus
 PASS: ./lus2lic {-o /tmp/CURRENT.lic should_work/CURRENT.lus}
 PASS: ./lus2lic {-ec -o /tmp/CURRENT.ec should_work/CURRENT.lus}
 PASS: ./myec2c {-o /tmp/CURRENT.c /tmp/CURRENT.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/CURRENT.lus
 PASS: ./lus2lic {-2c should_work/CURRENT.lus -n CURRENT}
 PASS: gcc CURRENT_CURRENT.c CURRENT_CURRENT_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/CURRENT.lus
 PASS: ./lus2lic {-o /tmp/left.lic should_work/left.lus}
 PASS: ./lus2lic {-ec -o /tmp/left.ec should_work/left.lus}
 PASS: ./myec2c {-o /tmp/left.c /tmp/left.ec}
@@ -819,6 +927,7 @@ PASS: ./myec2c {-o /tmp/ts04.c /tmp/ts04.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ts04.lus
 PASS: ./lus2lic {-2c should_work/ts04.lus -n ts04}
 PASS: gcc ts04_ts04.c ts04_ts04_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ts04.lus
 FAIL: without any option: ./lus2lic {-o /tmp/bug_map_fby.lic should_work/bug_map_fby.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bug_map_fby.ec should_work/bug_map_fby.lus}
 PASS: ./lus2lic {-o /tmp/multiclock.lic should_work/multiclock.lus}
@@ -827,18 +936,21 @@ PASS: ./myec2c {-o /tmp/multiclock.c /tmp/multiclock.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/multiclock.lus
 PASS: ./lus2lic {-2c should_work/multiclock.lus -n multiclock}
 PASS: gcc multiclock_multiclock.c multiclock_multiclock_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/multiclock.lus
 PASS: ./lus2lic {-o /tmp/nc2.lic should_work/nc2.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc2.ec should_work/nc2.lus}
 PASS: ./myec2c {-o /tmp/nc2.c /tmp/nc2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc2.lus
 PASS: ./lus2lic {-2c should_work/nc2.lus -n nc2}
 PASS: gcc nc2_nc2.c nc2_nc2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc2.lus
 PASS: ./lus2lic {-o /tmp/test_arrow.lic should_work/test_arrow.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_arrow.ec should_work/test_arrow.lus}
 PASS: ./myec2c {-o /tmp/test_arrow.c /tmp/test_arrow.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_arrow.lus
 PASS: ./lus2lic {-2c should_work/test_arrow.lus -n test_arrow}
 PASS: gcc test_arrow_test_arrow.c test_arrow_test_arrow_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_arrow.lus
 PASS: ./lus2lic {-o /tmp/morel.lic should_work/morel.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel.ec should_work/morel.lus}
 PASS: ./myec2c {-o /tmp/morel.c /tmp/morel.ec}
@@ -851,18 +963,21 @@ PASS: ./myec2c {-o /tmp/SOURIS.c /tmp/SOURIS.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/SOURIS.lus
 PASS: ./lus2lic {-2c should_work/SOURIS.lus -n SOURIS}
 PASS: gcc SOURIS_SOURIS.c SOURIS_SOURIS_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/SOURIS.lus
 PASS: ./lus2lic {-o /tmp/param_node2.lic should_work/param_node2.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node2.ec should_work/param_node2.lus}
 PASS: ./myec2c {-o /tmp/param_node2.c /tmp/param_node2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/param_node2.lus
 PASS: ./lus2lic {-2c should_work/param_node2.lus -n param_node2}
 PASS: gcc param_node2_param_node2.c param_node2_param_node2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/param_node2.lus
 PASS: ./lus2lic {-o /tmp/o2l_feux_compl.lic should_work/o2l_feux_compl.lus}
 PASS: ./lus2lic {-ec -o /tmp/o2l_feux_compl.ec should_work/o2l_feux_compl.lus}
 PASS: ./myec2c {-o /tmp/o2l_feux_compl.c /tmp/o2l_feux_compl.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/o2l_feux_compl.lus
 PASS: ./lus2lic {-2c should_work/o2l_feux_compl.lus -n o2l_feux_compl}
 PASS: gcc o2l_feux_compl_o2l_feux_compl.c o2l_feux_compl_o2l_feux_compl_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/o2l_feux_compl.lus
 PASS: ./lus2lic {-o /tmp/model.lic should_work/model.lus}
 PASS: ./lus2lic {-ec -o /tmp/model.ec should_work/model.lus}
 PASS: ./myec2c {-o /tmp/model.c /tmp/model.ec}
@@ -874,54 +989,63 @@ PASS: ./myec2c {-o /tmp/matrice.c /tmp/matrice.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/matrice.lus
 PASS: ./lus2lic {-2c should_work/matrice.lus -n matrice}
 PASS: gcc matrice_matrice.c matrice_matrice_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/matrice.lus
 PASS: ./lus2lic {-o /tmp/TIME_STABLE.lic should_work/TIME_STABLE.lus}
 PASS: ./lus2lic {-ec -o /tmp/TIME_STABLE.ec should_work/TIME_STABLE.lus}
 PASS: ./myec2c {-o /tmp/TIME_STABLE.c /tmp/TIME_STABLE.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/TIME_STABLE.lus
 PASS: ./lus2lic {-2c should_work/TIME_STABLE.lus -n TIME_STABLE}
 PASS: gcc TIME_STABLE_TIME_STABLE.c TIME_STABLE_TIME_STABLE_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
 PASS: ./lus2lic {-o /tmp/cpt.lic should_work/cpt.lus}
 PASS: ./lus2lic {-ec -o /tmp/cpt.ec should_work/cpt.lus}
 PASS: ./myec2c {-o /tmp/cpt.c /tmp/cpt.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/cpt.lus
 PASS: ./lus2lic {-2c should_work/cpt.lus -n cpt}
 PASS: gcc cpt_cpt.c cpt_cpt_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/cpt.lus
 PASS: ./lus2lic {-o /tmp/multipar.lic should_work/multipar.lus}
 PASS: ./lus2lic {-ec -o /tmp/multipar.ec should_work/multipar.lus}
 PASS: ./myec2c {-o /tmp/multipar.c /tmp/multipar.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/multipar.lus
 PASS: ./lus2lic {-2c should_work/multipar.lus -n multipar}
 PASS: gcc multipar_multipar.c multipar_multipar_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/multipar.lus
 PASS: ./lus2lic {-o /tmp/activation_ec.lic should_work/activation_ec.lus}
 PASS: ./lus2lic {-ec -o /tmp/activation_ec.ec should_work/activation_ec.lus}
 PASS: ./myec2c {-o /tmp/activation_ec.c /tmp/activation_ec.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/activation_ec.lus
 PASS: ./lus2lic {-2c should_work/activation_ec.lus -n activation_ec}
 PASS: gcc activation_ec_activation_ec.c activation_ec_activation_ec_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/activation_ec.lus
 PASS: ./lus2lic {-o /tmp/impl_priority.lic should_work/impl_priority.lus}
 PASS: ./lus2lic {-ec -o /tmp/impl_priority.ec should_work/impl_priority.lus}
 PASS: ./myec2c {-o /tmp/impl_priority.c /tmp/impl_priority.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/impl_priority.lus
 PASS: ./lus2lic {-2c should_work/impl_priority.lus -n impl_priority}
 PASS: gcc impl_priority_impl_priority.c impl_priority_impl_priority_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/impl_priority.lus
 PASS: ./lus2lic {-o /tmp/exclusion.lic should_work/exclusion.lus}
 PASS: ./lus2lic {-ec -o /tmp/exclusion.ec should_work/exclusion.lus}
 PASS: ./myec2c {-o /tmp/exclusion.c /tmp/exclusion.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/exclusion.lus
 PASS: ./lus2lic {-2c should_work/exclusion.lus -n exclusion}
 PASS: gcc exclusion_exclusion.c exclusion_exclusion_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/exclusion.lus
 PASS: ./lus2lic {-o /tmp/ply01.lic should_work/ply01.lus}
 PASS: ./lus2lic {-ec -o /tmp/ply01.ec should_work/ply01.lus}
 PASS: ./myec2c {-o /tmp/ply01.c /tmp/ply01.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ply01.lus
 PASS: ./lus2lic {-2c should_work/ply01.lus -n ply01}
 PASS: gcc ply01_ply01.c ply01_ply01_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ply01.lus
 PASS: ./lus2lic {-o /tmp/consensus.lic should_work/consensus.lus}
 PASS: ./lus2lic {-ec -o /tmp/consensus.ec should_work/consensus.lus}
 PASS: ./myec2c {-o /tmp/consensus.c /tmp/consensus.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/consensus.lus
 PASS: ./lus2lic {-2c should_work/consensus.lus -n consensus}
 PASS: gcc consensus_consensus.c consensus_consensus_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/consensus.lus
 PASS: ./lus2lic {-o /tmp/activation2.lic should_work/activation2.lus}
 PASS: ./lus2lic {-ec -o /tmp/activation2.ec should_work/activation2.lus}
 PASS: ./myec2c {-o /tmp/activation2.c /tmp/activation2.ec}
@@ -933,6 +1057,7 @@ PASS: ./myec2c {-o /tmp/type_decl.c /tmp/type_decl.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/type_decl.lus
 PASS: ./lus2lic {-2c should_work/type_decl.lus -n type_decl}
 PASS: gcc type_decl_type_decl.c type_decl_type_decl_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/type_decl.lus
 PASS: ./lus2lic {-o /tmp/import1.lic should_work/import1.lus}
 PASS: ./lus2lic {-ec -o /tmp/import1.ec should_work/import1.lus}
 PASS: ./myec2c {-o /tmp/import1.c /tmp/import1.ec}
@@ -945,42 +1070,49 @@ PASS: ./myec2c {-o /tmp/pack1.c /tmp/pack1.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/pack1.lus
 PASS: ./lus2lic {-2c should_work/pack1.lus -n pack1}
 PASS: gcc pack1_pack1.c pack1_pack1_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/pack1.lus
 PASS: ./lus2lic {-o /tmp/bob.lic should_work/bob.lus}
 PASS: ./lus2lic {-ec -o /tmp/bob.ec should_work/bob.lus}
 PASS: ./myec2c {-o /tmp/bob.c /tmp/bob.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/bob.lus
 PASS: ./lus2lic {-2c should_work/bob.lus -n bob}
 PASS: gcc bob_bob.c bob_bob_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/bob.lus
 PASS: ./lus2lic {-o /tmp/notTwo.lic should_work/notTwo.lus}
 PASS: ./lus2lic {-ec -o /tmp/notTwo.ec should_work/notTwo.lus}
 PASS: ./myec2c {-o /tmp/notTwo.c /tmp/notTwo.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/notTwo.lus
 PASS: ./lus2lic {-2c should_work/notTwo.lus -n notTwo}
 PASS: gcc notTwo_notTwo.c notTwo_notTwo_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/notTwo.lus
 PASS: ./lus2lic {-o /tmp/stopwatch.lic should_work/stopwatch.lus}
 PASS: ./lus2lic {-ec -o /tmp/stopwatch.ec should_work/stopwatch.lus}
 PASS: ./myec2c {-o /tmp/stopwatch.c /tmp/stopwatch.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/stopwatch.lus
 PASS: ./lus2lic {-2c should_work/stopwatch.lus -n stopwatch}
 PASS: gcc stopwatch_stopwatch.c stopwatch_stopwatch_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/stopwatch.lus
 PASS: ./lus2lic {-o /tmp/test_condact.lic should_work/test_condact.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_condact.ec should_work/test_condact.lus}
 PASS: ./myec2c {-o /tmp/test_condact.c /tmp/test_condact.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_condact.lus
 PASS: ./lus2lic {-2c should_work/test_condact.lus -n test_condact}
 PASS: gcc test_condact_test_condact.c test_condact_test_condact_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/test_condact.lus
 PASS: ./lus2lic {-o /tmp/contractForElementSelectionInArray.lic should_work/contractForElementSelectionInArray.lus}
 PASS: ./lus2lic {-ec -o /tmp/contractForElementSelectionInArray.ec should_work/contractForElementSelectionInArray.lus}
 PASS: ./myec2c {-o /tmp/contractForElementSelectionInArray.c /tmp/contractForElementSelectionInArray.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/contractForElementSelectionInArray.lus
 PASS: ./lus2lic {-2c should_work/contractForElementSelectionInArray.lus -n contractForElementSelectionInArray}
 PASS: gcc contractForElementSelectionInArray_contractForElementSelectionInArray.c contractForElementSelectionInArray_contractForElementSelectionInArray_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/contractForElementSelectionInArray.lus
 PASS: ./lus2lic {-o /tmp/iterFibo.lic should_work/iterFibo.lus}
 PASS: ./lus2lic {-ec -o /tmp/iterFibo.ec should_work/iterFibo.lus}
 PASS: ./myec2c {-o /tmp/iterFibo.c /tmp/iterFibo.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/iterFibo.lus
 PASS: ./lus2lic {-2c should_work/iterFibo.lus -n iterFibo}
 PASS: gcc iterFibo_iterFibo.c iterFibo_iterFibo_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/iterFibo.lus
 PASS: ./lus2lic {-o /tmp/morel2.lic should_work/morel2.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel2.ec should_work/morel2.lus}
 PASS: ./myec2c {-o /tmp/morel2.c /tmp/morel2.ec}
@@ -993,18 +1125,21 @@ PASS: ./myec2c {-o /tmp/minmax1.c /tmp/minmax1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax1.lus
 PASS: ./lus2lic {-2c should_work/minmax1.lus -n minmax1}
 PASS: gcc minmax1_minmax1.c minmax1_minmax1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax1.lus
 PASS: ./lus2lic {-o /tmp/aa.lic should_work/aa.lus}
 PASS: ./lus2lic {-ec -o /tmp/aa.ec should_work/aa.lus}
 PASS: ./myec2c {-o /tmp/aa.c /tmp/aa.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/aa.lus
 PASS: ./lus2lic {-2c should_work/aa.lus -n aa}
 PASS: gcc aa_aa.c aa_aa_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/aa.lus
 PASS: ./lus2lic {-o /tmp/mouse3.lic should_work/mouse3.lus}
 PASS: ./lus2lic {-ec -o /tmp/mouse3.ec should_work/mouse3.lus}
 PASS: ./myec2c {-o /tmp/mouse3.c /tmp/mouse3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mouse3.lus
 PASS: ./lus2lic {-2c should_work/mouse3.lus -n mouse3}
 PASS: gcc mouse3_mouse3.c mouse3_mouse3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mouse3.lus
 PASS: ./lus2lic {-o /tmp/array_concat.lic should_work/array_concat.lus}
 PASS: ./lus2lic {-ec -o /tmp/array_concat.ec should_work/array_concat.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/array_concat.c /tmp/array_concat.ec}
@@ -1014,18 +1149,21 @@ PASS: ./myec2c {-o /tmp/ex.c /tmp/ex.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ex.lus
 PASS: ./lus2lic {-2c should_work/ex.lus -n ex}
 PASS: gcc ex_ex.c ex_ex_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ex.lus
 PASS: ./lus2lic {-o /tmp/xxx.lic should_work/xxx.lus}
 PASS: ./lus2lic {-ec -o /tmp/xxx.ec should_work/xxx.lus}
 PASS: ./myec2c {-o /tmp/xxx.c /tmp/xxx.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/xxx.lus
 PASS: ./lus2lic {-2c should_work/xxx.lus -n xxx}
 PASS: gcc xxx_xxx.c xxx_xxx_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/xxx.lus
 PASS: ./lus2lic {-o /tmp/moyenne.lic should_work/moyenne.lus}
 PASS: ./lus2lic {-ec -o /tmp/moyenne.ec should_work/moyenne.lus}
 PASS: ./myec2c {-o /tmp/moyenne.c /tmp/moyenne.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/moyenne.lus
 PASS: ./lus2lic {-2c should_work/moyenne.lus -n moyenne}
 PASS: gcc moyenne_moyenne.c moyenne_moyenne_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/moyenne.lus
 PASS: ./lus2lic {-o /tmp/activation1.lic should_work/activation1.lus}
 PASS: ./lus2lic {-ec -o /tmp/activation1.ec should_work/activation1.lus}
 PASS: ./myec2c {-o /tmp/activation1.c /tmp/activation1.ec}
@@ -1043,18 +1181,21 @@ PASS: ./myec2c {-o /tmp/bug.c /tmp/bug.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bug.lus
 PASS: ./lus2lic {-2c should_work/bug.lus -n bug}
 PASS: gcc bug_bug.c bug_bug_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bug.lus
 PASS: ./lus2lic {-o /tmp/ck4.lic should_work/ck4.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck4.ec should_work/ck4.lus}
 PASS: ./myec2c {-o /tmp/ck4.c /tmp/ck4.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck4.lus
 PASS: ./lus2lic {-2c should_work/ck4.lus -n ck4}
 PASS: gcc ck4_ck4.c ck4_ck4_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck4.lus
 PASS: ./lus2lic {-o /tmp/map_red_iter.lic should_work/map_red_iter.lus}
 PASS: ./lus2lic {-ec -o /tmp/map_red_iter.ec should_work/map_red_iter.lus}
 PASS: ./myec2c {-o /tmp/map_red_iter.c /tmp/map_red_iter.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/map_red_iter.lus
 PASS: ./lus2lic {-2c should_work/map_red_iter.lus -n map_red_iter}
 PASS: gcc map_red_iter_map_red_iter.c map_red_iter_map_red_iter_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/map_red_iter.lus
 PASS: ./lus2lic {-o /tmp/p.lic should_work/p.lus}
 PASS: ./lus2lic {-ec -o /tmp/p.ec should_work/p.lus}
 PASS: ./myec2c {-o /tmp/p.c /tmp/p.ec}
@@ -1066,42 +1207,49 @@ PASS: ./myec2c {-o /tmp/struct0.c /tmp/struct0.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/struct0.lus
 PASS: ./lus2lic {-2c should_work/struct0.lus -n struct0}
 PASS: gcc struct0_struct0.c struct0_struct0_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/struct0.lus
 PASS: ./lus2lic {-o /tmp/filliter.lic should_work/filliter.lus}
 PASS: ./lus2lic {-ec -o /tmp/filliter.ec should_work/filliter.lus}
 PASS: ./myec2c {-o /tmp/filliter.c /tmp/filliter.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/filliter.lus
 PASS: ./lus2lic {-2c should_work/filliter.lus -n filliter}
 PASS: gcc filliter_filliter.c filliter_filliter_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/filliter.lus
 PASS: ./lus2lic {-o /tmp/minmax4.lic should_work/minmax4.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax4.ec should_work/minmax4.lus}
 PASS: ./myec2c {-o /tmp/minmax4.c /tmp/minmax4.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax4.lus
 PASS: ./lus2lic {-2c should_work/minmax4.lus -n minmax4}
 PASS: gcc minmax4_minmax4.c minmax4_minmax4_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax4.lus
 PASS: ./lus2lic {-o /tmp/nested.lic should_work/nested.lus}
 PASS: ./lus2lic {-ec -o /tmp/nested.ec should_work/nested.lus}
 PASS: ./myec2c {-o /tmp/nested.c /tmp/nested.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nested.lus
 PASS: ./lus2lic {-2c should_work/nested.lus -n nested}
 PASS: gcc nested_nested.c nested_nested_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nested.lus
 PASS: ./lus2lic {-o /tmp/Gyroscope.lic should_work/Gyroscope.lus}
 PASS: ./lus2lic {-ec -o /tmp/Gyroscope.ec should_work/Gyroscope.lus}
 PASS: ./myec2c {-o /tmp/Gyroscope.c /tmp/Gyroscope.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Gyroscope.lus
 PASS: ./lus2lic {-2c should_work/Gyroscope.lus -n Gyroscope}
 PASS: gcc Gyroscope_Gyroscope.c Gyroscope_Gyroscope_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/Gyroscope.lus
 PASS: ./lus2lic {-o /tmp/test_map.lic should_work/test_map.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_map.ec should_work/test_map.lus}
 PASS: ./myec2c {-o /tmp/test_map.c /tmp/test_map.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_map.lus
 PASS: ./lus2lic {-2c should_work/test_map.lus -n test_map}
 PASS: gcc test_map_test_map.c test_map_test_map_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_map.lus
 PASS: ./lus2lic {-o /tmp/followed_by.lic should_work/followed_by.lus}
 PASS: ./lus2lic {-ec -o /tmp/followed_by.ec should_work/followed_by.lus}
 PASS: ./myec2c {-o /tmp/followed_by.c /tmp/followed_by.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/followed_by.lus
 PASS: ./lus2lic {-2c should_work/followed_by.lus -n followed_by}
 PASS: gcc followed_by_followed_by.c followed_by_followed_by_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/followed_by.lus
 PASS: ./lus2lic {-o /tmp/asservi.lic should_work/asservi.lus}
 PASS: ./lus2lic {-ec -o /tmp/asservi.ec should_work/asservi.lus}
 PASS: ./myec2c {-o /tmp/asservi.c /tmp/asservi.ec}
@@ -1113,12 +1261,14 @@ PASS: ./myec2c {-o /tmp/rediter.c /tmp/rediter.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/rediter.lus
 PASS: ./lus2lic {-2c should_work/rediter.lus -n rediter}
 PASS: gcc rediter_rediter.c rediter_rediter_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/rediter.lus
 PASS: ./lus2lic {-o /tmp/mapdeRed.lic should_work/mapdeRed.lus}
 PASS: ./lus2lic {-ec -o /tmp/mapdeRed.ec should_work/mapdeRed.lus}
 PASS: ./myec2c {-o /tmp/mapdeRed.c /tmp/mapdeRed.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mapdeRed.lus
 PASS: ./lus2lic {-2c should_work/mapdeRed.lus -n mapdeRed}
 PASS: gcc mapdeRed_mapdeRed.c mapdeRed_mapdeRed_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mapdeRed.lus
 PASS: ./lus2lic {-o /tmp/modelInst.lic should_work/modelInst.lus}
 PASS: ./lus2lic {-ec -o /tmp/modelInst.ec should_work/modelInst.lus}
 PASS: ./myec2c {-o /tmp/modelInst.c /tmp/modelInst.ec}
@@ -1130,18 +1280,21 @@ PASS: ./myec2c {-o /tmp/dependeur_struct.c /tmp/dependeur_struct.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/dependeur_struct.lus
 PASS: ./lus2lic {-2c should_work/dependeur_struct.lus -n dependeur_struct}
 PASS: gcc dependeur_struct_dependeur_struct.c dependeur_struct_dependeur_struct_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/dependeur_struct.lus
 PASS: ./lus2lic {-o /tmp/minmax4_bis.lic should_work/minmax4_bis.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax4_bis.ec should_work/minmax4_bis.lus}
 PASS: ./myec2c {-o /tmp/minmax4_bis.c /tmp/minmax4_bis.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax4_bis.lus
 PASS: ./lus2lic {-2c should_work/minmax4_bis.lus -n minmax4_bis}
 PASS: gcc minmax4_bis_minmax4_bis.c minmax4_bis_minmax4_bis_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax4_bis.lus
 PASS: ./lus2lic {-o /tmp/test_struct.lic should_work/test_struct.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_struct.ec should_work/test_struct.lus}
 PASS: ./myec2c {-o /tmp/test_struct.c /tmp/test_struct.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_struct.lus
 PASS: ./lus2lic {-2c should_work/test_struct.lus -n test_struct}
 PASS: gcc test_struct_test_struct.c test_struct_test_struct_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_struct.lus
 PASS: ./lus2lic {-o /tmp/modes3x2_v4.lic should_work/modes3x2_v4.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2_v4.ec should_work/modes3x2_v4.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2_v4.c /tmp/modes3x2_v4.ec}
@@ -1151,12 +1304,14 @@ PASS: ./myec2c {-o /tmp/uu.c /tmp/uu.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/uu.lus
 PASS: ./lus2lic {-2c should_work/uu.lus -n uu}
 PASS: gcc uu_uu.c uu_uu_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/uu.lus
 PASS: ./lus2lic {-o /tmp/simpleRed.lic should_work/simpleRed.lus}
 PASS: ./lus2lic {-ec -o /tmp/simpleRed.ec should_work/simpleRed.lus}
 PASS: ./myec2c {-o /tmp/simpleRed.c /tmp/simpleRed.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/simpleRed.lus
 PASS: ./lus2lic {-2c should_work/simpleRed.lus -n simpleRed}
 PASS: gcc simpleRed_simpleRed.c simpleRed_simpleRed_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/simpleRed.lus
 PASS: ./lus2lic {-o /tmp/modes3x2_v3.lic should_work/modes3x2_v3.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2_v3.ec should_work/modes3x2_v3.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2_v3.c /tmp/modes3x2_v3.ec}
@@ -1166,36 +1321,42 @@ PASS: ./myec2c {-o /tmp/pre_x.c /tmp/pre_x.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/pre_x.lus
 PASS: ./lus2lic {-2c should_work/pre_x.lus -n pre_x}
 PASS: gcc pre_x_pre_x.c pre_x_pre_x_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/pre_x.lus
 PASS: ./lus2lic {-o /tmp/ts01.lic should_work/ts01.lus}
 PASS: ./lus2lic {-ec -o /tmp/ts01.ec should_work/ts01.lus}
 PASS: ./myec2c {-o /tmp/ts01.c /tmp/ts01.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ts01.lus
 PASS: ./lus2lic {-2c should_work/ts01.lus -n ts01}
 PASS: gcc ts01_ts01.c ts01_ts01_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/ts01.lus
 PASS: ./lus2lic {-o /tmp/_N_uu.lic should_work/_N_uu.lus}
 PASS: ./lus2lic {-ec -o /tmp/_N_uu.ec should_work/_N_uu.lus}
 PASS: ./myec2c {-o /tmp/_N_uu.c /tmp/_N_uu.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/_N_uu.lus
 PASS: ./lus2lic {-2c should_work/_N_uu.lus -n _N_uu}
 PASS: gcc _N_uu__N_uu.c _N_uu__N_uu_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/_N_uu.lus
 PASS: ./lus2lic {-o /tmp/X2.lic should_work/X2.lus}
 PASS: ./lus2lic {-ec -o /tmp/X2.ec should_work/X2.lus}
 PASS: ./myec2c {-o /tmp/X2.c /tmp/X2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/X2.lus
 PASS: ./lus2lic {-2c should_work/X2.lus -n X2}
 PASS: gcc X2_X2.c X2_X2_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/X2.lus
 PASS: ./lus2lic {-o /tmp/alias.lic should_work/alias.lus}
 PASS: ./lus2lic {-ec -o /tmp/alias.ec should_work/alias.lus}
 PASS: ./myec2c {-o /tmp/alias.c /tmp/alias.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/alias.lus
 PASS: ./lus2lic {-2c should_work/alias.lus -n alias}
 PASS: gcc alias_alias.c alias_alias_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/alias.lus
 PASS: ./lus2lic {-o /tmp/hanane.lic should_work/hanane.lus}
 PASS: ./lus2lic {-ec -o /tmp/hanane.ec should_work/hanane.lus}
 PASS: ./myec2c {-o /tmp/hanane.c /tmp/hanane.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/hanane.lus
 PASS: ./lus2lic {-2c should_work/hanane.lus -n hanane}
 PASS: gcc hanane_hanane.c hanane_hanane_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/hanane.lus
 PASS: ./lus2lic {-o /tmp/lustre.lic should_work/lustre.lus}
 PASS: ./lus2lic {-ec -o /tmp/lustre.ec should_work/lustre.lus}
 PASS: ./myec2c {-o /tmp/lustre.c /tmp/lustre.ec}
@@ -1212,84 +1373,98 @@ PASS: ./myec2c {-o /tmp/predef02.c /tmp/predef02.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/predef02.lus
 PASS: ./lus2lic {-2c should_work/predef02.lus -n predef02}
 PASS: gcc predef02_predef02.c predef02_predef02_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/predef02.lus
 PASS: ./lus2lic {-o /tmp/toto.lic should_work/toto.lus}
 PASS: ./lus2lic {-ec -o /tmp/toto.ec should_work/toto.lus}
 PASS: ./myec2c {-o /tmp/toto.c /tmp/toto.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/toto.lus
 PASS: ./lus2lic {-2c should_work/toto.lus -n toto}
 PASS: gcc toto_toto.c toto_toto_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/toto.lus
 PASS: ./lus2lic {-o /tmp/minmax6.lic should_work/minmax6.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax6.ec should_work/minmax6.lus}
 PASS: ./myec2c {-o /tmp/minmax6.c /tmp/minmax6.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minmax6.lus
 PASS: ./lus2lic {-2c should_work/minmax6.lus -n minmax6}
 PASS: gcc minmax6_minmax6.c minmax6_minmax6_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minmax6.lus
 PASS: ./lus2lic {-o /tmp/ck3.lic should_work/ck3.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck3.ec should_work/ck3.lus}
 PASS: ./myec2c {-o /tmp/ck3.c /tmp/ck3.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck3.lus
 PASS: ./lus2lic {-2c should_work/ck3.lus -n ck3}
 PASS: gcc ck3_ck3.c ck3_ck3_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck3.lus
 PASS: ./lus2lic {-o /tmp/zzz.lic should_work/zzz.lus}
 PASS: ./lus2lic {-ec -o /tmp/zzz.ec should_work/zzz.lus}
 PASS: ./myec2c {-o /tmp/zzz.c /tmp/zzz.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/zzz.lus
 PASS: ./lus2lic {-2c should_work/zzz.lus -n zzz}
 PASS: gcc zzz_zzz.c zzz_zzz_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/zzz.lus
 PASS: ./lus2lic {-o /tmp/STABLE.lic should_work/STABLE.lus}
 PASS: ./lus2lic {-ec -o /tmp/STABLE.ec should_work/STABLE.lus}
 PASS: ./myec2c {-o /tmp/STABLE.c /tmp/STABLE.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/STABLE.lus
 PASS: ./lus2lic {-2c should_work/STABLE.lus -n STABLE}
 PASS: gcc STABLE_STABLE.c STABLE_STABLE_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/STABLE.lus
 PASS: ./lus2lic {-o /tmp/mapiter.lic should_work/mapiter.lus}
 PASS: ./lus2lic {-ec -o /tmp/mapiter.ec should_work/mapiter.lus}
 PASS: ./myec2c {-o /tmp/mapiter.c /tmp/mapiter.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/mapiter.lus
 PASS: ./lus2lic {-2c should_work/mapiter.lus -n mapiter}
 PASS: gcc mapiter_mapiter.c mapiter_mapiter_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/mapiter.lus
 PASS: ./lus2lic {-o /tmp/tuple.lic should_work/tuple.lus}
 PASS: ./lus2lic {-ec -o /tmp/tuple.ec should_work/tuple.lus}
 PASS: ./myec2c {-o /tmp/tuple.c /tmp/tuple.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/tuple.lus
 PASS: ./lus2lic {-2c should_work/tuple.lus -n tuple}
 PASS: gcc tuple_tuple.c tuple_tuple_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/tuple.lus
 PASS: ./lus2lic {-o /tmp/call02.lic should_work/call02.lus}
 PASS: ./lus2lic {-ec -o /tmp/call02.ec should_work/call02.lus}
 PASS: ./myec2c {-o /tmp/call02.c /tmp/call02.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/call02.lus
 PASS: ./lus2lic {-2c should_work/call02.lus -n call02}
 PASS: gcc call02_call02.c call02_call02_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/call02.lus
 PASS: ./lus2lic {-o /tmp/ck7.lic should_work/ck7.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck7.ec should_work/ck7.lus}
 PASS: ./myec2c {-o /tmp/ck7.c /tmp/ck7.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck7.lus
 PASS: ./lus2lic {-2c should_work/ck7.lus -n ck7}
 PASS: gcc ck7_ck7.c ck7_ck7_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck7.lus
 PASS: ./lus2lic {-o /tmp/nc10.lic should_work/nc10.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc10.ec should_work/nc10.lus}
 PASS: ./myec2c {-o /tmp/nc10.c /tmp/nc10.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc10.lus
 PASS: ./lus2lic {-2c should_work/nc10.lus -n nc10}
 PASS: gcc nc10_nc10.c nc10_nc10_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc10.lus
 PASS: ./lus2lic {-o /tmp/triSel.lic should_work/triSel.lus}
 PASS: ./lus2lic {-ec -o /tmp/triSel.ec should_work/triSel.lus}
 PASS: ./myec2c {-o /tmp/triSel.c /tmp/triSel.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/triSel.lus
 PASS: ./lus2lic {-2c should_work/triSel.lus -n triSel}
 PASS: gcc triSel_triSel.c triSel_triSel_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/triSel.lus
 PASS: ./lus2lic {-o /tmp/redoptest.lic should_work/redoptest.lus}
 PASS: ./lus2lic {-ec -o /tmp/redoptest.ec should_work/redoptest.lus}
 PASS: ./myec2c {-o /tmp/redoptest.c /tmp/redoptest.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/redoptest.lus
 PASS: ./lus2lic {-2c should_work/redoptest.lus -n redoptest}
 PASS: gcc redoptest_redoptest.c redoptest_redoptest_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/redoptest.lus
 PASS: ./lus2lic {-o /tmp/flo.lic should_work/flo.lus}
 PASS: ./lus2lic {-ec -o /tmp/flo.ec should_work/flo.lus}
 PASS: ./myec2c {-o /tmp/flo.c /tmp/flo.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/flo.lus
 PASS: ./lus2lic {-2c should_work/flo.lus -n flo}
 PASS: gcc flo_flo.c flo_flo_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/flo.lus
 PASS: ./lus2lic {-o /tmp/cond01.lic should_work/cond01.lus}
 PASS: ./lus2lic {-ec -o /tmp/cond01.ec should_work/cond01.lus}
 PASS: ./myec2c {-o /tmp/cond01.c /tmp/cond01.ec}
@@ -1301,30 +1476,35 @@ PASS: ./myec2c {-o /tmp/test_boolred.c /tmp/test_boolred.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/test_boolred.lus
 PASS: ./lus2lic {-2c should_work/test_boolred.lus -n test_boolred}
 PASS: gcc test_boolred_test_boolred.c test_boolred_test_boolred_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_boolred.lus
 PASS: ./lus2lic {-o /tmp/shiftFill_ludic.lic should_work/shiftFill_ludic.lus}
 PASS: ./lus2lic {-ec -o /tmp/shiftFill_ludic.ec should_work/shiftFill_ludic.lus}
 PASS: ./myec2c {-o /tmp/shiftFill_ludic.c /tmp/shiftFill_ludic.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/shiftFill_ludic.lus
 PASS: ./lus2lic {-2c should_work/shiftFill_ludic.lus -n shiftFill_ludic}
 PASS: gcc shiftFill_ludic_shiftFill_ludic.c shiftFill_ludic_shiftFill_ludic_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/shiftFill_ludic.lus
 PASS: ./lus2lic {-o /tmp/after.lic should_work/after.lus}
 PASS: ./lus2lic {-ec -o /tmp/after.ec should_work/after.lus}
 PASS: ./myec2c {-o /tmp/after.c /tmp/after.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/after.lus
 PASS: ./lus2lic {-2c should_work/after.lus -n after}
 PASS: gcc after_after.c after_after_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/after.lus
 PASS: ./lus2lic {-o /tmp/arrays.lic should_work/arrays.lus}
 PASS: ./lus2lic {-ec -o /tmp/arrays.ec should_work/arrays.lus}
 PASS: ./myec2c {-o /tmp/arrays.c /tmp/arrays.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/arrays.lus
 PASS: ./lus2lic {-2c should_work/arrays.lus -n arrays}
 PASS: gcc arrays_arrays.c arrays_arrays_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/arrays.lus
 PASS: ./lus2lic {-o /tmp/nc3.lic should_work/nc3.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc3.ec should_work/nc3.lus}
 PASS: ./myec2c {-o /tmp/nc3.c /tmp/nc3.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/nc3.lus
 PASS: ./lus2lic {-2c should_work/nc3.lus -n nc3}
 PASS: gcc nc3_nc3.c nc3_nc3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/nc3.lus
 PASS: ./lus2lic {-o /tmp/speedcontrol.lic should_work/speedcontrol.lus}
 PASS: ./lus2lic {-ec -o /tmp/speedcontrol.ec should_work/speedcontrol.lus}
 PASS: ./myec2c {-o /tmp/speedcontrol.c /tmp/speedcontrol.ec}
@@ -1336,18 +1516,21 @@ PASS: ./myec2c {-o /tmp/iterate.c /tmp/iterate.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/iterate.lus
 PASS: ./lus2lic {-2c should_work/iterate.lus -n iterate}
 PASS: gcc iterate_iterate.c iterate_iterate_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/iterate.lus
 PASS: ./lus2lic {-o /tmp/PCOND.lic should_work/PCOND.lus}
 PASS: ./lus2lic {-ec -o /tmp/PCOND.ec should_work/PCOND.lus}
 PASS: ./myec2c {-o /tmp/PCOND.c /tmp/PCOND.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/PCOND.lus
 PASS: ./lus2lic {-2c should_work/PCOND.lus -n PCOND}
 PASS: gcc PCOND_PCOND.c PCOND_PCOND_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/PCOND.lus
 PASS: ./lus2lic {-o /tmp/EDGE.lic should_work/EDGE.lus}
 PASS: ./lus2lic {-ec -o /tmp/EDGE.ec should_work/EDGE.lus}
 PASS: ./myec2c {-o /tmp/EDGE.c /tmp/EDGE.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/EDGE.lus
 PASS: ./lus2lic {-2c should_work/EDGE.lus -n EDGE}
 PASS: gcc EDGE_EDGE.c EDGE_EDGE_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/EDGE.lus
 PASS: ./lus2lic {-o /tmp/call03.lic should_work/call03.lus}
 PASS: ./lus2lic {-ec -o /tmp/call03.ec should_work/call03.lus}
 PASS: ./myec2c {-o /tmp/call03.c /tmp/call03.ec}
@@ -1363,18 +1546,21 @@ PASS: ./myec2c {-o /tmp/count.c /tmp/count.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/count.lus
 PASS: ./lus2lic {-2c should_work/count.lus -n count}
 PASS: gcc count_count.c count_count_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/count.lus
 PASS: ./lus2lic {-o /tmp/ck2.lic should_work/ck2.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck2.ec should_work/ck2.lus}
 PASS: ./myec2c {-o /tmp/ck2.c /tmp/ck2.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck2.lus
 PASS: ./lus2lic {-2c should_work/ck2.lus -n ck2}
 PASS: gcc ck2_ck2.c ck2_ck2_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck2.lus
 PASS: ./lus2lic {-o /tmp/X.lic should_work/X.lus}
 PASS: ./lus2lic {-ec -o /tmp/X.ec should_work/X.lus}
 PASS: ./myec2c {-o /tmp/X.c /tmp/X.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/X.lus
 PASS: ./lus2lic {-2c should_work/X.lus -n X}
 PASS: gcc X_X.c X_X_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/X.lus
 PASS: ./lus2lic {-o /tmp/Condact.lic should_work/Condact.lus}
 PASS: ./lus2lic {-ec -o /tmp/Condact.ec should_work/Condact.lus}
 PASS: ./myec2c {-o /tmp/Condact.c /tmp/Condact.ec}
@@ -1386,18 +1572,21 @@ PASS: ./myec2c {-o /tmp/poussoir.c /tmp/poussoir.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/poussoir.lus
 PASS: ./lus2lic {-2c should_work/poussoir.lus -n poussoir}
 PASS: gcc poussoir_poussoir.c poussoir_poussoir_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/poussoir.lus
 PASS: ./lus2lic {-o /tmp/SWITCH1.lic should_work/SWITCH1.lus}
 PASS: ./lus2lic {-ec -o /tmp/SWITCH1.ec should_work/SWITCH1.lus}
 PASS: ./myec2c {-o /tmp/SWITCH1.c /tmp/SWITCH1.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/SWITCH1.lus
 PASS: ./lus2lic {-2c should_work/SWITCH1.lus -n SWITCH1}
 PASS: gcc SWITCH1_SWITCH1.c SWITCH1_SWITCH1_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/SWITCH1.lus
 PASS: ./lus2lic {-o /tmp/clock1_2ms.lic should_work/clock1_2ms.lus}
 PASS: ./lus2lic {-ec -o /tmp/clock1_2ms.ec should_work/clock1_2ms.lus}
 PASS: ./myec2c {-o /tmp/clock1_2ms.c /tmp/clock1_2ms.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/clock1_2ms.lus
 PASS: ./lus2lic {-2c should_work/clock1_2ms.lus -n clock1_2ms}
 PASS: gcc clock1_2ms_clock1_2ms.c clock1_2ms_clock1_2ms_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/clock1_2ms.lus
 PASS: ./lus2lic {-o /tmp/decl.lic should_work/decl.lus}
 PASS: ./lus2lic {-ec -o /tmp/decl.ec should_work/decl.lus}
 PASS: ./myec2c {-o /tmp/decl.c /tmp/decl.ec}
@@ -1410,18 +1599,21 @@ PASS: ./myec2c {-o /tmp/bred_lv4.c /tmp/bred_lv4.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/bred_lv4.lus
 PASS: ./lus2lic {-2c should_work/bred_lv4.lus -n bred_lv4}
 PASS: gcc bred_lv4_bred_lv4.c bred_lv4_bred_lv4_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/bred_lv4.lus
 PASS: ./lus2lic {-o /tmp/trivial2.lic should_work/trivial2.lus}
 PASS: ./lus2lic {-ec -o /tmp/trivial2.ec should_work/trivial2.lus}
 PASS: ./myec2c {-o /tmp/trivial2.c /tmp/trivial2.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/trivial2.lus
 PASS: ./lus2lic {-2c should_work/trivial2.lus -n trivial2}
 PASS: gcc trivial2_trivial2.c trivial2_trivial2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/trivial2.lus
 PASS: ./lus2lic {-o /tmp/param_node.lic should_work/param_node.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node.ec should_work/param_node.lus}
 PASS: ./myec2c {-o /tmp/param_node.c /tmp/param_node.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/param_node.lus
 PASS: ./lus2lic {-2c should_work/param_node.lus -n param_node}
 PASS: gcc param_node_param_node.c param_node_param_node_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/param_node.lus
 PASS: ./lus2lic {-o /tmp/simple.lic should_work/simple.lus}
 PASS: ./lus2lic {-ec -o /tmp/simple.ec should_work/simple.lus}
 PASS: ./myec2c {-o /tmp/simple.c /tmp/simple.ec}
@@ -1440,6 +1632,7 @@ PASS: ./myec2c {-o /tmp/minus.c /tmp/minus.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/minus.lus
 PASS: ./lus2lic {-2c should_work/minus.lus -n minus}
 PASS: gcc minus_minus.c minus_minus_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/minus.lus
 PASS: ./lus2lic {-o /tmp/remplissage-1.0.lic should_work/remplissage-1.0.lus}
 PASS: ./lus2lic {-ec -o /tmp/remplissage-1.0.ec should_work/remplissage-1.0.lus}
 PASS: ./myec2c {-o /tmp/remplissage-1.0.c /tmp/remplissage-1.0.ec}
@@ -1515,7 +1708,7 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		1345
-# of unexpected failures	100
+# of expected passes		1508
+# of unexpected failures	130
 # of unexpected successes	21
 # of expected failures		37
diff --git a/test/lus2lic.tests/non-reg.exp b/test/lus2lic.tests/non-reg.exp
index 4faa6118..7418a0bd 100644
--- a/test/lus2lic.tests/non-reg.exp
+++ b/test/lus2lic.tests/non-reg.exp
@@ -17,13 +17,13 @@ foreach f $ok_files {
     set id2 [should_work "Generate ec code  " "$lus2lic" "-ec -o $bf.ec $f"]
     wait -i $id2
 
-    if { [emptyfile "$bf.ec"] } {
+    if { [nonemptyfile "$bf.ec"] } {
         set id3 [should_work "Try ec2c on the result" "$ec2c" "-o $bf.c $bf.ec"]
         wait -i $id3
         catch { exp_close -i $id3 }
         catch { exp_wait  -i $id3 } output
     }
-    if { [emptyfile "$bf.c"] } {
+    if { [nonemptyfile "$bf.c"] } {
         set id4 [should_work "Try to compare lus2lic -exec and ecexe" "$test_lus2lic_no_node" "$f"]
         catch { exp_close -i $id4 }
         catch { exp_wait  -i $id4 } output
@@ -31,9 +31,9 @@ foreach f $ok_files {
         set id5 [should_work "Generate c code  " "$lus2lic" "-2c $f -n $basef"]
         wait -i $id5
 
-        if { [emptyfile "${basef}_${basef}.c"] } {
+        if { [nonemptyfile "${basef}_${basef}.c"] } {
             eval spawn "rm -f a.out"
-            if { [emptyfile "${basef}_${basef}_ext.c"] } {
+            if { [nonemptyfile "${basef}_${basef}_ext.c"] } {
                 set id6 [should_work "Check that the generated C code compiles  " "gcc ${basef}_${basef}.c ${basef}_${basef}_ext.c ${basef}_${basef}_loop.c"]
             } else {
                 set id6 [should_work "Check that the generated C code compiles  " "gcc ${basef}_${basef}.c ${basef}_${basef}_loop.c"]
@@ -41,9 +41,13 @@ foreach f $ok_files {
             wait -i $id6
             catch { exp_close -i $id6 }
             catch { exp_wait  -i $id6 } output
-                            
-        
-
+         
+            # do_test is used to avoid to perforn a comparison on files that contains extern nodes
+            if { [nonemptyfile a.out] && [contains_extern "$f"] } {
+                set id7 [should_work "Try to compare lus2lic -exec and -2c" "$compare_exec_and_2c" "$f"]
+                catch { exp_close -i $id7 }
+                catch { exp_wait  -i $id7 } output                   
+                }
         }
         catch { exp_close -i $id5 }
         catch { exp_wait  -i $id5 } output
diff --git a/test/should_work/test_arrow.lus b/test/should_work/test_arrow.lus
new file mode 100644
index 00000000..58dfa792
--- /dev/null
+++ b/test/should_work/test_arrow.lus
@@ -0,0 +1,5 @@
+node test_arrow(i1,i2:int) returns(o1,o2:int);
+let
+  o1 = i1 -> pre o1 + 1;
+  o2 = i2 -> pre o2 + 1;
+tel
diff --git a/test/site.exp b/test/site.exp
index 9eabca93..4c109584 100644
--- a/test/site.exp
+++ b/test/site.exp
@@ -123,8 +123,18 @@ proc should_fail { test_name fail_kind command_line args } {
     return $spawn_id
 }
 
-proc emptyfile {filename} {
+proc nonemptyfile {filename} {
   set rc [catch {file size $filename} size]
   return [expr {$rc == 0 && $size > 0}]
 }
 
+package require fileutil
+
+proc contains_extern {f} {
+
+    set pattern {extern}    
+    set match  [llength [fileutil::grep $pattern $f]]
+    return [expr {$match == 0 }]
+}
+
+
diff --git a/todo.org b/todo.org
index 08836fb3..e6ccf8b4 100644
--- a/todo.org
+++ b/todo.org
@@ -102,56 +102,37 @@ et que ca marche tres bien. Ce qui prouve bien que ca ne sert a rien cette affai
 ** TODO divergence -exec et -2c
    - State "TODO"       from ""           [2014-07-11 Fri 12:02]
 
-../utils/compare_exec_and_2c should_work/ck5.lus
-../utils/compare_exec_and_2c should_work/ck6.lus
-../utils/compare_exec_and_2c should_work/testPilote.lus
-../utils/compare_exec_and_2c should_work/call06.lus
-../utils/compare_exec_and_2c should_work/testCapt.lus
-../utils/compare_exec_and_2c should_work/minmax5.lus
-../utils/compare_exec_and_2c should_work/call05.lus
-../utils/compare_exec_and_2c should_work/test_node_expand2.lus
-../utils/compare_exec_and_2c should_work/minmax5_random.lus
-../utils/compare_exec_and_2c should_work/test_node_expand.lus
-../utils/compare_exec_and_2c should_work/X6.lus
-../utils/compare_exec_and_2c should_work/sincos.lus
-../utils/compare_exec_and_2c should_work/test_extern.lus
-../utils/compare_exec_and_2c should_work/clock_ite.lus
-../utils/compare_exec_and_2c should_work/integrator.lus
-../utils/compare_exec_and_2c should_work/complex.lus
-../utils/compare_exec_and_2c should_work/PCOND1.lus
-../utils/compare_exec_and_2c should_work/call.lus
-../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
-../utils/compare_exec_and_2c should_work/sample_time_change.lus
-../utils/compare_exec_and_2c should_work/CURRENT.lus
-../utils/compare_exec_and_2c should_work/multiclock.lus
-../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
-../utils/compare_exec_and_2c should_work/multipar.lus
-../utils/compare_exec_and_2c should_work/pack1.lus
-../utils/compare_exec_and_2c should_work/bob.lus
-../utils/compare_exec_and_2c should_work/test_condact.lus
-../utils/compare_exec_and_2c should_work/ck4.lus
-../utils/compare_exec_and_2c should_work/filliter.lus
-../utils/compare_exec_and_2c should_work/X2.lus
-../utils/compare_exec_and_2c should_work/hanane.lus
-../utils/compare_exec_and_2c should_work/ck3.lus
-../utils/compare_exec_and_2c should_work/ck7.lus
-../utils/compare_exec_and_2c should_work/PCOND.lus
-../utils/compare_exec_and_2c should_work/ck2.lus
-../utils/compare_exec_and_2c should_work/X.lus
-../utils/compare_exec_and_2c should_work/clock1_2ms.lus
-
-l 45
-            eval spawn "grep extern $f || { echo xxx > do_test$f.tmp } "
-            # do_test is used to avoid to perforn a comparison on files that contains extern nodes
-            if { [emptyfile a.out] && [emptyfile do_testt$f.tmp] } {
-                set id7 [should_work "Try to compare lus2lic -exec and -2c" "$compare_exec_and_2c" "$f"]
-                catch { exp_close -i $id7 }
-                catch { exp_wait  -i $id7 } output
-
-non-reg tests: compare lus2lic -exec and -2c.
- 
-# of expected passe s		1339 -> 1511
-# of unexpected failures	100 -> 139
+
+1. ../utils/compare_exec_and_2c should_work/ck5.lus
+2. ../utils/compare_exec_and_2c should_work/testPilote.lus
+3. ../utils/compare_exec_and_2c should_work/testCapt.lus
+4. ../utils/compare_exec_and_2c should_work/test_node_expand2.lus
+5. ../utils/compare_exec_and_2c should_work/test_node_expand.lus
+6. ../utils/compare_exec_and_2c should_work/X6.lus
+7. ../utils/compare_exec_and_2c should_work/sincos.lus
+8. ../utils/compare_exec_and_2c should_work/clock_ite.lus
+9. ../utils/compare_exec_and_2c should_work/integrator.lus
+10. ../utils/compare_exec_and_2c should_work/complex.lus
+11. ../utils/compare_exec_and_2c should_work/PCOND1.lus
+12. ../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
+13. ../utils/compare_exec_and_2c should_work/sample_time_change.lus
+14. ../utils/compare_exec_and_2c should_work/CURRENT.lus
+15. ../utils/compare_exec_and_2c should_work/multiclock.lus
+16. ../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
+17. ../utils/compare_exec_and_2c should_work/multipar.lus
+18. ../utils/compare_exec_and_2c should_work/pack1.lus
+19. ../utils/compare_exec_and_2c should_work/bob.lus
+20. ../utils/compare_exec_and_2c should_work/test_condact.lus
+21. ../utils/compare_exec_and_2c should_work/ck4.lus
+22. ../utils/compare_exec_and_2c should_work/filliter.lus
+23. ../utils/compare_exec_and_2c should_work/X2.lus
+24. ../utils/compare_exec_and_2c should_work/hanane.lus
+25. ../utils/compare_exec_and_2c should_work/ck3.lus
+26. ../utils/compare_exec_and_2c should_work/ck7.lus
+27. ../utils/compare_exec_and_2c should_work/PCOND.lus
+28. ../utils/compare_exec_and_2c should_work/ck2.lus
+29. ../utils/compare_exec_and_2c should_work/X.lus
+30. ../utils/compare_exec_and_2c should_work/clock1_2ms.lus
 
 
 
diff --git a/utils/compare_exec_and_2c b/utils/compare_exec_and_2c
new file mode 100755
index 00000000..b8ea179f
--- /dev/null
+++ b/utils/compare_exec_and_2c
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# compares with lurette the results of:
+#   lus2lic -ec and ecexe
+#   lus2lic -exec
+
+lustre_file=$1
+node=`basename $lustre_file .lus`
+_oracle=_"$node"_oracle.lus
+oracle="$node"_oracle
+lv4="$node"_lv4.lus
+ec="$node".ec
+lv4_node="$node__$node"
+env=_"$node"_env.lut
+
+
+set -x verbose #echo on
+
+if
+./lus2lic $lustre_file -n $node --gen-autotest -np;
+then
+   echo "lus2lic --gen-autotest done" 
+else
+    echo "Error"
+    exit 2
+fi
+
+
+cat $lustre_file  >> $_oracle;
+
+
+if
+    ./lus2lic $lustre_file -n $node  -2c -cc;
+    
+then
+    echo "lus2lic -2c done"
+else
+    echo "Error"
+    exit 2
+fi
+
+PORT=2000
+./call-via-socket -server -addr 127.0.0.1 -port $PORT ./a.out &
+
+export PATH=/usr/local/tools/lustre/bin/:$PATH
+if
+    
+./lurettetop  -p 6  -seed 42 \
+    -rp "sut:socket:127.0.0.1:$PORT" \
+    -rp "env:lutin:$env" \
+    -rp "oracle:v6:$_oracle:$oracle" \
+    -go -l 10 -ns2c --stop-on-oracle-error;
+then
+echo "Comparison of lus2lic -2c and lus2lic -exec with lurette on $lustre_file: ok"
+echo "lurettetop ok"
+else
+     echo "error"
+     exit 2
+fi
+exit 0
-- 
GitLab