aboutsummaryrefslogtreecommitdiffstats
path: root/backend
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-09-25 21:31:57 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-09-25 21:31:57 +0200
commitc420bc8d3b87d71c38209b5ab8bca22875466362 (patch)
tree0b8e76fc0421b1642571eb27a53acb94f246bf73 /backend
parent5ca4b192499ee4829aee1256a3bebf2318c68108 (diff)
downloadcompcert-kvx-c420bc8d3b87d71c38209b5ab8bca22875466362.tar.gz
compcert-kvx-c420bc8d3b87d71c38209b5ab8bca22875466362.zip
__builtin_expect defined as its first argument
Diffstat (limited to 'backend')
-rw-r--r--backend/Selection.v3
-rw-r--r--backend/Selectionproof.v7
2 files changed, 9 insertions, 1 deletions
diff --git a/backend/Selection.v b/backend/Selection.v
index 4ab3331e..7ba8fe92 100644
--- a/backend/Selection.v
+++ b/backend/Selection.v
@@ -243,7 +243,8 @@ Definition sel_builtin_res (optid: option ident) : builtin_res ident :=
Function sel_known_builtin (bf: builtin_function) (args: exprlist) :=
match bf, args with
| BI_platform b, _ =>
- SelectOp.platform_builtin b args
+ SelectOp.platform_builtin b args
+ | BI_standard BI_expect, a1 ::: a2 ::: Enil => Some a1
| BI_standard (BI_select ty), a1 ::: a2 ::: a3 ::: Enil =>
Some (sel_select ty a1 a2 a3)
| BI_standard BI_fabs, a1 ::: Enil =>
diff --git a/backend/Selectionproof.v b/backend/Selectionproof.v
index 8a827af2..0be96167 100644
--- a/backend/Selectionproof.v
+++ b/backend/Selectionproof.v
@@ -395,6 +395,13 @@ Proof.
inv ARGS; try discriminate. inv H0; try discriminate.
inv SEL.
simpl in SEM; inv SEM. apply eval_absf; auto.
++ (* expect *)
+ inv ARGS; try discriminate.
+ inv H0; try discriminate.
+ inv H2; try discriminate.
+ simpl in SEM. inv SEM. inv SEL.
+ destruct v1; destruct v0.
+ all: econstructor; split; eauto.
- eapply eval_platform_builtin; eauto.
Qed.