From 707b6a1ae9660b13cf6f68c7c0ce74017f5981c5 Mon Sep 17 00:00:00 2001 From: xleroy Date: Sat, 16 Mar 2013 16:51:42 +0000 Subject: 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 --- backend/Asmgenproof0.v | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'backend/Asmgenproof0.v') 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 -- cgit v1.2.3