From dff22ef6d855973e0e0f05c7203a6bfa9a4cf01a Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Thu, 15 Jun 2017 15:11:26 +0200 Subject: Extend builtin arguments with a pointer addition operator This extension enables more addressing modes to be encoded as builtin arguments and used in conjunction with volatile memory accesses. Current status: x86 port only, the only new addressing mode handled is reg + offset. --- backend/Deadcodeproof.v | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'backend/Deadcodeproof.v') diff --git a/backend/Deadcodeproof.v b/backend/Deadcodeproof.v index 3f0c5a4c..07c3f84a 100644 --- a/backend/Deadcodeproof.v +++ b/backend/Deadcodeproof.v @@ -609,6 +609,12 @@ Proof. constructor; auto. apply vagree_lessdef. apply Val.longofwords_lessdef; apply lessdef_vagree; auto. +- destruct (transfer_builtin_arg All (ne1, nm1) a1) as [ne' nm'] eqn:TR. + exploit IHeval_builtin_arg2; eauto. intros (v2' & A & B & C & D). + exploit IHeval_builtin_arg1; eauto. intros (v1' & P & Q & R & S). + econstructor; intuition auto. + econstructor; eauto. + destruct Archi.ptr64; auto using Val.add_lessdef, Val.addl_lessdef, vagree_lessdef, lessdef_vagree. Qed. Lemma transfer_builtin_args_sound: @@ -657,6 +663,9 @@ Proof. - destruct IHeval_builtin_arg1 as (v1' & A1). destruct IHeval_builtin_arg2 as (v2' & A2). exists (Val.longofwords v1' v2'); constructor; auto. +- destruct IHeval_builtin_arg1 as (v1' & A1). + destruct IHeval_builtin_arg2 as (v2' & A2). + econstructor; econstructor; eauto. Qed. Lemma can_eval_builtin_args: -- cgit