aboutsummaryrefslogtreecommitdiffstats
path: root/cfrontend/Cshmgenproof.v
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-07-06 12:51:42 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2015-07-06 12:51:42 +0200
commite30aa60a06817ed67c14a80430a7275defc41e76 (patch)
treeb4bb512416a40578db1f32eb3a7836ddb6f8582d /cfrontend/Cshmgenproof.v
parentaa780c7145a418b4a7264e828258034fc4629313 (diff)
parent2f31c1867b75040067a1ef74ae32f197e8d296c1 (diff)
downloadcompcert-e30aa60a06817ed67c14a80430a7275defc41e76.tar.gz
compcert-e30aa60a06817ed67c14a80430a7275defc41e76.zip
Merge branch 'master' into json_export
Conflicts: driver/Driver.ml
Diffstat (limited to 'cfrontend/Cshmgenproof.v')
-rw-r--r--cfrontend/Cshmgenproof.v15
1 files changed, 13 insertions, 2 deletions
diff --git a/cfrontend/Cshmgenproof.v b/cfrontend/Cshmgenproof.v
index 025d7b66..c69d0c0a 100644
--- a/cfrontend/Cshmgenproof.v
+++ b/cfrontend/Cshmgenproof.v
@@ -490,8 +490,19 @@ Proof.
destruct (classify_sub tya tyb); inv MAKE.
- destruct va; try discriminate; destruct vb; inv SEM; eauto with cshm.
- destruct va; try discriminate; destruct vb; inv SEM.
- destruct (eq_block b0 b1); try discriminate. destruct (Int.eq (Int.repr (sizeof ce ty)) Int.zero) eqn:E; inv H0.
- econstructor; eauto with cshm. rewrite dec_eq_true. simpl. rewrite E; auto.
+ destruct (eq_block b0 b1); try discriminate.
+ set (sz := sizeof ce ty) in *.
+ destruct (zlt 0 sz); try discriminate.
+ destruct (zle sz Int.max_signed); simpl in H0; inv H0.
+ econstructor; eauto with cshm.
+ rewrite dec_eq_true; simpl.
+ assert (E: Int.signed (Int.repr sz) = sz).
+ { apply Int.signed_repr. generalize Int.min_signed_neg; omega. }
+ predSpec Int.eq Int.eq_spec (Int.repr sz) Int.zero.
+ rewrite H in E; rewrite Int.signed_zero in E; omegaContradiction.
+ predSpec Int.eq Int.eq_spec (Int.repr sz) Int.mone.
+ rewrite H0 in E; rewrite Int.signed_mone in E; omegaContradiction.
+ rewrite andb_false_r; auto.
- destruct va; try discriminate; destruct vb; inv SEM; eauto with cshm.
- eapply make_binarith_correct; eauto; intros; auto.
Qed.