aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Alloctyping.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-12-21 13:32:24 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-12-21 13:32:24 +0000
commitdc4bed2cf06f46687225275131f411c86c773598 (patch)
tree9d99e759d906d061b6f213e0b20cb4bd53580ea6 /backend/Alloctyping.v
parentec6d00d94bcb1a0adc5c698367634b5e2f370c6e (diff)
downloadcompcert-dc4bed2cf06f46687225275131f411c86c773598.tar.gz
compcert-dc4bed2cf06f46687225275131f411c86c773598.zip
Revised back-end so that only 2 integer registers are reserved for reloading.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@925 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Alloctyping.v')
-rw-r--r--backend/Alloctyping.v15
1 files changed, 11 insertions, 4 deletions
diff --git a/backend/Alloctyping.v b/backend/Alloctyping.v
index 469fd3c3..d9ab17b0 100644
--- a/backend/Alloctyping.v
+++ b/backend/Alloctyping.v
@@ -106,6 +106,7 @@ Ltac WT :=
Lemma wt_transf_instr:
forall pc instr,
RTLtyping.wt_instr env f instr ->
+ f.(RTL.fn_code)!pc = Some instr ->
wt_instr tf (transf_instr f live alloc pc instr).
Proof.
intros. inv H; simpl.
@@ -124,13 +125,19 @@ Proof.
(* store *)
WT.
(* call *)
+ exploit regalloc_correct_1; eauto. unfold correct_alloc_instr.
+ intros [A1 [A2 A3]].
WT.
- destruct ros; simpl. autorewrite with allocty; auto. auto.
- destruct ros; simpl; auto with allocty.
+ destruct ros; simpl; auto.
+ split. autorewrite with allocty; auto.
+ split. auto with allocty. auto.
(* tailcall *)
+ exploit regalloc_correct_1; eauto. unfold correct_alloc_instr.
+ intro A1.
WT.
- destruct ros; simpl. autorewrite with allocty; auto. auto.
- destruct ros; simpl; auto with allocty.
+ destruct ros; simpl; auto.
+ split. autorewrite with allocty; auto.
+ split. auto with allocty. auto.
rewrite transf_unroll; auto.
(* alloc *)
WT.