aboutsummaryrefslogtreecommitdiffstats
path: root/cfrontend/Cminorgenproof.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2006-09-19 15:13:42 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2006-09-19 15:13:42 +0000
commiteb7c8587f462adca878088ef5f610c81734efc70 (patch)
tree6771c5be9d0d6048357be99c663ec64981ad63dd /cfrontend/Cminorgenproof.v
parent165407527b1be7df6a376791719321c788e55149 (diff)
downloadcompcert-kvx-eb7c8587f462adca878088ef5f610c81734efc70.tar.gz
compcert-kvx-eb7c8587f462adca878088ef5f610c81734efc70.zip
Meilleure compilation de la negation booleenne
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@112 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cfrontend/Cminorgenproof.v')
-rw-r--r--cfrontend/Cminorgenproof.v7
1 files changed, 7 insertions, 0 deletions
diff --git a/cfrontend/Cminorgenproof.v b/cfrontend/Cminorgenproof.v
index f700f829..93eb99d9 100644
--- a/cfrontend/Cminorgenproof.v
+++ b/cfrontend/Cminorgenproof.v
@@ -888,6 +888,13 @@ Proof.
change (Vint (Int.cast8signed i)) with (Val.cast8signed (Vint i)). eauto with evalexpr.
change (Vint (Int.cast16unsigned i)) with (Val.cast16unsigned (Vint i)). eauto with evalexpr.
change (Vint (Int.cast16signed i)) with (Val.cast16signed (Vint i)). eauto with evalexpr.
+ replace (Int.eq i Int.zero) with (negb (negb (Int.eq i Int.zero))).
+ eapply eval_notbool. eauto.
+ generalize (Int.eq_spec i Int.zero). destruct (Int.eq i Int.zero); intro; simpl.
+ rewrite H1; constructor. constructor; auto.
+ apply negb_elim.
+ unfold Vfalse; TrivialOp. change (Vint Int.zero) with (Val.of_bool (negb true)).
+ eapply eval_notbool. eauto. constructor.
change (Vfloat (Float.singleoffloat f0)) with (Val.singleoffloat (Vfloat f0)). eauto with evalexpr.
(* Binary operations *)
inversion H1; clear H1; subst. inversion H11; clear H11; subst.