aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSE3analysis.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-07 00:01:44 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-07 00:01:44 +0100
commita3e4da1161853ed2911af39621200794f730e4ff (patch)
tree32658f42899d0fa3e84a6b7c57340d6de9e2d278 /backend/CSE3analysis.v
parente9cfef4367a6631f06c3b7ca81faa822326282e8 (diff)
downloadcompcert-kvx-a3e4da1161853ed2911af39621200794f730e4ff.tar.gz
compcert-kvx-a3e4da1161853ed2911af39621200794f730e4ff.zip
get_kills_has_arg
Diffstat (limited to 'backend/CSE3analysis.v')
-rw-r--r--backend/CSE3analysis.v21
1 files changed, 21 insertions, 0 deletions
diff --git a/backend/CSE3analysis.v b/backend/CSE3analysis.v
index 0240671d..92d9202a 100644
--- a/backend/CSE3analysis.v
+++ b/backend/CSE3analysis.v
@@ -225,6 +225,27 @@ Proof.
eassumption.
Qed.
+Lemma get_kills_has_arg :
+ forall eqs lhs sop arg args j,
+ PTree.get j eqs = Some {| eq_lhs := lhs;
+ eq_op := sop;
+ eq_args:= args |} ->
+ In arg args ->
+ PSet.contains (Regmap.get arg (get_kills eqs)) j = true.
+Proof.
+ unfold get_kills.
+ intros.
+ rewrite PTree.fold_spec.
+ change (fold_left
+ (fun (a : Regmap.t PSet.t) (p : positive * equation) =>
+ add_i_j (eq_lhs (snd p)) (fst p)
+ (add_ilist_j (eq_args (snd p)) (fst p) a))) with xlget_kills.
+ eapply xlget_kills_has_arg.
+ - apply PTree.elements_correct.
+ eassumption.
+ - assumption.
+Qed.
+
(*
Lemma xget_kills_monotone :
forall eqs m i j,