diff options
| author | Brian Campbell | 2017-09-28 11:54:30 +0100 |
|---|---|---|
| committer | Brian Campbell | 2017-09-28 11:54:30 +0100 |
| commit | 38cbc2dac3e29a96ec8df9c1457d49ab90200d68 (patch) | |
| tree | ddf7db0ef0e385611bf5eebe5cb880ee56be34d4 /src | |
| parent | 1bd35a0934582ff08be0b99280b8d7080cbca4d1 (diff) | |
Add loops to monomorphisation
Diffstat (limited to 'src')
| -rw-r--r-- | src/monomorphise.ml | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/monomorphise.ml b/src/monomorphise.ml index 27b88ea7..ea2b324d 100644 --- a/src/monomorphise.ml +++ b/src/monomorphise.ml @@ -489,6 +489,7 @@ let nexp_subst_fns substs = | E_tuple es -> re (E_tuple (List.map s_exp es)) | E_if (e1,e2,e3) -> re (E_if (s_exp e1, s_exp e2, s_exp e3)) | E_for (id,e1,e2,e3,ord,e4) -> re (E_for (id,s_exp e1,s_exp e2,s_exp e3,ord,s_exp e4)) + | E_loop (loop,e1,e2) -> re (E_loop (loop,s_exp e1,s_exp e2)) | E_vector es -> re (E_vector (List.map s_exp es)) | E_vector_indexed (ies,ed) -> re (E_vector_indexed (List.map (fun (i,e) -> (i,s_exp e)) ies, s_opt_default ed)) @@ -918,6 +919,11 @@ let split_defs splits defs = let assigns = isubst_minus_set assigns (assigned_vars e4) in let e4',_ = const_prop_exp (ISubst.remove id substs) assigns e4 in re (E_for (id,e1',e2',e3',ord,e4')) assigns + | E_loop (loop,e1,e2) -> + let assigns = isubst_minus_set assigns (IdSet.union (assigned_vars e1) (assigned_vars e2)) in + let e1',_ = const_prop_exp substs assigns e1 in + let e2',_ = const_prop_exp substs assigns e2 in + re (E_loop (loop,e1',e2')) assigns | E_vector es -> let es',assigns = non_det_exp_list es in begin @@ -1333,6 +1339,7 @@ let split_defs splits defs = | E_tuple es -> re (E_tuple (List.map map_exp es)) | E_if (e1,e2,e3) -> re (E_if (map_exp e1, map_exp e2, map_exp e3)) | E_for (id,e1,e2,e3,ord,e4) -> re (E_for (id,map_exp e1,map_exp e2,map_exp e3,ord,map_exp e4)) + | E_loop (loop,e1,e2) -> re (E_loop (loop,map_exp e1,map_exp e2)) | E_vector es -> re (E_vector (List.map map_exp es)) | E_vector_indexed (ies,ed) -> re (E_vector_indexed (List.map (fun (i,e) -> (i,map_exp e)) ies, map_opt_default ed)) |
