summaryrefslogtreecommitdiff
path: root/backend/Asmgenproof0.v
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-03-16 16:51:42 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-03-16 16:51:42 +0000
commit707b6a1ae9660b13cf6f68c7c0ce74017f5981c5 (patch)
tree166a21d507612d60db40737333ddec5003fc81aa /backend/Asmgenproof0.v
parente44df4563f1cb893ab25b2a8b25d5b83095205be (diff)
Assorted changes to reduce stack and heap requirements when compiling very big functions.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2151 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Asmgenproof0.v')
-rw-r--r--backend/Asmgenproof0.v22
1 files changed, 22 insertions, 0 deletions
diff --git a/backend/Asmgenproof0.v b/backend/Asmgenproof0.v
index e1a3abc..72de80a 100644
--- a/backend/Asmgenproof0.v
+++ b/backend/Asmgenproof0.v
@@ -452,6 +452,28 @@ Inductive transl_code_at_pc (ge: Mach.genv):
code_tail (Int.unsigned ofs) (fn_code tf) tc ->
transl_code_at_pc ge (Vptr b ofs) b f c ep tf tc.
+(** Equivalence between [transl_code] and [transl_code']. *)
+
+Local Open Scope error_monad_scope.
+
+Lemma transl_code_rec_transl_code:
+ forall f il ep k,
+ transl_code_rec f il ep k = (do c <- transl_code f il ep; k c).
+Proof.
+ induction il; simpl; intros.
+ auto.
+ rewrite IHil.
+ destruct (transl_code f il (it1_is_parent ep a)); simpl; auto.
+Qed.
+
+Lemma transl_code'_transl_code:
+ forall f il ep,
+ transl_code' f il ep = transl_code f il ep.
+Proof.
+ intros. unfold transl_code'. rewrite transl_code_rec_transl_code.
+ destruct (transl_code f il ep); auto.
+Qed.
+
(** Predictor for return addresses in generated Asm code.
The [return_address_offset] predicate defined here is used in the