From 5c16363d5226928287fb4f6e2bee34477006e5d6 Mon Sep 17 00:00:00 2001
From: Erwan Jahier <jahier@imag.fr>
Date: Tue, 5 Aug 2014 17:14:16 +0200
Subject: [PATCH] non-reg tests: try to remove tests that fail for bad reasons.

For instance, do not launch tests that perform result comparison (via
lurette) on files that contains extern nodes (as they cannot be
executed) or package.  Package do not work because appending the
tested lustre file with the generated oracle as I do is wrong in
presence of package.

Moreover, my current test process is not able to test programs which
main node IOs are not all on the base clock. I have fixed this by
patching the examples.

# of expected passes 		1508 -> 1512
# of unexpected failures	130 -> 84
---
 test/lus2lic.sum                              | 156 +++++++-----------
 test/lus2lic.tests/non-reg.exp                |  49 +++---
 test/lus2lic.time                             |   2 +
 test/should_work/CURRENT.lus                  |   7 +-
 test/should_work/PCOND.lus                    |  43 ++++-
 test/should_work/PCOND1.lus                   |  28 +++-
 test/should_work/X.lus                        |  14 +-
 test/should_work/X6.lus                       |  23 +++
 test/should_work/bob.lus                      |   6 +-
 test/should_work/ck2.lus                      |  13 +-
 test/should_work/ck3.lus                      |  12 +-
 test/should_work/ck4.lus                      |   7 +-
 test/should_work/ck7.lus                      |  12 ++
 test/should_work/clock1_2ms.lus               |   9 +-
 test/should_work/clock_ite.lus                |  10 +-
 test/should_work/filliter.lus                 |  10 +-
 test/should_work/hanane.lus                   |   7 +-
 test/should_work/lustre_test1_ok.lus          |   8 +
 test/should_work/multiclock.lus               |  11 +-
 ...ge.lus => sample_time_change_MainNode.lus} |   3 +-
 test/should_work/test_merge.lus               |  10 ++
 test/site.exp                                 |  33 +++-
 todo.org                                      | 110 ++++++++----
 utils/compare_exec_and_2c                     |   2 +-
 24 files changed, 405 insertions(+), 180 deletions(-)
 rename test/should_work/{sample_time_change.lus => sample_time_change_MainNode.lus} (97%)

diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index ff24668f..f97a4b7a 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jul 11 16:15:55 2014
+Test Run By jahier on Thu Aug  7 11:48:30 2014
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -33,7 +33,6 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 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
@@ -47,14 +46,12 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck6.lus
 PASS: ./lus2lic {-2c should_work/ck6.lus -n ck6}
 PASS: gcc ck6_ck6.c ck6_ck6_ext.c ck6_ck6_loop.c 
 PASS: ./lus2lic {-o /tmp/Gyroscope2.lic should_work/Gyroscope2.lus}
@@ -81,17 +78,14 @@ 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}
@@ -102,7 +96,6 @@ 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}
-PASS: ../utils/test_lus2lic_no_node should_work/t0.lus
 PASS: ./lus2lic {-2c should_work/t0.lus -n t0}
 PASS: gcc t0_t0.c t0_t0_loop.c 
 PASS: ./lus2lic {-o /tmp/lucky.lic should_work/lucky.lus}
@@ -171,7 +164,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call06.lus
 PASS: ./lus2lic {-2c should_work/call06.lus -n call06}
 PASS: gcc call06_call06.c call06_call06_ext.c call06_call06_loop.c 
 PASS: ./lus2lic {-o /tmp/deSimone.lic should_work/deSimone.lus}
@@ -212,10 +204,8 @@ 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}
@@ -247,7 +237,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packageTableau.lus
 PASS: ./lus2lic {-2c should_work/packageTableau.lus -n packageTableau}
 PASS: ./lus2lic {-o /tmp/test_poly.lic should_work/test_poly.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_poly.ec should_work/test_poly.lus}
@@ -266,7 +255,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/minmax5.lus
 PASS: ./lus2lic {-2c should_work/minmax5.lus -n minmax5}
 PASS: gcc minmax5_minmax5.c minmax5_minmax5_ext.c minmax5_minmax5_loop.c 
 PASS: ./lus2lic {-o /tmp/mm1.lic should_work/mm1.lus}
