summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-10-28 14:56:39 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-10-28 14:56:39 +0000
commit14a9bb4b267eeead8cd9503ee19e860a8bc0d763 (patch)
treec70dda532a974a7b62969c6b199b80d65784dc91 /backend
parentb54721f58c2ecb65ce554d8b34f214d5121a2b0c (diff)
Float.intoffloat and Float.intuoffloat are now partial functions.
(May fail if float is too big to be converted.) git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1544 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend')
-rw-r--r--backend/Cminor.v4
-rw-r--r--backend/Selectionproof.v4
2 files changed, 4 insertions, 4 deletions
diff --git a/backend/Cminor.v b/backend/Cminor.v
index 4e57d3c..a3a166c 100644
--- a/backend/Cminor.v
+++ b/backend/Cminor.v
@@ -240,8 +240,8 @@ Definition eval_unop (op: unary_operation) (arg: val) : option val :=
| Onegf, Vfloat f1 => Some (Vfloat (Float.neg f1))
| Oabsf, Vfloat f1 => Some (Vfloat (Float.abs f1))
| Osingleoffloat, _ => Some (Val.singleoffloat arg)
- | Ointoffloat, Vfloat f1 => Some (Vint (Float.intoffloat f1))
- | Ointuoffloat, Vfloat f1 => Some (Vint (Float.intuoffloat f1))
+ | Ointoffloat, Vfloat f1 => option_map Vint (Float.intoffloat f1)
+ | Ointuoffloat, Vfloat f1 => option_map Vint (Float.intuoffloat f1)
| Ofloatofint, Vint n1 => Some (Vfloat (Float.floatofint n1))
| Ofloatofintu, Vint n1 => Some (Vfloat (Float.floatofintu n1))
| _, _ => None
diff --git a/backend/Selectionproof.v b/backend/Selectionproof.v
index cb9f4fc..d997015 100644
--- a/backend/Selectionproof.v
+++ b/backend/Selectionproof.v
@@ -220,8 +220,8 @@ Proof.
apply eval_negf; auto.
apply eval_absf; auto.
apply eval_singleoffloat; auto.
- apply eval_intoffloat; auto.
- apply eval_intuoffloat; auto.
+ remember (Float.intoffloat f) as oi; destruct oi; inv H0. eapply eval_intoffloat; eauto.
+ remember (Float.intuoffloat f) as oi; destruct oi; inv H0. eapply eval_intuoffloat; eauto.
apply eval_floatofint; auto.
apply eval_floatofintu; auto.
Qed.