aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Selectionproof.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-02-04 19:14:14 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-02-04 19:14:14 +0000
commit25b9b003178002360d666919f2e49e7f5f4a36e2 (patch)
treed5f7fb317f34f3a7ac9383c21b0eb143317c30f8 /backend/Selectionproof.v
parent145b32ec504541e98f73b2c87ff2d8181b5e7968 (diff)
downloadcompcert-25b9b003178002360d666919f2e49e7f5f4a36e2.tar.gz
compcert-25b9b003178002360d666919f2e49e7f5f4a36e2.zip
Merge of the "volatile" branch:
- native treatment of volatile accesses in CompCert C's semantics - translation of volatile accesses to built-ins in SimplExpr - native treatment of struct assignment and passing struct parameter by value - only passing struct result by value remains emulated - in cparser, remove emulations that are no longer used - added C99's type _Bool and used it to express || and && more efficiently. git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1814 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Selectionproof.v')
-rw-r--r--backend/Selectionproof.v10
1 files changed, 10 insertions, 0 deletions
diff --git a/backend/Selectionproof.v b/backend/Selectionproof.v
index 54d59b1c..9681c66b 100644
--- a/backend/Selectionproof.v
+++ b/backend/Selectionproof.v
@@ -212,6 +212,7 @@ Proof.
apply eval_cast8signed; auto.
apply eval_cast16unsigned; auto.
apply eval_cast16signed; auto.
+ apply eval_boolval; auto.
apply eval_negint; auto.
apply eval_notbool; auto.
apply eval_notint; auto.
@@ -619,6 +620,15 @@ Proof.
eapply functions_translated; eauto.
apply sig_function_translated.
constructor; auto. apply call_cont_commut; auto.
+ (* Sbuiltin *)
+ exploit sel_exprlist_correct; eauto. intros [vargs' [P Q]].
+ exploit external_call_mem_extends; eauto.
+ intros [vres' [m2 [A [B [C D]]]]].
+ left; econstructor; split.
+ econstructor. eauto. eapply external_call_symbols_preserved; eauto.
+ exact symbols_preserved. exact varinfo_preserved.
+ constructor; auto.
+ destruct optid; simpl; auto. apply set_var_lessdef; auto.
(* Seq *)
left; econstructor; split. constructor. constructor; auto. constructor; auto.
(* Sifthenelse *)