@@ -293,19 +281,16 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call05.lus
 PASS: ./lus2lic {-2c should_work/call05.lus -n call05}
 PASS: gcc call05_call05.c call05_call05_ext.c call05_call05_loop.c 
 PASS: ./lus2lic {-o /tmp/Watch.lic should_work/Watch.lus}
 PASS: ./lus2lic {-ec -o /tmp/Watch.ec should_work/Watch.lus}
 PASS: ./myec2c {-o /tmp/Watch.c /tmp/Watch.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Watch.lus
 PASS: ./lus2lic {-2c should_work/Watch.lus -n Watch}
 PASS: gcc Watch_Watch.c Watch_Watch_ext.c Watch_Watch_loop.c 
 PASS: ./lus2lic {-o /tmp/testBoite.lic should_work/testBoite.lus}
 PASS: ./lus2lic {-ec -o /tmp/testBoite.ec should_work/testBoite.lus}
 PASS: ./myec2c {-o /tmp/testBoite.c /tmp/testBoite.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testBoite.lus
 PASS: ./lus2lic {-2c should_work/testBoite.lus -n testBoite}
 PASS: ./lus2lic {-o /tmp/node_caller1.lic should_work/node_caller1.lus}
 PASS: ./lus2lic {-ec -o /tmp/node_caller1.ec should_work/node_caller1.lus}
@@ -359,7 +344,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/minmax5_random.lus
 PASS: ./lus2lic {-2c should_work/minmax5_random.lus -n minmax5_random}
 PASS: gcc minmax5_random_minmax5_random.c minmax5_random_minmax5_random_ext.c minmax5_random_minmax5_random_loop.c 
 PASS: ./lus2lic {-o /tmp/matrice2.lic should_work/matrice2.lus}
@@ -421,6 +405,9 @@ 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}
+PASS: ./lus2lic {-2c should_work/array_concat2.lus -n array_concat2}
+PASS: gcc array_concat2_array_concat2.c array_concat2_array_concat2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/array_concat2.lus
 PASS: ./lus2lic {-o /tmp/is_stable.lic should_work/is_stable.lus}
 PASS: ./lus2lic {-ec -o /tmp/is_stable.ec should_work/is_stable.lus}
 PASS: ./myec2c {-o /tmp/is_stable.c /tmp/is_stable.ec}
@@ -431,12 +418,10 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_clash.lus
 PASS: ./lus2lic {-2c should_work/test_clash.lus -n test_clash}
 PASS: ./lus2lic {-o /tmp/model2.lic should_work/model2.lus}
 PASS: ./lus2lic {-ec -o /tmp/model2.ec should_work/model2.lus}
 PASS: ./myec2c {-o /tmp/model2.c /tmp/model2.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/model2.lus
 PASS: ./lus2lic {-2c should_work/model2.lus -n model2}
 PASS: ./lus2lic {-o /tmp/onlyroll2.lic should_work/onlyroll2.lus}
 PASS: ./lus2lic {-ec -o /tmp/onlyroll2.ec should_work/onlyroll2.lus}
@@ -452,13 +437,10 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou
 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: without any option: ./lus2lic {-o /tmp/X6.lic should_work/X6.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/X6.ec should_work/X6.lus}
 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
+FAIL: Generate c code  : ./lus2lic {-2c should_work/X6.lus -n X6}
 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}
@@ -469,7 +451,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/polymorphic_pack.lus
 PASS: ./lus2lic {-2c should_work/polymorphic_pack.lus -n polymorphic_pack}
 PASS: ./lus2lic {-o /tmp/COUNTER.lic should_work/COUNTER.lus}
 PASS: ./lus2lic {-ec -o /tmp/COUNTER.ec should_work/COUNTER.lus}
@@ -562,7 +543,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/pilote-1.0.lus
 PASS: ./lus2lic {-2c should_work/pilote-1.0.lus -n pilote-1.0}
 PASS: ./lus2lic {-o /tmp/trivial.lic should_work/trivial.lus}
 PASS: ./lus2lic {-ec -o /tmp/trivial.ec should_work/trivial.lus}
@@ -574,7 +554,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packs.lus
 PASS: ./lus2lic {-2c should_work/packs.lus -n packs}
 PASS: ./lus2lic {-o /tmp/sincos.lic should_work/sincos.lus}
 PASS: ./lus2lic {-ec -o /tmp/sincos.ec should_work/sincos.lus}
@@ -586,7 +565,6 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/newpacks.lus
 PASS: ./lus2lic {-2c should_work/newpacks.lus -n newpacks}
 PASS: ./lus2lic {-o /tmp/morel5.lic should_work/morel5.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel5.ec should_work/morel5.lus}
@@ -633,13 +611,11 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_extern.lus
 PASS: ./lus2lic {-2c should_work/test_extern.lus -n test_extern}
 PASS: gcc test_extern_test_extern.c test_extern_test_extern_ext.c test_extern_test_extern_loop.c 
 PASS: ./lus2lic {-o /tmp/deconne.lic should_work/deconne.lus}
 PASS: ./lus2lic {-ec -o /tmp/deconne.ec should_work/deconne.lus}
 PASS: ./myec2c {-o /tmp/deconne.c /tmp/deconne.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/deconne.lus
 PASS: ./lus2lic {-2c should_work/deconne.lus -n deconne}
 PASS: gcc deconne_deconne.c deconne_deconne_ext.c deconne_deconne_loop.c 
 PASS: ./lus2lic {-o /tmp/noAlarm.lic should_work/noAlarm.lus}
@@ -652,7 +628,7 @@ 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: ../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
@@ -664,6 +640,9 @@ FAIL: Generate c code  : ./lus2lic {-2c should_work/morel4.lus -n morel4}
 FAIL: Check that the generated C code compiles  : gcc morel4_morel4.c morel4_morel4_loop.c 
 PASS: ./lus2lic {-o /tmp/trivial_array.lic should_work/trivial_array.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/trivial_array.ec should_work/trivial_array.lus}
+PASS: ./lus2lic {-2c should_work/trivial_array.lus -n trivial_array}
+PASS: gcc trivial_array_trivial_array.c trivial_array_trivial_array_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/trivial_array.lus
 PASS: ./lus2lic {-o /tmp/param_node4.lic should_work/param_node4.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node4.ec should_work/param_node4.lus}
 PASS: ./myec2c {-o /tmp/param_node4.c /tmp/param_node4.ec}
@@ -765,10 +744,8 @@ 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}
@@ -779,7 +756,6 @@ 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}
-PASS: ../utils/test_lus2lic_no_node should_work/declaration.lus
 PASS: ./lus2lic {-2c should_work/declaration.lus -n declaration}
 PASS: gcc declaration_declaration.c declaration_declaration_loop.c 
 PASS: ./lus2lic {-o /tmp/PCOND1.lic should_work/PCOND1.lus}
@@ -806,7 +782,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call.lus
 PASS: ./lus2lic {-2c should_work/call.lus -n call}
 PASS: gcc call_call.c call_call_ext.c call_call_loop.c 
 PASS: ./lus2lic {-o /tmp/mouse1.lic should_work/mouse1.lus}
@@ -819,10 +794,10 @@ 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: ../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: ../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}
@@ -833,10 +808,11 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Int.lus
 PASS: ./lus2lic {-2c should_work/Int.lus -n Int}
 FAIL: without any option: ./lus2lic {-o /tmp/tranche.lic should_work/tranche.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/tranche.ec should_work/tranche.lus}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/tranche.lus -n tranche}
+FAIL: Check that the generated C code compiles  : gcc tranche_tranche.c tranche_tranche_loop.c 
 PASS: ./lus2lic {-o /tmp/t2.lic should_work/t2.lus}
 PASS: ./lus2lic {-ec -o /tmp/t2.ec should_work/t2.lus}
 PASS: ./myec2c {-o /tmp/t2.c /tmp/t2.ec}
