diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-08-08 06:31:10 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-08-08 06:31:10 +0000 |
commit | 5909a0340ad0fe871dede1eaead855fb4b68fb0e (patch) | |
tree | 4dd849283a636edd09bbcc8be8c6371a11b6faa0 /backend/Linear.v | |
parent | 5d1c52555bb166430402103afe9540cc4c296487 (diff) | |
download | compcert-5909a0340ad0fe871dede1eaead855fb4b68fb0e.tar.gz compcert-5909a0340ad0fe871dede1eaead855fb4b68fb0e.zip |
IA32 port: more faithful treatment of pseudoregister ST0.
Related general change: support for destroyed_at_moves.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1700 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Linear.v')
-rw-r--r-- | backend/Linear.v | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/backend/Linear.v b/backend/Linear.v index 3553ced9..b2185315 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 -> |