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/Inliningproof.v | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'backend/Inliningproof.v') diff --git a/backend/Inliningproof.v b/backend/Inliningproof.v index bc991f0f..c3b0cfc3 100644 --- a/backend/Inliningproof.v +++ b/backend/Inliningproof.v @@ -436,9 +436,13 @@ Proof. unfold Senv.symbol_address; simpl; unfold Genv.symbol_address. rewrite symbols_preserved. destruct (Genv.find_symbol ge id) as [b|] eqn:FS; auto. inv MG. econstructor. eauto. rewrite Ptrofs.add_zero; auto. -- destruct IHeval_builtin_arg1 as (v1 & A1 & B1). - destruct IHeval_builtin_arg2 as (v2 & A2 & B2). +- destruct IHeval_builtin_arg1 as (v1' & A1 & B1). + destruct IHeval_builtin_arg2 as (v2' & A2 & B2). econstructor; split. eauto with barg. apply Val.longofwords_inject; auto. +- destruct IHeval_builtin_arg1 as (v1' & A1 & B1). + destruct IHeval_builtin_arg2 as (v2' & A2 & B2). + econstructor; split. eauto with barg. + destruct Archi.ptr64; auto using Val.add_inject, Val.addl_inject. Qed. Lemma tr_builtin_args: -- cgit