diff --git a/src/actionsDeps.ml b/src/actionsDeps.ml
index ba4f8e98cd6bd2daab92f5f65352c15ce462a086..81eed47d0ce918169da40bd89fbbe62d42b1e6cf 100644
--- a/src/actionsDeps.ml
+++ b/src/actionsDeps.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 20/05/2014 (at 16:08) by Erwan Jahier> *)
+(** Time-stamp: <modified the 09/07/2014 (at 16:07) by Erwan Jahier> *)
   
 let dbg = (Verbose.get_flag "deps")
 
@@ -173,7 +173,6 @@ let (get_var2actions_tbl : action list -> var2actions_tbl) =
     [actions_of_vars input_vars al] trouve toutes les actions de [al] qui
     ont besoin d'être effectuées avant de pouvoir se servir de [input_vars]
     comme entrée d'une autre action.
-    
 
     TODO: gérer les dépendances entre des filtres plus complexes,
     comme par ex., l'utilisation d'un champ d'une structure nécessite
@@ -187,7 +186,7 @@ let rec (actions_of_vars: Soc.var_expr list -> var2actions_tbl -> action list) =
       try Actions.elements (var2actions var tbl)
       with Not_found -> []
     in
-    let vars = List.flatten (List.map get_parents vars) in
+     let vars = List.flatten (List.map get_parents vars) in 
     let vars = List.fold_left (fun acc x -> if List.mem x acc then acc else x::acc) [] vars in
       List.flatten (List.map find_deps vars)
 
@@ -284,7 +283,7 @@ let rec (visit : t -> color_table -> action -> color_table) =
 		          | Grey -> raise (DependencyCycle (n, grey_actions color_t))
 		          | Black -> color_t
 	         with 
-		 (* The node [nt] is white *)
+		          (* The node [nt] is white *)
 		          Not_found -> visit succ_t color_t nt
 	       ) 
 	       (MapAction.find n succ_t)
diff --git a/src/actionsDeps.mli b/src/actionsDeps.mli
index da90f5c91ec4c46fb32b3b73381478a830f7845a..d150ef286b571707fc23ed5ea9ec41ac1d8ce844 100644
--- a/src/actionsDeps.mli
+++ b/src/actionsDeps.mli
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 11/12/2013 (at 17:49) by Erwan Jahier> *)
+(** Time-stamp: <modified the 09/07/2014 (at 15:49) by Erwan Jahier> *)
 
 (** Compute dependencies between actions  *)
 
@@ -37,7 +37,7 @@ val string_of_action_simple: action -> string
     Construit des dépendances entre les actions en reliant les entrées et
     les sorties de ces actions. 
 
-    Lic2soc.lic_to_soc_type is passed inn argument to break a mutuel dep loop
+    Lic2soc.lic_to_soc_type is passed in argument to break a dep loop
 *)
 val build_data_deps_from_actions:  (Lic.type_ -> Data.t) -> t -> action list -> t
 
diff --git a/src/astTabSymbol.ml b/src/astTabSymbol.ml
index 39315216126c8b129ef3f5397182086bc193f36e..679d87edd6daec5d75bc3ddad9e1c8a4d37a79c4 100644
--- a/src/astTabSymbol.ml
+++ b/src/astTabSymbol.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 11/04/2013 (at 15:28) by Erwan Jahier> *)
+(* Time-stamp: <modified the 09/07/2014 (at 17:18) by Erwan Jahier> *)
 
 (**
 Sous-module pour AstTab 
@@ -58,8 +58,7 @@ let find_node (this: t) (id: Ident.t) lxm =
     if Lxm.line lxm = 0 && Lxm.cend lxm = 0 then
       (* A hack to print a nicer error msg when the node asked in the 
 	      command-line is not found in the input files*)
-      raise (Global_error("Can not find node " ^ (Ident.to_string id)^
-			                    " in " ^ (Lxm.file lxm)))
+      raise (Global_error("Can not find node " ^ (Ident.to_string id)))
     else
       let all_nodes = 
         Hashtbl.fold (fun n _ acc -> (Ident.to_string n)::acc) this.st_nodes [] 
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 4a560434a1088ab4799f32775dd83b57e69c3e2b..512c70cc44270444d1ba090f795827bce636de62 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Wed Jul  9 12:54:34 2014
+Test Run By jahier on Wed Jul  9 17:22:16 2014
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -396,7 +396,8 @@ 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
-FAIL: Generate c code  : ./lus2lic {-2c should_work/modes3x2_v2.lus -n modes3x2_v2}
+PASS: ./lus2lic {-2c should_work/modes3x2_v2.lus -n modes3x2_v2}
+PASS: gcc modes3x2_v2_modes3x2_v2.c modes3x2_v2_modes3x2_v2_ext.c modes3x2_v2_modes3x2_v2_loop.c 
 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}
@@ -759,7 +760,8 @@ 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
-FAIL: Generate c code  : ./lus2lic {-2c should_work/when_tuple.lus -n when_tuple}
+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}
@@ -1507,9 +1509,9 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		1336
-# of unexpected failures	101
+# of expected passes		1339
+# of unexpected failures	100
 # of unexpected successes	21
 # of expected failures		37
-testcase ./lus2lic.tests/non-reg.exp completed in 131 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 148 seconds
 testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/lus2lic.time b/test/lus2lic.time
index c9657f639cce96aa6204a8c91cdd1c199e3969ac..cf033f23173466d83916d8fb5635d0c79ed2d6c2 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -1,2 +1,2 @@
-testcase ./lus2lic.tests/non-reg.exp completed in 131 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 148 seconds
 testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/modes3x2_v2.lus b/test/should_work/modes3x2_v2.lus
