aboutsummaryrefslogtreecommitdiffstats
path: root/backend
diff options
context:
space:
mode:
authorSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2018-11-27 15:34:34 +0100
committerSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2018-11-27 15:34:34 +0100
commit3af2dc7aaa8c8139ddd26589258f2b289425f591 (patch)
treee9c5d9912a91f51a80ae462c499e63c2f9ccc650 /backend
parent5631ccb7c416bb7ecbe7920cb432a78436c0a7ac (diff)
downloadcompcert-kvx-3af2dc7aaa8c8139ddd26589258f2b289425f591.tar.gz
compcert-kvx-3af2dc7aaa8c8139ddd26589258f2b289425f591.zip
Compiles for x86 and mppa_k1c (except Asmexpandaux.ml)
Diffstat (limited to 'backend')
-rw-r--r--backend/Lineartyping.v6
-rw-r--r--backend/Stackingproof.v13
2 files changed, 10 insertions, 9 deletions
diff --git a/backend/Lineartyping.v b/backend/Lineartyping.v
index fc163719..bc9fb3ca 100644
--- a/backend/Lineartyping.v
+++ b/backend/Lineartyping.v
@@ -321,11 +321,11 @@ Local Opaque mreg_type.
+ (* other ops *)
destruct (type_of_operation op) as [ty_args ty_res] eqn:TYOP. InvBooleans.
econstructor; eauto.
- apply wt_setreg; auto. eapply Val.has_subtype; eauto.
+ apply wt_setreg; auto; try (apply wt_undef_regs; auto).
+ eapply Val.has_subtype; eauto.
change ty_res with (snd (ty_args, ty_res)). rewrite <- TYOP. eapply type_of_operation_sound; eauto.
red; intros; subst op. simpl in ISMOVE.
- destruct args; try discriminate. destruct args; discriminate.
- apply wt_undef_regs; auto.
+ destruct args; try discriminate. destruct args; discriminate.
- (* load *)
simpl in *; InvBooleans.
econstructor; eauto.
diff --git a/backend/Stackingproof.v b/backend/Stackingproof.v
index ffd9b227..326fab61 100644
--- a/backend/Stackingproof.v
+++ b/backend/Stackingproof.v
@@ -1891,12 +1891,13 @@ Proof.
apply plus_one. econstructor.
instantiate (1 := v'). rewrite <- A. apply eval_operation_preserved.
exact symbols_preserved. eauto.
- econstructor; eauto with coqlib.
- apply agree_regs_set_reg; auto.
- rewrite transl_destroyed_by_op. apply agree_regs_undef_regs; auto.
- apply agree_locs_set_reg; auto. apply agree_locs_undef_locs. auto. apply destroyed_by_op_caller_save.
- apply frame_set_reg. apply frame_undef_regs. exact SEP.
-
+ econstructor; eauto with coqlib;
+ try (apply agree_regs_set_reg; auto);
+ (* generic proof *)
+ solve [
+ (rewrite transl_destroyed_by_op; apply agree_regs_undef_regs; auto) |
+ (apply agree_locs_set_reg; auto; apply agree_locs_undef_locs; auto; apply destroyed_by_op_caller_save) |
+ (apply frame_set_reg; apply frame_undef_regs; exact SEP) ].
- (* Lload *)
assert (exists a',
eval_addressing ge (Vptr sp' Ptrofs.zero) (transl_addr (make_env (function_bounds f)) addr) rs0##args = Some a'