diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-03-07 00:01:44 +0100 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-03-07 00:01:44 +0100 |
commit | a3e4da1161853ed2911af39621200794f730e4ff (patch) | |
tree | 32658f42899d0fa3e84a6b7c57340d6de9e2d278 /backend/CSE3analysis.v | |
parent | e9cfef4367a6631f06c3b7ca81faa822326282e8 (diff) | |
download | compcert-kvx-a3e4da1161853ed2911af39621200794f730e4ff.tar.gz compcert-kvx-a3e4da1161853ed2911af39621200794f730e4ff.zip |
get_kills_has_arg
Diffstat (limited to 'backend/CSE3analysis.v')
-rw-r--r-- | backend/CSE3analysis.v | 21 |
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, |