summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
authorKathy Gray2014-02-14 15:55:38 +0000
committerKathy Gray2014-02-14 15:55:38 +0000
commite63004599c19e8e741918c6e64ec0a5362abc8ed (patch)
treefebb92f46e3b83db9b4a96e36893d15660109de5 /src/lem_interp
parent65c30622a25d10eebec650284949c6c3270df5ac (diff)
Fix infinite loop bug, and test1.sail type checking bug
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/interp.lem9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index 7aee25e3..f498295c 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -819,7 +819,14 @@ and interp_main t_level l_env l_mem exp =
| (outcome,Just lexp_builder) ->
resolve_outcome outcome
(fun v lm le -> (Value v,lm,le))
- (fun a -> update_stack a (add_to_top_frame (fun e -> (E_assign (lexp_builder e) (to_exp v))))) end))
+ (fun a ->
+ (match a with
+ | (Action (Write_reg regf range value) stack) ->
+ (Action (Write_reg regf range value) stack)
+ | (Action (Write_mem id a range value) stack) ->
+ (Action (Write_mem id a range value) stack)
+ | _ -> update_stack a (add_to_top_frame (fun e -> (E_assign (lexp_builder e) (to_exp v)))) end))
+ end))
(fun a -> update_stack a (add_to_top_frame (fun v -> (E_assign lexp v))))
end