diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-03-16 16:51:42 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-03-16 16:51:42 +0000 |
commit | 707b6a1ae9660b13cf6f68c7c0ce74017f5981c5 (patch) | |
tree | 166a21d507612d60db40737333ddec5003fc81aa /backend/Asmgenproof0.v | |
parent | e44df4563f1cb893ab25b2a8b25d5b83095205be (diff) | |
download | compcert-707b6a1ae9660b13cf6f68c7c0ce74017f5981c5.tar.gz compcert-707b6a1ae9660b13cf6f68c7c0ce74017f5981c5.zip |
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.v | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/backend/Asmgenproof0.v b/backend/Asmgenproof0.v index e1a3abcc..72de80af 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 |