summaryrefslogtreecommitdiffstats
path: root/include/llvm/BasicBlock.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/BasicBlock.h')
-rw-r--r--include/llvm/BasicBlock.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/include/llvm/BasicBlock.h b/include/llvm/BasicBlock.h
index 80d8702..e358f91 100644
--- a/include/llvm/BasicBlock.h
+++ b/include/llvm/BasicBlock.h
@@ -17,6 +17,7 @@
#include "llvm/Instruction.h"
#include "llvm/SymbolTableListTraits.h"
#include "llvm/ADT/ilist.h"
+#include "llvm/ADT/Twine.h"
#include "llvm/System/DataTypes.h"
namespace llvm {
@@ -239,15 +240,21 @@ public:
/// hasAddressTaken - returns true if there are any uses of this basic block
/// other than direct branches, switches, etc. to it.
- bool hasAddressTaken() const { return SubclassData != 0; }
+ bool hasAddressTaken() const { return getSubclassDataFromValue() != 0; }
private:
/// AdjustBlockAddressRefCount - BasicBlock stores the number of BlockAddress
/// objects using it. This is almost always 0, sometimes one, possibly but
/// almost never 2, and inconceivably 3 or more.
void AdjustBlockAddressRefCount(int Amt) {
- SubclassData += Amt;
- assert((int)(signed char)SubclassData >= 0 && "Refcount wrap-around");
+ setValueSubclassData(getSubclassDataFromValue()+Amt);
+ assert((int)(signed char)getSubclassDataFromValue() >= 0 &&
+ "Refcount wrap-around");
+ }
+ // Shadow Value::setValueSubclassData with a private forwarding method so that
+ // any future subclasses cannot accidentally use it.
+ void setValueSubclassData(unsigned short D) {
+ Value::setValueSubclassData(D);
}
};
OpenPOWER on IntegriCloud