From 00b605a1d52696b055dd232a05dd54a312680b93 Mon Sep 17 00:00:00 2001 From: xleroy Date: Thu, 26 Mar 2009 09:50:18 +0000 Subject: Added tail call optimization pass git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1015 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- common/Mem.v | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'common/Mem.v') diff --git a/common/Mem.v b/common/Mem.v index de3e8c94..e169dfc7 100644 --- a/common/Mem.v +++ b/common/Mem.v @@ -1796,6 +1796,26 @@ Proof. unfold inject_id; intros. congruence. Qed. +Lemma free_left_lessdef: + forall m1 m2 b, + lessdef m1 m2 -> lessdef (free m1 b) m2. +Proof. + intros. destruct H. split. + rewrite <- H. auto. + apply free_left_inj; auto. +Qed. + +Lemma free_right_lessdef: + forall m1 m2 b, + lessdef m1 m2 -> low_bound m1 b >= high_bound m1 b -> + lessdef m1 (free m2 b). +Proof. + intros. destruct H. unfold lessdef. split. + rewrite H. auto. + apply free_right_inj; auto. intros. unfold inject_id in H2. inv H2. + red; intro. inv H2. generalize (size_chunk_pos chunk); intro. omega. +Qed. + Lemma valid_block_lessdef: forall m1 m2 b, lessdef m1 m2 -> valid_block m1 b -> valid_block m2 b. Proof. -- cgit