summaryrefslogtreecommitdiff
path: root/backend/Linear.v
diff options
context:
space:
mode:
Diffstat (limited to 'backend/Linear.v')
-rw-r--r--backend/Linear.v9
1 files changed, 6 insertions, 3 deletions
diff --git a/backend/Linear.v b/backend/Linear.v
index 3553ced..b218531 100644
--- a/backend/Linear.v
+++ b/backend/Linear.v
@@ -169,8 +169,8 @@ Definition return_regs (caller callee: locset) : locset :=
Definition undef_op (op: operation) (rs: locset) :=
match op with
- | Omove => rs
- | _ => undef_temps rs
+ | Omove => Locmap.undef destroyed_at_move rs
+ | _ => Locmap.undef temporaries rs
end.
Definition undef_getstack (s: slot) (rs: locset) :=
@@ -179,6 +179,9 @@ Definition undef_getstack (s: slot) (rs: locset) :=
| _ => rs
end.
+Definition undef_setstack (rs: locset) :=
+ Locmap.undef destroyed_at_move rs.
+
(** Linear execution states. *)
Inductive stackframe: Type :=
@@ -261,7 +264,7 @@ Inductive step: state -> trace -> state -> Prop :=
| exec_Lsetstack:
forall s f sp r sl b rs m,
step (State s f sp (Lsetstack r sl :: b) rs m)
- E0 (State s f sp b (Locmap.set (S sl) (rs (R r)) rs) m)
+ E0 (State s f sp b (Locmap.set (S sl) (rs (R r)) (undef_setstack rs)) m)
| exec_Lop:
forall s f sp op args res b rs m v,
eval_operation ge sp op (reglist rs args) m = Some v ->