aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2022-10-06 15:00:52 -0400
committerAndrew MacLeod <amacleod@redhat.com>2022-10-13 11:28:38 -0400
commitb5563410ea613ff2b2d7c6fa1847cfcb1ff91efb (patch)
tree05cfe03ae8b832ab2a20077408a54e9b22434205 /libgcc
parent3130e70dab1e64a7b014391fe941090d5f3b6b7d (diff)
downloadgcc-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')
0 files changed, 0 insertions, 0 deletions