diff options
Diffstat (limited to 'lib/Analysis/LiveVar/ValueSet.cpp')
-rw-r--r-- | lib/Analysis/LiveVar/ValueSet.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/Analysis/LiveVar/ValueSet.cpp b/lib/Analysis/LiveVar/ValueSet.cpp new file mode 100644 index 0000000000..d86587cde4 --- /dev/null +++ b/lib/Analysis/LiveVar/ValueSet.cpp @@ -0,0 +1,63 @@ + +#include "llvm/Analysis/LiveVar/ValueSet.h" + + +void printValue( const Value *const v) // func to print a Value +{ + if( (*v).hasName() ) cout << v << "(" << ((*v).getName()) << ") "; + //if( (*v).hasName() ) cout << ((*v).getName()) << " "; + else cout << v << " "; +} + + +//---------------- Method implementations -------------------------- + + +ValueSet:: ValueSet() : hash_set<const Value *, hashFuncValue> () { } + + // for performing two set unions +bool ValueSet::setUnion( const ValueSet *const set1) { + const_iterator set1it; + pair<iterator, bool> result; + bool changed = false; + + for( set1it = set1->begin() ; set1it != set1->end(); set1it++) { + // for all all elements in set1 + result = insert( *set1it ); // insert to this set + if( result.second == true) changed = true; + } + + return changed; +} + + + // for performing set difference +void ValueSet::setDifference( const ValueSet *const set1, + const ValueSet *const set2) { + + const_iterator set1it, set2it; + for( set1it = set1->begin() ; set1it != set1->end(); set1it++) { + // for all elements in set1 + iterator set2it = set2->find( *set1it ); // find wether the elem is in set2 + if( set2it == set2->end() ) // if the element is not in set2 + insert( *set1it ); // insert to this set + } +} + + + // for performing set subtraction +void ValueSet::setSubtract( const ValueSet *const set1) { + const_iterator set1it; + for( set1it = set1->begin() ; set1it != set1->end(); set1it++) + // for all elements in set1 + erase( *set1it ); // erase that element from this set +} + + + + +void ValueSet::printSet() const { // for printing a live variable set + const_iterator it; + for( it = begin() ; it != end(); it++) + printValue( *it ); +} |