summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2015-03-03 18:39:00 +0000
committerDavid Blaikie <dblaikie@gmail.com>2015-03-03 18:39:00 +0000
commite6c4eda5ddd75c9207527e3cb683347e62aedbbb (patch)
treefc0ffb5343dfbdec1ed550d34131d2b9ee792600
parentf7e1e758287a82aac12657ccdda4cb0523dad54a (diff)
downloadbcm5719-llvm-e6c4eda5ddd75c9207527e3cb683347e62aedbbb.tar.gz
bcm5719-llvm-e6c4eda5ddd75c9207527e3cb683347e62aedbbb.zip
[Small]BitVector::reference: Explicitly default copy construction as it is deprecated in C++11 in the presence of explicit copy assignment.
I tried making these private & friended to the BitVector, but that didn't work - there's one use of BitVector::reference in Clang that actually copies it into a local variable & uses it from there, rather than just using the result of op[] in a temporary expression. Whether or not this is desired is debatable (we could just fix that one use in Clang) & it's not clear which way the C++ standard falls on this for std::bitset's reference type (it has the same bug at least in libstdc++, but Clang's -Wdeprecated doesn't flag it, because it's in a standard header) While it was only BitVector::reference's copy ctor that was referenced by user code, I made SmallBitVector::reference's copy ctor public too, for consistency. llvm-svn: 231099
-rw-r--r--llvm/include/llvm/ADT/BitVector.h2
-rw-r--r--llvm/include/llvm/ADT/SmallBitVector.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/include/llvm/ADT/BitVector.h b/llvm/include/llvm/ADT/BitVector.h
index 0dbe810d904..f58dd7356c7 100644
--- a/llvm/include/llvm/ADT/BitVector.h
+++ b/llvm/include/llvm/ADT/BitVector.h
@@ -53,7 +53,7 @@ public:
BitPos = Idx % BITWORD_SIZE;
}
- ~reference() {}
+ reference(const reference&) = default;
reference &operator=(reference t) {
*this = bool(t);
diff --git a/llvm/include/llvm/ADT/SmallBitVector.h b/llvm/include/llvm/ADT/SmallBitVector.h
index 22e8ccd8ea0..ae3d645396f 100644
--- a/llvm/include/llvm/ADT/SmallBitVector.h
+++ b/llvm/include/llvm/ADT/SmallBitVector.h
@@ -66,6 +66,8 @@ public:
public:
reference(SmallBitVector &b, unsigned Idx) : TheVector(b), BitPos(Idx) {}
+ reference(const reference&) = default;
+
reference& operator=(reference t) {
*this = bool(t);
return *this;
OpenPOWER on IntegriCloud