index 3d45b71091236775dfc40de0dc8f228648e03821..ece1d6bea848ea8d1737574559af36fdf69c2c8b 100644
--- a/test/should_work/modes3x2_v2.lus
+++ b/test/should_work/modes3x2_v2.lus
@@ -63,7 +63,7 @@ let
 		 else (0 -> pre z);
 tel
 
-node modes3x2_V2(x:data; on_off, toggle: bool) returns (res: data);
+node modes3x2_v2(x:data; on_off, toggle: bool) returns (res: data);
 var
 	y, z : data;	
 	sby : bool;
diff --git a/test/should_work/when_tuple.lus b/test/should_work/when_tuple.lus
index a871c07f63ad457bbb1db6f770066dd90bb3d470..e355b9470537573875ee3cab753bd9b1e469f2ee 100644
--- a/test/should_work/when_tuple.lus
+++ b/test/should_work/when_tuple.lus
@@ -1,5 +1,5 @@
 
-node clock(a, b,  c: bool) returns (x: bool when a; y: bool when a);
+node when_tuple(a, b,  c: bool) returns (x: bool when a; y: bool when a);
 
 let 
   -- XXX should we accept that ?
diff --git a/todo.org b/todo.org
index 634b5ee16418024c94b5cd2d6705e13f862e03f5..c49a16d9ee14cbbf375472bfd502c5f9b7300f5c 100644
--- a/todo.org
+++ b/todo.org
@@ -42,24 +42,36 @@ oops: lus2lic internal error
 depuis le 2eme commit  du 18-06-2014
 
 * lus2lic -2C
-** TODO Ca plante si un identificateur lustre se nomme double...
-   - State "TODO"       from ""           [2014-06-13 Fri 16:59]
 ** TODO lic2c : le jour ou on genere du code C, y'a peut-etre des trucs a recuperer
    - State "TODO"       from ""           [2012-12-10 Mon 14:32]
 chez Cedric  Pasteur qui a  une implementation pour optimiser  la maj
 des tableaux
 http://www.di.ens.fr/~pouzet/bib/lctes12.pdf
 
-** TODO lic2c :  les programmes qui ne passent pas les tests
+** TODO lic2c : Ca plante si un identificateur lustre se nomme double...
+   - State "TODO"       from ""           [2014-06-13 Fri 16:59]
+** TODO lic2c : type externes utilisés en I/O du main pas supporté
 
-19. file:test/should_work/simple.lus lus2lic -2c should_work/simple.lus -n simple
+ file:test/should_work/simple.lus lus2lic -2c should_work/simple.lus -n simple
     types externes
-20. file:test/should_work/morel.lus lus2lic -2c should_work/morel.lus -n morel
-21. file:test/should_work/morel2.lus lus2lic -2c should_work/morel2.lus -n morel2
-22. file:test/should_work/morel3.lus lus2lic -2c should_work/morel3.lus -n morel3
-23. file:test/should_work/morel4.lus lus2lic -2c should_work/morel4.lus -n morel4
-24. file:test/should_work/left.lus lus2lic -2c should_work/left.lus -n left
-   slice en partie gauche
+
+faire comme pour _assign_EXT_TYPE en s'inspirant de ce que fait ec2c
+
+** TODO lic2c :  slice en partie gauche pas traitée
+
+1. file:test/should_work/morel.lus lus2lic -2c should_work/morel.lus -n morel
+2. file:test/should_work/morel2.lus lus2lic -2c should_work/morel2.lus -n morel2
+3. file:test/should_work/morel3.lus lus2lic -2c should_work/morel3.lus -n morel3
+4. file:test/should_work/morel4.lus lus2lic -2c should_work/morel4.lus -n morel4
+5. file:test/should_work/left.lus lus2lic -2c should_work/left.lus -n left
+
+** TODO polymorphisme
+   - State "TODO"       from ""           [2014-07-09 Wed 17:13]
+ lus2lic -2c should_work/cond01.lus -n cond01
+
+echoue aussi en mode exec.
+
+Je devrais pourvoir accepter celui la, non ?
 
 ** TODO Question : remettre en cause le choix de représentation des Soc.key ?
    - State "TODO"       from ""           [2014-06-27 Fri 15:29]
@@ -180,6 +192,13 @@ modifer
 file:~/lus2lic/utils/test_lus2lic_no_node
 
 
+** TODO pour ceux la ils suffit d'expanser. Comment eviter que les tests echouent ?
+- lus2lic -2c should_work/activation2.lus -n activation2
+- lus2lic -2c should_work/activation1.lus -n activation1
+- lus2lic -2c should_work/asservi.lus -n asservi
+- lus2lic -2c should_work/speedcontrol.lus -n speedcontrol
+
+
 * Divers
 ** TODO msg d'erreur un peu mauvais sur ce programme
 
@@ -335,6 +354,29 @@ struct et les arrays.
 ../utils/test_lus2lic_no_node should_work/activation1.lus
 ../utils/test_lus2lic_no_node should_work/speedcontrol.lus
 
+solution : 
+l2lSplit: split access of access in left parts.
+
+indeed, consider the following example:
+
+   z.y.y = z.x.x;
+
+which is fine. But if we transform it into
+
+   z.y.y = v0.x;
+   v0 = z.x;
+
+
+we have a cycle !!!
+
+but what if we split further, it's fine again
+
+   v1 = z.y
+   v1.y = v0.x;
+   v0 = z.x;
+
+-> split more !
+
 ** TODO Enlever Abstract_type_eff de Lic.type_ ou vérifier partout que c'est correct.
    - State "TODO"       from ""           [2012-12-20 Thu 17:26]
 dans lic.ml, on definit les types compilés ainsi :