+
+ unsigned ThreadLocal : 3; // Is this symbol "Thread Local", if so, what is
+ // the desired model?
+ static const unsigned GlobalValueSubClassDataBits = 19;
+
+private:
+ // Give subclasses access to what otherwise would be wasted padding.
+ // (19 + 3 + 2 + 1 + 2 + 5) == 32.
+ unsigned SubClassData : GlobalValueSubClassDataBits;
+
+ friend class Constant;
+ void destroyConstantImpl();
+ Value *handleOperandChangeImpl(Value *From, Value *To, Use *U);
+
+protected:
+ /// \brief The intrinsic ID for this subclass (which must be a Function).
+ ///
+ /// This member is defined by this class, but not used for anything.
+ /// Subclasses can use it to store their intrinsic ID, if they have one.
+ ///
+ /// This is stored here to save space in Function on 64-bit hosts.
+ Intrinsic::ID IntID;
+
+ unsigned getGlobalValueSubClassData() const {
+ return SubClassData;
+ }
+ void setGlobalValueSubClassData(unsigned V) {
+ assert(V < (1 << GlobalValueSubClassDataBits) && "It will not fit");
+ SubClassData = V;
+ }
+