@@ -847,7 +823,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/arbitre.lus
 PASS: ./lus2lic {-2c should_work/arbitre.lus -n arbitre}
 FAIL: Check that the generated C code compiles  : gcc arbitre_arbitre.c arbitre_arbitre_ext.c arbitre_arbitre_loop.c 
 PASS: ./lus2lic {-o /tmp/test_const.lic should_work/test_const.lus}
@@ -860,19 +835,20 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/when_tuple.lus
 PASS: ./lus2lic {-2c should_work/when_tuple.lus -n when_tuple}
 FAIL: Check that the generated C code compiles  : gcc when_tuple_when_tuple.c when_tuple_when_tuple_ext.c when_tuple_when_tuple_loop.c 
 PASS: ./lus2lic {-o /tmp/carV2.lic should_work/carV2.lus}
 PASS: ./lus2lic {-ec -o /tmp/carV2.ec should_work/carV2.lus}
 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}
+PASS: ./lus2lic {-2c should_work/test_merge.lus -n test_merge}
+PASS: gcc test_merge_test_merge.c test_merge_test_merge_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_merge.lus
 PASS: ./lus2lic {-o /tmp/FillFollowedByRed.lic should_work/FillFollowedByRed.lus}
 PASS: ./lus2lic {-ec -o /tmp/FillFollowedByRed.ec should_work/FillFollowedByRed.lus}
 PASS: ./myec2c {-o /tmp/FillFollowedByRed.c /tmp/FillFollowedByRed.ec}
@@ -880,17 +856,9 @@ 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
@@ -911,7 +879,7 @@ 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: ../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
@@ -930,13 +898,11 @@ 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}
-PASS: ./lus2lic {-ec -o /tmp/multiclock.ec should_work/multiclock.lus}
-PASS: ./myec2c {-o /tmp/multiclock.c /tmp/multiclock.ec}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/bug_map_fby.lus -n bug_map_fby}
+FAIL: without any option: ./lus2lic {-o /tmp/multiclock.lic should_work/multiclock.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/multiclock.ec should_work/multiclock.lus}
 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
+FAIL: Generate c code  : ./lus2lic {-2c should_work/multiclock.lus -n multiclock}
 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}
@@ -981,7 +947,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/model.lus
 PASS: ./lus2lic {-2c should_work/model.lus -n model}
 PASS: ./lus2lic {-o /tmp/matrice.lic should_work/matrice.lus}
 PASS: ./lus2lic {-ec -o /tmp/matrice.ec should_work/matrice.lus}
@@ -1054,23 +1019,26 @@ FAIL: Generate c code  : ./lus2lic {-2c should_work/activation2.lus -n activatio
 PASS: ./lus2lic {-o /tmp/type_decl.lic should_work/type_decl.lus}
 PASS: ./lus2lic {-ec -o /tmp/type_decl.ec should_work/type_decl.lus}
 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/sample_time_change_MainNode.lic should_work/sample_time_change_MainNode.lus}
+PASS: ./lus2lic {-ec -o /tmp/sample_time_change_MainNode.ec should_work/sample_time_change_MainNode.lus}
+PASS: ./myec2c {-o /tmp/sample_time_change_MainNode.c /tmp/sample_time_change_MainNode.ec}
+PASS: ../utils/test_lus2lic_no_node should_work/sample_time_change_MainNode.lus
+PASS: ./lus2lic {-2c should_work/sample_time_change_MainNode.lus -n sample_time_change_MainNode}
+PASS: gcc sample_time_change_MainNode_sample_time_change_MainNode.c sample_time_change_MainNode_sample_time_change_MainNode_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/sample_time_change_MainNode.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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/import1.lus
 PASS: ./lus2lic {-2c should_work/import1.lus -n import1}
 FAIL: Check that the generated C code compiles  : gcc import1_import1.c import1_import1_ext.c import1_import1_loop.c 
 PASS: ./lus2lic {-o /tmp/pack1.lic should_work/pack1.lus}
 PASS: ./lus2lic {-ec -o /tmp/pack1.ec should_work/pack1.lus}
 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}
@@ -1143,27 +1111,30 @@ 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}
+PASS: ./lus2lic {-2c should_work/array_concat.lus -n array_concat}
+PASS: gcc array_concat_array_concat.c array_concat_array_concat_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/array_concat.lus
 PASS: ./lus2lic {-o /tmp/ex.lic should_work/ex.lus}
 PASS: ./lus2lic {-ec -o /tmp/ex.ec should_work/ex.lus}
 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
+UNRESOLVED: Time out: ../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
+UNRESOLVED: Time out: ../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
+UNRESOLVED: Time out: ../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}
@@ -1172,7 +1143,6 @@ FAIL: Generate c code  : ./lus2lic {-2c should_work/activation1.lus -n activatio
 PASS: ./lus2lic {-o /tmp/call01.lic should_work/call01.lus}
 PASS: ./lus2lic {-ec -o /tmp/call01.ec should_work/call01.lus}
 PASS: ./myec2c {-o /tmp/call01.c /tmp/call01.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/call01.lus
 PASS: ./lus2lic {-2c should_work/call01.lus -n call01}
 PASS: gcc call01_call01.c call01_call01_loop.c 
 PASS: ./lus2lic {-o /tmp/bug.lic should_work/bug.lus}
@@ -1185,21 +1155,19 @@ 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: ../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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/p.lus
 PASS: ./lus2lic {-2c should_work/p.lus -n p}
 PASS: ./lus2lic {-o /tmp/struct0.lic should_work/struct0.lus}
 PASS: ./lus2lic {-ec -o /tmp/struct0.ec should_work/struct0.lus}
@@ -1211,7 +1179,7 @@ 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: ../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
@@ -1253,7 +1221,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/asservi.lus
 FAIL: Generate c code  : ./lus2lic {-2c should_work/asservi.lus -n asservi}
 PASS: ./lus2lic {-o /tmp/rediter.lic should_work/rediter.lus}
 PASS: ./lus2lic {-ec -o /tmp/rediter.ec should_work/rediter.lus}
@@ -1272,7 +1239,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/modelInst.lus
 PASS: ./lus2lic {-2c should_work/modelInst.lus -n modelInst}
 PASS: ./lus2lic {-o /tmp/dependeur_struct.lic should_work/dependeur_struct.lus}
 PASS: ./lus2lic {-ec -o /tmp/dependeur_struct.ec should_work/dependeur_struct.lus}
@@ -1298,6 +1264,8 @@ 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}
+PASS: ./lus2lic {-2c should_work/modes3x2_v4.lus -n modes3x2_v4}
+PASS: gcc modes3x2_v4_modes3x2_v4.c modes3x2_v4_modes3x2_v4_ext.c modes3x2_v4_modes3x2_v4_loop.c 
 PASS: ./lus2lic {-o /tmp/uu.lic should_work/uu.lus}
 PASS: ./lus2lic {-ec -o /tmp/uu.ec should_work/uu.lus}
 PASS: ./myec2c {-o /tmp/uu.c /tmp/uu.ec}
@@ -1315,6 +1283,9 @@ 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}
+PASS: ./lus2lic {-2c should_work/modes3x2_v3.lus -n modes3x2_v3}
+PASS: gcc modes3x2_v3_modes3x2_v3.c modes3x2_v3_modes3x2_v3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/modes3x2_v3.lus
 PASS: ./lus2lic {-o /tmp/pre_x.lic should_work/pre_x.lus}
 PASS: ./lus2lic {-ec -o /tmp/pre_x.ec should_work/pre_x.lus}
 PASS: ./myec2c {-o /tmp/pre_x.c /tmp/pre_x.ec}
