aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSE3analysis.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-05-06 20:16:08 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-05-06 20:16:08 +0200
commitf1f535cad98f3db3e586f0f7a2dbc329fc5bff6f (patch)
tree1a4fed5a512a4db2c62472ba7ee2e7cf2810ed3c /backend/CSE3analysis.v
parentb679621ac631ac2783bfd391042d30c120b5a220 (diff)
downloadcompcert-kvx-f1f535cad98f3db3e586f0f7a2dbc329fc5bff6f.tar.gz
compcert-kvx-f1f535cad98f3db3e586f0f7a2dbc329fc5bff6f.zip
CSE3 across merges
Diffstat (limited to 'backend/CSE3analysis.v')
-rw-r--r--backend/CSE3analysis.v36
1 files changed, 25 insertions, 11 deletions
diff --git a/backend/CSE3analysis.v b/backend/CSE3analysis.v
index b5fdbd63..bd507dec 100644
--- a/backend/CSE3analysis.v
+++ b/backend/CSE3analysis.v
@@ -75,29 +75,43 @@ Module RELATION <: SEMILATTICE_WITHOUT_BOTTOM.
intuition.
Qed.
- Definition lub := PSet.inter.
+ Definition lub x y :=
+ if Compopts.optim_CSE3_across_merges tt
+ then PSet.inter x y
+ else PSet.empty.
+
Definition glb := PSet.union.
Lemma ge_lub_left: forall x y, ge (lub x y) x.
Proof.
unfold ge, lub.
intros.
- apply PSet.is_subset_spec.
- intro.
- rewrite PSet.ginter.
- rewrite andb_true_iff.
- intuition.
+ destruct (Compopts.optim_CSE3_across_merges tt).
+ - apply PSet.is_subset_spec.
+ intro.
+ rewrite PSet.ginter.
+ rewrite andb_true_iff.
+ intuition.
+ - apply PSet.is_subset_spec.
+ intro.
+ rewrite PSet.gempty.
+ discriminate.
Qed.
Lemma ge_lub_right: forall x y, ge (lub x y) y.
Proof.
unfold ge, lub.
intros.
- apply PSet.is_subset_spec.
- intro.
- rewrite PSet.ginter.
- rewrite andb_true_iff.
- intuition.
+ destruct (Compopts.optim_CSE3_across_merges tt).
+ - apply PSet.is_subset_spec.
+ intro.
+ rewrite PSet.ginter.
+ rewrite andb_true_iff.
+ intuition.
+ - apply PSet.is_subset_spec.
+ intro.
+ rewrite PSet.gempty.
+ discriminate.
Qed.
Definition top := PSet.empty.