Revision 0038002e src/optimize_prog.ml
src/optimize_prog.ml  

1  1 
open Corelang 
2 
open LustreSpec 

2  3  
3  4 
(* Consts unfoooolding *) 
4  5 
let is_const i consts = 
...  ...  
28  29 
 Expr_pre e' > Expr_pre (unfold e') 
29  30 
 Expr_when (e', i, l)> Expr_when (unfold e', i, l) 
30  31 
 Expr_merge (i, hl) > Expr_merge (i, List.map (fun (t, h) > (t, unfold h)) hl) 
31 
 Expr_appl (i, e', i') > Expr_appl (i, unfold e', i') 

32 
 Expr_uclock (e', i) > Expr_uclock (unfold e', i) 

33 
 Expr_dclock (e', i) > Expr_dclock (unfold e', i) 

34 
 Expr_phclock _ > e 

32 
 Expr_appl (i, e', i') > Expr_appl (i, unfold e', i') 

35  33  
36  34 
let eq_unfold_consts consts eq = 
37  35 
{ eq with eq_rhs = expr_unfold_consts consts eq.eq_rhs } 
...  ...  
74  72 
 Expr_when (e', i, l)> distrib ((i, l)::stack) e' 
75  73 
 Expr_merge (i, hl) > { expr with expr_desc = Expr_merge (i, List.map (fun (t, h) > (t, distrib stack h)) hl) } 
76  74 
 Expr_appl (id, e', i') > { expr with expr_desc = Expr_appl (id, distrib stack e', i')} 
77 
 _ > assert false 

78  75 
in distrib [] expr 
79  76  
80  77 
let eq_distribute_when eq = 
Also available in: Unified diff