diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2014-04-09 13:26:16 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2014-04-09 13:26:16 +0000 |
commit | 336a1f906a9c617e68e9d43e244bf42e9bdbae64 (patch) | |
tree | 47c65aa1aa9c9eadbd98ec0e443ad0105bb0b268 /backend/SelectLongproof.v | |
parent | 76f49ca6af4ffbc77c0ba7965d409c3de04011bd (diff) | |
download | compcert-336a1f906a9c617e68e9d43e244bf42e9bdbae64.tar.gz compcert-336a1f906a9c617e68e9d43e244bf42e9bdbae64.zip |
Constprop: use "not" for "xorimm(-1)"; optimize == 1 and != 0 comparisons over booleans.
Select*: more systematic constant propagation; don't CP shifts by amounts outside of [0..31].
Driver: timer for whole compilation.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2452 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/SelectLongproof.v')
-rw-r--r-- | backend/SelectLongproof.v | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/backend/SelectLongproof.v b/backend/SelectLongproof.v index 26f33dab..ec0dd2cd 100644 --- a/backend/SelectLongproof.v +++ b/backend/SelectLongproof.v @@ -1024,16 +1024,10 @@ Proof. rename i into x. rename i0 into y. destruct c; simpl. - (* Ceq *) - destruct (is_longconst_zero b) eqn:LC. -+ exploit is_longconst_zero_sound; eauto. intros EQ; inv EQ; clear H0. - apply eval_cmpl_eq_zero; auto. -+ exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B. inv B. + exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B. inv B. rewrite int64_eq_xor. apply eval_cmpl_eq_zero; auto. - (* Cne *) - destruct (is_longconst_zero b) eqn:LC. -+ exploit is_longconst_zero_sound; eauto. intros EQ; inv EQ; clear H0. - apply eval_cmpl_ne_zero; auto. -+ exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B. inv B. + exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B. inv B. rewrite int64_eq_xor. apply eval_cmpl_ne_zero; auto. - (* Clt *) exploit (eval_cmplu_gen Clt Clt). eexact H. eexact H0. simpl. @@ -1095,16 +1089,10 @@ Proof. rename i into x. rename i0 into y. destruct c; simpl. - (* Ceq *) - destruct (is_longconst_zero b) eqn:LC. -+ exploit is_longconst_zero_sound; eauto. intros EQ; inv EQ; clear H0. - apply eval_cmpl_eq_zero; auto. -+ exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B; inv B. + exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B; inv B. rewrite int64_eq_xor. apply eval_cmpl_eq_zero; auto. - (* Cne *) - destruct (is_longconst_zero b) eqn:LC. -+ exploit is_longconst_zero_sound; eauto. intros EQ; inv EQ; clear H0. - apply eval_cmpl_ne_zero; auto. -+ exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B; inv B. + exploit eval_xorl. eexact H. eexact H0. intros [v1 [A B]]. simpl in B; inv B. rewrite int64_eq_xor. apply eval_cmpl_ne_zero; auto. - (* Clt *) destruct (is_longconst_zero b) eqn:LC. |