aboutsummaryrefslogtreecommitdiffstats
path: root/ia32/ConstpropOp.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-10-28 14:56:39 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-10-28 14:56:39 +0000
commit14a9bb4b267eeead8cd9503ee19e860a8bc0d763 (patch)
treec70dda532a974a7b62969c6b199b80d65784dc91 /ia32/ConstpropOp.v
parentb54721f58c2ecb65ce554d8b34f214d5121a2b0c (diff)
downloadcompcert-14a9bb4b267eeead8cd9503ee19e860a8bc0d763.tar.gz
compcert-14a9bb4b267eeead8cd9503ee19e860a8bc0d763.zip
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 'ia32/ConstpropOp.v')
-rw-r--r--ia32/ConstpropOp.v4
1 files changed, 2 insertions, 2 deletions
diff --git a/ia32/ConstpropOp.v b/ia32/ConstpropOp.v
index 7dfa0465..815ba0e0 100644
--- a/ia32/ConstpropOp.v
+++ b/ia32/ConstpropOp.v
@@ -288,7 +288,7 @@ Definition eval_static_operation (op: operation) (vl: list approx) :=
| Omulf, F n1 :: F n2 :: nil => F(Float.mul n1 n2)
| Odivf, F n1 :: F n2 :: nil => F(Float.div n1 n2)
| Osingleoffloat, F n1 :: nil => F(Float.singleoffloat n1)
- | Ointoffloat, F n1 :: nil => I(Float.intoffloat n1)
+ | Ointoffloat, F n1 :: nil => match Float.intoffloat n1 with Some x => I x | None => Unknown end
| Ofloatofint, I n1 :: nil => F(Float.floatofint n1)
| Ocmp c, vl => match eval_static_condition c vl with None => Unknown | Some b => I(if b then Int.one else Int.zero) end
| _, _ => Unknown
@@ -590,7 +590,7 @@ Definition eval_static_operation (op: operation) (vl: list approx) :=
| eval_static_operation_case38 n1 =>
F(Float.singleoffloat n1)
| eval_static_operation_case39 n1 =>
- I(Float.intoffloat n1)
+ match Float.intoffloat n1 with Some x => I x | None => Unknown end
| eval_static_operation_case41 n1 =>
F(Float.floatofint n1)
| eval_static_operation_case43 c vl =>