@@ -1360,12 +1331,10 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/lustre.lus
 PASS: ./lus2lic {-2c should_work/lustre.lus -n lustre}
 PASS: ./lus2lic {-o /tmp/packed_cst.lic should_work/packed_cst.lus}
 PASS: ./lus2lic {-ec -o /tmp/packed_cst.ec should_work/packed_cst.lus}
 PASS: ./myec2c {-o /tmp/packed_cst.c /tmp/packed_cst.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packed_cst.lus
 PASS: ./lus2lic {-2c should_work/packed_cst.lus -n packed_cst}
 PASS: ./lus2lic {-o /tmp/predef02.lic should_work/predef02.lus}
 PASS: ./lus2lic {-ec -o /tmp/predef02.ec should_work/predef02.lus}
@@ -1391,7 +1360,7 @@ 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: ../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
@@ -1433,10 +1402,10 @@ 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: ../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: ../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}
@@ -1517,13 +1486,10 @@ 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: without any option: ./lus2lic {-o /tmp/PCOND.lic should_work/PCOND.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/PCOND.ec should_work/PCOND.lus}
 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
+FAIL: Generate c code  : ./lus2lic {-2c should_work/PCOND.lus -n PCOND}
 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}
@@ -1534,12 +1500,12 @@ 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}
-PASS: ../utils/test_lus2lic_no_node should_work/call03.lus
 PASS: ./lus2lic {-2c should_work/call03.lus -n call03}
 PASS: gcc call03_call03.c call03_call03_loop.c 
 PASS: ./lus2lic {-o /tmp/modes3x2-simu.lic should_work/modes3x2-simu.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2-simu.ec should_work/modes3x2-simu.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2-simu.c /tmp/modes3x2-simu.ec}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/modes3x2-simu.lus -n modes3x2-simu}
 PASS: ./lus2lic {-o /tmp/count.lic should_work/count.lus}
 PASS: ./lus2lic {-ec -o /tmp/count.ec should_work/count.lus}
 PASS: ./myec2c {-o /tmp/count.c /tmp/count.ec}
@@ -1550,21 +1516,20 @@ 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: ../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: ../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: ../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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Condact.lus
 PASS: ./lus2lic {-2c should_work/Condact.lus -n Condact}
 PASS: ./lus2lic {-o /tmp/poussoir.lic should_work/poussoir.lus}
 PASS: ./lus2lic {-ec -o /tmp/poussoir.ec should_work/poussoir.lus}
@@ -1583,14 +1548,13 @@ 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: ../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: ../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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/decl.lus
 PASS: ./lus2lic {-2c should_work/decl.lus -n decl}
 FAIL: Check that the generated C code compiles  : gcc decl_decl.c decl_decl_ext.c decl_decl_loop.c 
 PASS: ./lus2lic {-o /tmp/bred_lv4.lic should_work/bred_lv4.lus}
@@ -1617,13 +1581,11 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/simple.lus
 PASS: ./lus2lic {-2c should_work/simple.lus -n simple}
 FAIL: Check that the generated C code compiles  : gcc simple_simple.c simple_simple_loop.c 
 PASS: ./lus2lic {-o /tmp/func_with_body.lic should_work/func_with_body.lus}
 PASS: ./lus2lic {-ec -o /tmp/func_with_body.ec should_work/func_with_body.lus}
 PASS: ./myec2c {-o /tmp/func_with_body.c /tmp/func_with_body.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/func_with_body.lus
 PASS: ./lus2lic {-2c should_work/func_with_body.lus -n func_with_body}
 PASS: gcc func_with_body_func_with_body.c func_with_body_func_with_body_loop.c 
 PASS: ./lus2lic {-o /tmp/minus.lic should_work/minus.lus}
@@ -1636,7 +1598,6 @@ 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}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/remplissage-1.0.lus
 PASS: ./lus2lic {-2c should_work/remplissage-1.0.lus -n remplissage-1.0}
 XFAIL: Test bad programs (syntax): test_lus2lic_no_node should_fail/syntax/old_style_and_pack.lus
 XFAIL: Test bad programs (syntax): test_lus2lic_no_node should_fail/syntax/record.lus
@@ -1708,7 +1669,10 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		1508
-# of unexpected failures	130
+# of expected passes		1512
+# of unexpected failures	84
 # of unexpected successes	21
 # of expected failures		37
