Update BitVectorTest.cpp to stay in sync with SmallBitVectorTest.cpp,
authorDan Gohman <gohman@apple.com>
Fri, 30 Apr 2010 20:50:28 +0000 (20:50 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 30 Apr 2010 20:50:28 +0000 (20:50 +0000)
and fix a bug in BitVector's reference proxy class which this exposed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102768 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/BitVector.h
unittests/ADT/BitVectorTest.cpp
unittests/ADT/SmallBitVectorTest.cpp

index 3a86b0d34368e41c152e69a49a7dbaa053d23ce6..9dcb9e106f26b2a64630151a8f3c4f1798cfe6de 100644 (file)
@@ -49,6 +49,11 @@ public:
 
     ~reference() {}
 
+    reference &operator=(reference t) {
+      *this = bool(t);
+      return *this;
+    }
+
     reference& operator=(bool t) {
       if (t)
         *WordRef |= 1L << BitPos;
index 4fe11c1d17abb81ae2e7e64818c8be85d385cd20..a9fc133c72e26c1c40790a6890a4d26388c4c0f1 100644 (file)
@@ -7,7 +7,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef XFAIL
+// Some of these tests fail on PowerPC for unknown reasons.
+#ifndef __ppc__
+
 #include "llvm/ADT/BitVector.h"
 #include "gtest/gtest.h"
 
@@ -56,7 +58,7 @@ TEST(BitVectorTest, TrivialOperation) {
   Vec.resize(26, true);
   Vec.resize(29, false);
   Vec.resize(33, true);
-  Vec.resize(61, false);
+  Vec.resize(57, false);
   unsigned Count = 0;
   for (unsigned i = Vec.find_first(); i != -1u; i = Vec.find_next(i)) {
     ++Count;
@@ -67,7 +69,8 @@ TEST(BitVectorTest, TrivialOperation) {
   EXPECT_EQ(Count, 23u);
   EXPECT_FALSE(Vec[0]);
   EXPECT_TRUE(Vec[32]);
-  EXPECT_FALSE(Vec[60]);
+  EXPECT_FALSE(Vec[56]);
+  Vec.resize(61, false);
 
   BitVector Copy = Vec;
   BitVector Alt(3, false);
@@ -177,6 +180,15 @@ TEST(BitVectorTest, CompoundAssignment) {
   EXPECT_EQ(100U, A.size());
 }
 
+TEST(BitVectorTest, ProxyIndex) {
+  BitVector Vec(3);
+  EXPECT_TRUE(Vec.none());
+  Vec[0] = Vec[1] = Vec[2] = true;
+  EXPECT_EQ(Vec.size(), Vec.count());
+  Vec[2] = Vec[1] = Vec[0] = false;
+  EXPECT_TRUE(Vec.none());
+}
+
 }
 
 #endif
index e12abfe20da1a73adaffc5094e1770dd28bb5a23..9c69aad5a9730d56b7b52fed796bb911e0049b37 100644 (file)
@@ -185,4 +185,5 @@ TEST(SmallBitVectorTest, ProxyIndex) {
   Vec[2] = Vec[1] = Vec[0] = false;
   EXPECT_TRUE(Vec.none());
 }
+
 }