diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2022-10-06 15:00:52 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2022-10-13 11:28:38 -0400 |
commit | b5563410ea613ff2b2d7c6fa1847cfcb1ff91efb (patch) | |
tree | 05cfe03ae8b832ab2a20077408a54e9b22434205 /libgcc/libgcov.h | |
parent | 3130e70dab1e64a7b014391fe941090d5f3b6b7d (diff) | |
download | gcc-b5563410ea613ff2b2d7c6fa1847cfcb1ff91efb.zip gcc-b5563410ea613ff2b2d7c6fa1847cfcb1ff91efb.tar.gz gcc-b5563410ea613ff2b2d7c6fa1847cfcb1ff91efb.tar.bz2 |
Add partial equivalence support to the relation oracle.
This provides enhancements to the equivalence oracle to also track
partial equivalences. They are tracked similar to equivalences, except
it tracks a 'slice' of another ssa name. 8, 16, 32 and 64 bit slices are
tracked. This will allow casts and mask of the same value to compare
equal.
* value-relation.cc (equiv_chain::dump): Don't print empty
equivalences.
(equiv_oracle::equiv_oracle): Allocate a partial equiv table.
(equiv_oracle::~equiv_oracle): Release the partial equiv table.
(equiv_oracle::add_partial_equiv): New.
(equiv_oracle::partial_equiv_set): New.
(equiv_oracle::partial_equiv): New.
(equiv_oracle::query_relation): Check for partial equivs too.
(equiv_oracle::dump): Also dump partial equivs.
(dom_oracle::register_relation): Handle partial equivs.
(dom_oracle::query_relation): Check for partial equivs.
* value-relation.h (enum relation_kind_t): Add partial equivs.
(relation_partial_equiv_p): New.
(relation_equiv_p): New.
(class pe_slice): New.
(class equiv_oracle): Add prototypes.
(pe_to_bits): New.
(bits_to_pe): New.
(pe_min): New.
Diffstat (limited to 'libgcc/libgcov.h')
0 files changed, 0 insertions, 0 deletions