+# of unresolved testcases	3
+testcase ./lus2lic.tests/non-reg.exp completed in 259 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/lus2lic.tests/non-reg.exp b/test/lus2lic.tests/non-reg.exp
index 7418a0bd..f8803db8 100644
--- a/test/lus2lic.tests/non-reg.exp
+++ b/test/lus2lic.tests/non-reg.exp
@@ -14,25 +14,27 @@ foreach f $ok_files {
 
     set id1 [should_work "without any option" "$lus2lic" "-o $bf.lic $f"]
     wait -i $id1
-    set id2 [should_work "Generate ec code  " "$lus2lic" "-ec -o $bf.ec $f"]
-    wait -i $id2
-
-    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 }
+    # if { [nonemptyfile "$bf.lic"] } {
+        set id2 [should_work "Generate ec code  " "$lus2lic" "-ec -o $bf.ec $f"]
+        wait -i $id2
+        
+        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 { [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
-
+        }
+        
+        if { [nonemptyfile "$bf.c"] && [do_ecexe_vs_exec "$f"] } {
+            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
+        }
         set id5 [should_work "Generate c code  " "$lus2lic" "-2c $f -n $basef"]
         wait -i $id5
-
+        
         if { [nonemptyfile "${basef}_${basef}.c"] } {
-            eval spawn "rm -f a.out"
+        eval spawn "rm -f a.out"
             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 {
@@ -41,24 +43,21 @@ 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"] } {
+            
+            if { [nonemptyfile a.out] && [do_2c_vs_exec "$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
-    }
-
+        catch { exp_close -i $id2 }
+        catch { exp_wait  -i $id2 } output
+    #}
     catch { exp_close -i $id1 }
     catch { exp_wait  -i $id1 } output
-    catch { exp_close -i $id2 }
-    catch { exp_wait  -i $id2 } output
-
- }
+}
 
 
 # Programs that should fail
diff --git a/test/lus2lic.time b/test/lus2lic.time
index e69de29b..3d42a2c8 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -0,0 +1,2 @@
+testcase ./lus2lic.tests/non-reg.exp completed in 259 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/CURRENT.lus b/test/should_work/CURRENT.lus
index 462150c8..94856251 100644
--- a/test/should_work/CURRENT.lus
+++ b/test/should_work/CURRENT.lus
@@ -1,4 +1,9 @@
-node CURRENT(x: bool; y: bool when x)
+node CURRENT(x: bool; y: bool)
+returns (z: bool);
+let
+  z = current(CURRENT_clk(x,y when x));
+tel
+node CURRENT_clk(x: bool; y: bool when x)
 returns (z: bool when x);
 let
   z = y;
diff --git a/test/should_work/PCOND.lus b/test/should_work/PCOND.lus
index ff9f4b82..21211251 100644
--- a/test/should_work/PCOND.lus
+++ b/test/should_work/PCOND.lus
@@ -1,4 +1,29 @@
 node PCOND( 
+           h0:bool; 
+           hA,hB,hC:bool;
+           A:int ; 
+           B:int ; 
+           C:bool;
+           hD:bool; 
+           D:bool )
+returns (hX:bool; X:int);
+var
+  hX_on_h0 : bool when h0;
+  X_on_hX : int when hX_on_h0; 
+let
+  hX = current(hX_on_h0);
+  X = current(X_on_hX);
+  hX_on_h0, X_on_hX = PCOND_clk( 
+           h0,
+           hA,hB,hC when h0,
+           A when hA,
+           B when hB, 
+           C when hC,
+           hD when hC, 
+           D when hD);
+tel
+
+node PCOND_clk( 
            h0:bool; 
            hA,hB,hC:bool when h0;
            A:int when hA; 
@@ -8,14 +33,14 @@ node PCOND(
            D:bool when hD)
 returns (hX:bool when h0; X:int when hX);
 let
-        hX = hC and current(hD) and ( ( hA and
-                                       current(current(D)) ) 
-                                     or 
-                                     ( hB and not
-                                      current(current(D)) ) );
+  hX = hC and current(hD) and ( ( hA and
+                                 current(current(D)) ) 
+                               or 
+                               ( hB and not
+                                current(current(D)) ) );
 
-        X = ( if ( hA and current(current(D)) )
-              then current(A) 
-              else current(B) 
-             ) when hX;
+  X = ( if ( hA and current(current(D)) )
+        then current(A) 
+        else current(B) 
+       ) when hX;
 tel
diff --git a/test/should_work/PCOND1.lus b/test/should_work/PCOND1.lus
index 7c116c25..a7509c5c 100644
--- a/test/should_work/PCOND1.lus
+++ b/test/should_work/PCOND1.lus
@@ -1,7 +1,29 @@
-node PCOND1( h0:bool; hA,hB,hC:bool when h0;
-A:int when hA; B:int when hB; C:bool when hC;
+node PCOND1(h0:bool; hA,hB,hC:bool ;
+            A:int ; B:int ; C:bool;
+            hD:bool; D:bool)
+returns (hX:bool);
+var
+  hX_on_h0: bool when h0;
+  hA_on_h0: bool when h0;
+  hB_on_h0: bool when h0;
+  hC_on_h0: bool when h0; 
+  hD_on_hC_on_h0: bool when hC_on_h0; 
+let
+  hX = current(hX_on_h0);
+  hA_on_h0 = hA when h0;
+  hB_on_h0 = hB when h0;
+  hC_on_h0 = hC when h0;
+  hD_on_hC_on_h0 = hD when hC_on_h0;
+  hX_on_h0 = PCOND1_clk(h0,hA when h0,hB when h0,
+                        hC when h0,A when hA_on_h0,B when hB_on_h0,C when hC_on_h0,
+                        hD when hC_on_h0,D  when hD_on_hC_on_h0);
+tel
+
+
+node PCOND1_clk(h0:bool; hA,hB,hC:bool when h0;
+                A:int when hA; B:int when hB; C:bool when hC;
                 hD:bool when hC; D:bool when hD)
 returns (hX:bool when h0);
 let
-        hX = hC and current(hD) and h0 when h0;
+  hX = hC and current(hD) and h0 when h0;
 tel
diff --git a/test/should_work/X.lus b/test/should_work/X.lus
index 948a2650..8a824698 100644
--- a/test/should_work/X.lus
+++ b/test/should_work/X.lus
@@ -1,4 +1,16 @@
-node X (c: bool; n:int when c)
+node X (c: bool; n:int)
+returns (d: bool; m: int; p:int);
+var
+  m_on_c :int when c; 
+  p_on_d:int when d;
+
+let
+  d,m_on_c,p_on_d = X_clk(c, n when c);
+  m = current (m_on_c);
+  p = current (p_on_d);
+tel
+
+node X_clk (c: bool; n:int when c)
 returns (d: bool; m: int when c; p:int when d);
 let
   m = 0 when c -> pre(m) + n;
diff --git a/test/should_work/X6.lus b/test/should_work/X6.lus
index aaadd238..d6a86c15 100644
--- a/test/should_work/X6.lus
+++ b/test/should_work/X6.lus
@@ -1,5 +1,28 @@
 
 node X6(n:int; b: bool)
+returns 
+	(m: int;
+	 c: bool;
+    d: bool;
+	p,u : int;
+	q,r: int);
+var
+ 	 c': bool when b;
+    d': bool when c;
+	p',u' : int when b;
+	q',r': int when c ;
+let
+  m,c',d',p',u',q',r'= X6_clk(n,b);
+  c = current(c');
+  d = current(d');
+  p = current(p');
+  u = current(u');
+  q = current(q');
+  r = current(r');
+tel
+  
+
+node X6_clk(n:int; b: bool)
 returns 
 	(m: int;
 	 c: bool when b;
diff --git a/test/should_work/bob.lus b/test/should_work/bob.lus
index 4aa724d2..a3a4e8ac 100644
--- a/test/should_work/bob.lus
+++ b/test/should_work/bob.lus
@@ -1,4 +1,8 @@
-node bob(i : bool ) returns (o : bool when i);
+node bob(i : bool ) returns (o : bool);
+let
+	o = current(bob_clk(i));
+tel
+node bob_clk(i : bool ) returns (o : bool when i);
 let
 	o = (true -> pre(false -> pre(i))) when i;
 	assert (true -> i <> pre(i)) ;
diff --git a/test/should_work/ck2.lus b/test/should_work/ck2.lus
index 7563fa1b..9d04932c 100644
--- a/test/should_work/ck2.lus
+++ b/test/should_work/ck2.lus
@@ -1,5 +1,16 @@
 
-node ck2 (c: bool; d: bool when c ; e: int when d)
+node ck2 (c: bool; d: bool ; e: int)
+returns (n: int);  
+var
+  d_on_c : bool when c;
+
+let
+  d_on_c = d when c;
+  n = ck2_clk(c,  d_on_c , e when d_on_c);
+tel
+
+
+node ck2_clk (c: bool; d: bool when c ; e: int when d)
 returns (n: int);
 let
   n = if c and current(d) then 0 else current(current(e));
diff --git a/test/should_work/ck3.lus b/test/should_work/ck3.lus
index eb95d0e5..34dc16ca 100644
--- a/test/should_work/ck3.lus
+++ b/test/should_work/ck3.lus
@@ -1,4 +1,14 @@
-node ck3 (a: bool; b: bool when a; c: bool when b)
+node ck3 (a: bool; b: bool; c: bool)
+returns (x: bool);
+var
+  b_on_a : bool when a;
+let
+  b_on_a = b when a;
+  x = ck3_clk(a,b when a, c when b_on_a); 
+tel
+
+
+node ck3_clk (a: bool; b: bool when a; c: bool when b)
 returns (x: bool);
 let
   x = current(current(c));
diff --git a/test/should_work/ck4.lus b/test/should_work/ck4.lus
index 70d7f2ac..5e58459a 100644
--- a/test/should_work/ck4.lus
+++ b/test/should_work/ck4.lus
@@ -1,4 +1,9 @@
-node ck4 (a: int when b; b: bool)
+node ck4 (a: int; b: bool)
+returns (c: int);
+let
+  c = ck4_clk(a when b, b);
+tel
+node ck4_clk (a: int when b; b: bool)
 returns (c: int);
 let
   c = current(a);
diff --git a/test/should_work/ck7.lus b/test/should_work/ck7.lus
index 7cee30e1..7e2f3df5 100644
--- a/test/should_work/ck7.lus
+++ b/test/should_work/ck7.lus
@@ -1,4 +1,16 @@
 node ck7(a: bool; m,n:int)
+returns(q:int; r: int);
+var
+  r_on_a : int when a;
+let
+  q,r_on_a = ck7_clk(a,m,n);
+  r = current (r_on_a);
+tel
+
+
+
+
+node ck7_clk(a: bool; m,n:int)
 returns(q:int; r: int when a);
 let
 	q = m+n;
diff --git a/test/should_work/clock1_2ms.lus b/test/should_work/clock1_2ms.lus
index 4b0a51af..1ebac921 100644
--- a/test/should_work/clock1_2ms.lus
+++ b/test/should_work/clock1_2ms.lus
@@ -11,10 +11,17 @@ let
    Clock2ms = true -> ( not pre(Clock2ms) ) ;
 tel
 
-node clock1_2ms(dummy : bool)
+node clock1_2ms_clk(dummy : bool)
 returns (Clock1ms: bool; Clock2ms : bool when Clock1ms) ;
 let
 	Clock1ms = Clock1ms_node(dummy);
 	Clock2ms = Clock2ms_node(dummy when Clock1ms);
 tel
 
+node clock1_2ms(dummy : bool) returns (Clock1ms: bool; Clock2ms : bool) ;
+var
+  Clock2ms_on_Clock1ms : bool when Clock1ms;
+let
+  Clock1ms, Clock2ms_on_Clock1ms = clock1_2ms_clk(dummy);
+  Clock2ms = current( Clock2ms_on_Clock1ms);
+tel
diff --git a/test/should_work/clock_ite.lus b/test/should_work/clock_ite.lus
index cb7c16a3..a639db83 100644
--- a/test/should_work/clock_ite.lus
+++ b/test/should_work/clock_ite.lus
@@ -1,6 +1,14 @@
 
 
-node clock_ite(a: bool; b: bool) returns (c: bool when a);
+node clock_ite(a: bool; b: bool) returns (c: bool);
+ var
+  c_on_a: bool when a;
+
+let 
+  c_on_a = clock_ite_clk(a,b);
+  c = current(c_on_a);
+tel
+node clock_ite_clk(a: bool; b: bool) returns (c: bool when a);
 -- var
 --  z: bool;
 
diff --git a/test/should_work/filliter.lus b/test/should_work/filliter.lus
index 3ce384e5..e29f7ff2 100644
--- a/test/should_work/filliter.lus
+++ b/test/should_work/filliter.lus
@@ -16,8 +16,16 @@ let
         acc_out = res + 1;
 tel
 
-node filliter(c: bool; i1, i2: int when c) returns (s1, s2: int^NBC when c);
+node filliter(c: bool; i1, i2: int) returns (s1, s2: int^NBC);
+var
+  s1_on_c,s2_on_c: int^NBC when c;
+let
+  s1_on_c,s2_on_c = filliter_clk(c, i1 when c, i2 when c);
+  s1 = current (s1_on_c);
+  s2 = current (s2_on_c);
+tel
 
+node filliter_clk(c: bool; i1, i2: int when c) returns (s1, s2: int^NBC when c);
 var x : int^4 when c;
     bid1,  bid2 : int when c;
 
diff --git a/test/should_work/hanane.lus b/test/should_work/hanane.lus
index c770c2eb..8e8fd2af 100644
--- a/test/should_work/hanane.lus
+++ b/test/should_work/hanane.lus
@@ -9,7 +9,12 @@ const
   b: bool = true;
   c: real = 3.14;
 
-node hanane(a1: bool; b1:  string2d when a1; c1: tabStruct when a1) 
+node hanane(a1: bool; b1:  string2d; c1: tabStruct) 
+  returns (res: bool);
+let
+  res = current(hanane_clk(a1,b1 when a1, c1 when a1));
+tel
+node hanane_clk(a1: bool; b1:  string2d when a1; c1: tabStruct when a1) 
   returns (res: bool when a1);
 var
   h1: int^4;
diff --git a/test/should_work/lustre_test1_ok.lus b/test/should_work/lustre_test1_ok.lus
index 0c2d029e..cc56889c 100644
--- a/test/should_work/lustre_test1_ok.lus
+++ b/test/should_work/lustre_test1_ok.lus
@@ -10,6 +10,14 @@ let
 tel
 
 node lustre_test1_ok
+        (In1:real;cl1_2:bool;cl1_4:bool; In2:real;cl2_6:bool; In3:bool)
+returns (out1:real;Out2:real;Out3:real);
+
+let
+  out1, Out2, Out3 = lustre_test1_ok_clk(In1,cl1_2,cl1_4, In2,cl2_6 when cl1_2, In3 when cl1_4);
+tel
+
+node lustre_test1_ok_clk
         (In1:real;cl1_2:bool;cl1_4:bool; In2:real;cl2_6:bool when cl1_2; In3:bool when cl1_4)
 returns (out1:real;Out2:real;Out3:real);
 var Sum:real;
diff --git a/test/should_work/multiclock.lus b/test/should_work/multiclock.lus
index 1d4a07b5..74416720 100644
--- a/test/should_work/multiclock.lus
+++ b/test/should_work/multiclock.lus
@@ -1,4 +1,13 @@
-node multiclock ( x, y: int; c: bool; z: int when c )
+node multiclock ( x, y: int; c: bool; z: int )
+        returns ( s: int);
+var
+  h: bool when c ;
+  u: int when h ;
+let
+  s = current(multiclock_clk ( x, y; c; z when c ));
+tel
+
+node multiclock_clk ( x, y: int; c: bool; z: int when c )
         returns ( s: int when c);
 var
   h: bool when c ;
diff --git a/test/should_work/sample_time_change.lus b/test/should_work/sample_time_change_MainNode.lus
similarity index 97%
rename from test/should_work/sample_time_change.lus
rename to test/should_work/sample_time_change_MainNode.lus
index 024a17c7..dc8ee31f 100644
--- a/test/should_work/sample_time_change.lus
+++ b/test/should_work/sample_time_change_MainNode.lus
@@ -5,7 +5,7 @@ using the compiler   :		Simulink to Lustre   CURRENT VERSION!!!
 
 
 /**************** The MainNode node of the model ****************/
-node MainNode (In3:real)
+node sample_time_change_MainNode (In3:real)
 returns (Out2:real);
 var cl1_4_2, cl1_12_3 :bool;
     Out2_ :real when cl1_4_2 ;
@@ -18,6 +18,7 @@ tel
 
 
 /****************** All the nodes of the Model ******************/
+
 node sample_time_change (cl1_4_2, cl1_12_3:bool; In3:real when cl1_12_3)
 returns (Out2:real when cl1_4_2);
 var Unit_Delay1:real when cl1_12_3;
diff --git a/test/should_work/test_merge.lus b/test/should_work/test_merge.lus
index 6aefb4e8..6ef5e1e1 100644
--- a/test/should_work/test_merge.lus
+++ b/test/should_work/test_merge.lus
@@ -1,5 +1,15 @@
 type piece = enum { Pile, Face, Tranche }; ---
 node test_merge(clk: piece; ---
+   i1 : int ; 
+   i2 : int; 
+   i3 : int) 
+returns (y: int); ---
+  let
+  y = test_merge_clk(clk,i1 when Pile(clk), i2 when Face(clk), i3 when Tranche(clk));
+  tel
+ 
+
+node test_merge_clk(clk: piece; ---
    i1 : int when Pile(clk) ; 
    i2 : int when Face(clk); 
    i3 : int when Tranche(clk)) 
diff --git a/test/site.exp b/test/site.exp
index 4c109584..221e6682 100644
--- a/test/site.exp
+++ b/test/site.exp
@@ -130,11 +130,34 @@ proc nonemptyfile {filename} {
 
 package require fileutil
 
-proc contains_extern {f} {
-
-    set pattern {extern}    
-    set match  [llength [fileutil::grep $pattern $f]]
-    return [expr {$match == 0 }]
+# test if file $f contain the string $str
+proc does_not_contain_string {f str} {
+    set occ  [llength [fileutil::grep $str $f]]
+    if { ($occ == 1 ) } { puts " $f contains $occ occurence of $str" }
+    if { ($occ > 1 ) } { puts " $f contains $occ occurence(s) of $str" }
+    return [expr { $occ == 0 }]
 }
 
+# do no try to use lurette on files that contains extern nodes or package.
+# Package won't work  because appending the tested lustre file with the 
+# generated oracle as I do is wrong in presence of package (fixme)
+proc do_ecexe_vs_exec {f} {
+    if { 
+        [does_not_contain_string "$f" "enum "] &&
+        [does_not_contain_string "$f" "extern"] &&
+        [does_not_contain_string "$f" "package"] 
+    } { 
+        return 1
+    }
+    return 0
+}
 
+proc do_2c_vs_exec {f} {
+    if { 
+        [does_not_contain_string "$f" "extern"] &&
+        [does_not_contain_string "$f" "package"] 
+    } { 
+        return 1
+    }
+    return 0
+}
diff --git a/todo.org b/todo.org
index e6ccf8b4..07b150f4 100644
--- a/todo.org
+++ b/todo.org
@@ -102,39 +102,91 @@ 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]
 
+grep "FAIL:" lus2lic.log | grep "exec" | grep "\-2c" | sed s/'FAIL: Try to compare lus2lic -exec and -2c:'/-/
 
 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
+  -> erreur de clock !
 
+2. ../utils/compare_exec_and_2c should_work/test_node_expand2.lus
+  -> -2110104000 est n'est pas un entier acceptable pour lutin sur les machines 32 bits...
 
+3. ../utils/compare_exec_and_2c should_work/test_node_expand.lus
+  -> idem
+
+4. ../utils/compare_exec_and_2c should_work/sincos.lus
+  -> une erreur en mode -exec au step 2 (nil)
+
+5. ../utils/compare_exec_and_2c should_work/clock_ite.lus
+  -> pb!
+
+6. ../utils/compare_exec_and_2c should_work/integrator.lus
+  -> pb d'arrondi (1305025.02198 vs 1305025.)
+
+7. ../utils/compare_exec_and_2c should_work/PCOND1.lus
+   -> pb d'arrondi / 32bits
+
+8. ../utils/compare_exec_and_2c should_work/CURRENT.lus
+   -> manisfestement, le comportement du current diverge...
+
+9. ../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
+  -> pb!
+
+10. ../utils/compare_exec_and_2c should_work/multipar.lus
+   -> pb d'arrondi / 32bits
+
+11. ../utils/compare_exec_and_2c should_work/bob.lus
+    -> manisfestement, le comportement du current diverge...
+
+12. ../utils/compare_exec_and_2c should_work/test_condact.lus
+   -> pb!
+
+13. ../utils/compare_exec_and_2c should_work/array_concat.lus
+   -> le a.out fait un segmentation fault
+
+14. ../utils/compare_exec_and_2c should_work/ck4.lus
+    -> manisfestement, le comportement du current diverge...
+
+15. ../utils/compare_exec_and_2c should_work/filliter.lus
+    -> manisfestement, le comportement du current diverge...
+
+16. ../utils/compare_exec_and_2c should_work/X2.lus
+   -> pb!
+
+17. ../utils/compare_exec_and_2c should_work/hanane.lus
+    -> manisfestement, le comportement du current diverge...
+
+18. ../utils/compare_exec_and_2c should_work/ck3.lus
+    -> manisfestement, le comportement du current diverge...
+
+19. ../utils/compare_exec_and_2c should_work/ck2.lus
+    -> manisfestement, le comportement du current diverge...
+
+
+** TODO Divergences -exec et ecexe
+   - State "TODO"       from ""           [2014-07-11 Fri 16:54]
+
+ grep "FAIL:" lus2lic.log | grep "exec" | grep "ecexe" | sed s/'FAIL: Try to compare lus2lic -exec and ecexe:'/-/
+
+1. ../utils/test_lus2lic_no_node should_work/Gyroscope2.lus
+2. ../utils/test_lus2lic_no_node should_work/test_node_expand2.lus
+3. ../utils/test_lus2lic_no_node should_work/test_node_expand.lus
+4. ../utils/test_lus2lic_no_node should_work/modes3x2_v2.lus
+5. ../utils/test_lus2lic_no_node should_work/X6.lus
+6. ../utils/test_lus2lic_no_node should_work/filter.lus
+7. ../utils/test_lus2lic_no_node should_work/sincos.lus
+8. ../utils/test_lus2lic_no_node should_work/integrator.lus
+9. ../utils/test_lus2lic_no_node should_work/PCOND1.lus
+10. ../utils/test_lus2lic_no_node should_work/multiclock.lus
+11. ../utils/test_lus2lic_no_node should_work/multipar.lus
+12. ../utils/test_lus2lic_no_node should_work/activation2.lus
+13. ../utils/test_lus2lic_no_node should_work/bob.lus
+14. ../utils/test_lus2lic_no_node should_work/test_condact.lus
+15. ../utils/test_lus2lic_no_node should_work/activation1.lus
+16. ../utils/test_lus2lic_no_node should_work/Gyroscope.lus
+17. ../utils/test_lus2lic_no_node should_work/hanane.lus
+18. ../utils/test_lus2lic_no_node should_work/cond01.lus
+19. ../utils/test_lus2lic_no_node should_work/speedcontrol.lus
+20. ../utils/test_lus2lic_no_node should_work/PCOND.lus
 
 
 * Packages, modeles, etc.
diff --git a/utils/compare_exec_and_2c b/utils/compare_exec_and_2c
index b8ea179f..c19259ad 100755
--- a/utils/compare_exec_and_2c
+++ b/utils/compare_exec_and_2c
@@ -39,7 +39,7 @@ else
     exit 2
 fi
 
-PORT=2000
+PORT=2001
 ./call-via-socket -server -addr 127.0.0.1 -port $PORT ./a.out &
 
 export PATH=/usr/local/tools/lustre/bin/:$PATH
-- 
GitLab