aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--backend/Lineartyping.v6
-rw-r--r--backend/Stackingproof.v13
-rw-r--r--driver/Compiler.v2
-rw-r--r--mppa_k1c/Asmgenproof.v8
4 files changed, 19 insertions, 10 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'
diff --git a/driver/Compiler.v b/driver/Compiler.v
index 75247f71..6d398327 100644
--- a/driver/Compiler.v
+++ b/driver/Compiler.v
@@ -69,7 +69,7 @@ Require Linearizeproof.
Require CleanupLabelsproof.
Require Debugvarproof.
Require Stackingproof.
-Require Asmgenproof.
+Require Import Asmgenproof.
(** Command-line flags. *)
Require Import Compopts.
diff --git a/mppa_k1c/Asmgenproof.v b/mppa_k1c/Asmgenproof.v
index 74be571d..8eb0b693 100644
--- a/mppa_k1c/Asmgenproof.v
+++ b/mppa_k1c/Asmgenproof.v
@@ -160,3 +160,11 @@ End PRESERVATION.
Instance TransfAsm: TransfLink match_prog := pass_match_link (compose_passes block_passes).
+(*******************************************)
+(* Stub actually needed by driver/Compiler *)
+
+Module Asmgenproof0.
+
+Definition return_address_offset := return_address_offset.
+
+End Asmgenproof0. \ No newline at end of file