diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2022-09-22 17:27:36 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2022-09-29 18:34:18 -0400 |
commit | cfa7434c4b09e439ae8b904ad116adf6d3033f8c (patch) | |
tree | 6d93466c3ab0f8c76400d59a1b42371873b891fb /gcc/value-relation.h | |
parent | ef9bc3626ceacf9a81c1e6178a5b0eb83ca2e559 (diff) | |
download | gcc-cfa7434c4b09e439ae8b904ad116adf6d3033f8c.zip gcc-cfa7434c4b09e439ae8b904ad116adf6d3033f8c.tar.gz gcc-cfa7434c4b09e439ae8b904ad116adf6d3033f8c.tar.bz2 |
Move class value_relation the header file.
* value-relation.cc (class value_relation): Move to .h file.
(value_relation::set_relation): Ditto.
(value_relation::value_relation): ditto.
* value-relation.h (class value_relation): Move from .cc file.
(value_relation::set_relation): Ditto
(value_relation::value_relation): Ditto.
Diffstat (limited to 'gcc/value-relation.h')
-rw-r--r-- | gcc/value-relation.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gcc/value-relation.h b/gcc/value-relation.h index 64884a8..f3b18ac 100644 --- a/gcc/value-relation.h +++ b/gcc/value-relation.h @@ -256,4 +256,61 @@ private: bitmap_obstack m_bitmaps; struct obstack m_chain_obstack; }; + +// The value-relation class is used to encapsulate the represention of an +// individual relation between 2 ssa-names, and to facilitate operating on +// the relation. + +class value_relation +{ +public: + value_relation (); + value_relation (relation_kind kind, tree n1, tree n2); + void set_relation (relation_kind kind, tree n1, tree n2); + + inline relation_kind kind () const { return related; } + inline tree op1 () const { return name1; } + inline tree op2 () const { return name2; } + + bool union_ (value_relation &p); + bool intersect (value_relation &p); + void negate (); + bool apply_transitive (const value_relation &rel); + + void dump (FILE *f) const; +private: + relation_kind related; + tree name1, name2; +}; + +// Set relation R between ssa_name N1 and N2. + +inline void +value_relation::set_relation (relation_kind r, tree n1, tree n2) +{ + gcc_checking_assert (TREE_CODE (n1) == SSA_NAME + && TREE_CODE (n2) == SSA_NAME); + related = r; + name1 = n1; + name2 = n2; +} + +// Default constructor. + +inline +value_relation::value_relation () +{ + related = VREL_VARYING; + name1 = NULL_TREE; + name2 = NULL_TREE; +} + +// Constructor for relation R between SSA version N1 nd N2. + +inline +value_relation::value_relation (relation_kind kind, tree n1, tree n2) +{ + set_relation (kind, n1, n2); +} + #endif /* GCC_VALUE_RELATION_H */ |