aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Asmgenproof0.v
diff options
context:
space:
mode:
authorXavier Leroy <xavierleroy@users.noreply.github.com>2017-08-18 11:23:05 +0200
committerGitHub <noreply@github.com>2017-08-18 11:23:05 +0200
commitf66711dc06c73adf3dd715c564cb6d27b51c5199 (patch)
treee68a132caa6df4bc3215b638dfe83ddf9db7a506 /backend/Asmgenproof0.v
parentab6d5e98b4d967cc7834ad457b36bbf4c141f2ee (diff)
parentfc1b2bfea598354a3e939de35d270376c880e1b0 (diff)
downloadcompcert-f66711dc06c73adf3dd715c564cb6d27b51c5199.tar.gz
compcert-f66711dc06c73adf3dd715c564cb6d27b51c5199.zip
Merge pull request #22 from AbsIntPrivate/arm_large_offsets
Issue #P18: handle large offsets when accessing return address and back link in the stack frame
Diffstat (limited to 'backend/Asmgenproof0.v')
-rw-r--r--backend/Asmgenproof0.v29
1 files changed, 29 insertions, 0 deletions
diff --git a/backend/Asmgenproof0.v b/backend/Asmgenproof0.v
index 53ecf73a..0250628b 100644
--- a/backend/Asmgenproof0.v
+++ b/backend/Asmgenproof0.v
@@ -285,6 +285,23 @@ Proof.
exploit preg_of_injective; eauto. congruence.
Qed.
+Lemma agree_undef_regs2:
+ forall ms sp rl rs rs',
+ agree (Mach.undef_regs rl ms) sp rs ->
+ (forall r', data_preg r' = true -> preg_notin r' rl -> rs'#r' = rs#r') ->
+ agree (Mach.undef_regs rl ms) sp rs'.
+Proof.
+ intros. destruct H. split; auto.
+ rewrite <- agree_sp0. apply H0; auto.
+ rewrite preg_notin_charact. intros. apply not_eq_sym. apply preg_of_not_SP.
+ intros. destruct (In_dec mreg_eq r rl).
+ rewrite Mach.undef_regs_same; auto.
+ rewrite H0; auto.
+ apply preg_of_data.
+ rewrite preg_notin_charact. intros; red; intros. elim n.
+ exploit preg_of_injective; eauto. congruence.
+Qed.
+
Lemma agree_set_undef_mreg:
forall ms sp rs r v rl rs',
agree ms sp rs ->
@@ -738,6 +755,18 @@ Ltac TailNoLabel :=
| _ => idtac
end.
+Remark tail_nolabel_find_label:
+ forall lbl k c, tail_nolabel k c -> find_label lbl c = find_label lbl k.
+Proof.
+ intros. destruct H. auto.
+Qed.
+
+Remark tail_nolabel_is_tail:
+ forall k c, tail_nolabel k c -> is_tail k c.
+Proof.
+ intros. destruct H. auto.
+Qed.
+
(** * Execution of straight-line code *)
Section STRAIGHTLINE.