diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/constant_fold.ml | 3 | ||||
| -rw-r--r-- | src/rewrites.ml | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/constant_fold.ml b/src/constant_fold.ml index 14d6550c..f2e0add5 100644 --- a/src/constant_fold.ml +++ b/src/constant_fold.ml @@ -251,10 +251,11 @@ let rec rewrite_constant_function_calls' ast = let rewrite_count = ref 0 in let ok () = incr rewrite_count in let not_ok () = decr rewrite_count in + let istate = initial_state ast Type_check.initial_env in let rw_defs = { rewriters_base with - rewrite_exp = (fun _ -> rw_exp ok not_ok (initial_state ast Type_check.initial_env)) + rewrite_exp = (fun _ -> rw_exp ok not_ok istate) } in let ast = rewrite_defs_base rw_defs ast in (* We keep iterating until we have no more re-writes to do *) diff --git a/src/rewrites.ml b/src/rewrites.ml index 34d45618..a37449a4 100644 --- a/src/rewrites.ml +++ b/src/rewrites.ml @@ -2153,6 +2153,10 @@ let rewrite_simple_assignments env defs = let assign_e_aux e_aux annot = let env = env_of_annot annot in match e_aux with + | E_assign (LEXP_aux (LEXP_id _, _), _) -> + E_aux (e_aux, annot) + | E_assign (LEXP_aux (LEXP_cast (_, _), _), _) -> + E_aux (e_aux, annot) | E_assign (lexp, exp) -> let (lexp, rhs) = rewrite_lexp_to_rhs lexp in let assign = mk_exp (E_assign (strip_lexp lexp, strip_exp (rhs exp))) in |
