]> granicus.if.org Git - clang/commitdiff
UninitializedValues: wrap BitVector references in a new class ValueVector. No functi...
authorTed Kremenek <kremenek@apple.com>
Tue, 15 Mar 2011 04:57:29 +0000 (04:57 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 15 Mar 2011 04:57:29 +0000 (04:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127664 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/UninitializedValues.cpp

index 5dd4c236aace2040d3f284203eeff92b864f770c..ecd9d494f96fc66efe1c8f52c1c58b1c4d95edc1 100644 (file)
@@ -74,7 +74,22 @@ llvm::Optional<unsigned> DeclToIndex::getValueIndex(const VarDecl *d) {
 // CFGBlockValues: dataflow values for CFG blocks.
 //====------------------------------------------------------------------------//
 
-typedef llvm::BitVector ValueVector;
+static const bool Initialized = false;
+static const bool Uninitialized = true;
+
+class ValueVector {
+  llvm::BitVector vec;
+public:
+  ValueVector() {}
+  ValueVector(unsigned size) : vec(size) {}
+  typedef llvm::BitVector::reference reference;
+  void resize(unsigned n) { vec.resize(n); }
+  void merge(const ValueVector &rhs) { vec |= rhs.vec; }
+  bool operator!=(const ValueVector &rhs) const { return vec != rhs.vec; }
+  reference operator[](unsigned idx) { return vec[idx]; }
+  void reset() { vec.reset(); }
+};
+
 typedef std::pair<ValueVector *, ValueVector *> BVPair;
 
 namespace {
@@ -189,7 +204,7 @@ void CFGBlockValues::mergeIntoScratch(ValueVector const &source,
   if (isFirst)
     scratch = source;
   else
-    scratch |= source;  
+    scratch.merge(source);
 }
 #if 0
 static void printVector(const CFGBlock *block, ValueVector &bv,
@@ -286,9 +301,6 @@ const CFGBlock *DataflowWorklist::dequeue() {
 // Transfer function for uninitialized values analysis.
 //====------------------------------------------------------------------------//
 
-static const bool Initialized = false;
-static const bool Uninitialized = true;
-
 namespace {
 class FindVarResult {
   const VarDecl *vd;