diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/value-relation.cc | 55 | ||||
-rw-r--r-- | gcc/value-relation.h | 57 |
2 files changed, 57 insertions, 55 deletions
diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc index 7fc22d3..e6f5ef4 100644 --- a/gcc/value-relation.cc +++ b/gcc/value-relation.cc @@ -635,61 +635,6 @@ equiv_oracle::dump (FILE *f) const // -------------------------------------------------------------------------- - -// 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) -{ - 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); -} - // Negate the current relation. void 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 */ |