ValueHandle has this lovely feature:
// A subclass may want to store some information along with the value
// pointer. Allow them to do this by making the value pointer a pointer-int
// pair. The ‘setValPtrInt’ and ‘getValPtrInt’ methods below give them this
PointerIntPair<Value*, 2> VP;
It was originally used by Metadata, but thanks to Duncan’s work, it is no longer needed and has no in-tree usage. IT also adds a lot of complexity to the whole thing. I’m planning to remove it.
Initially, I thought it might be likely that folks are using this out-of-tree and was worried about removing it. But Richard and others have convinced me that I’m probably wrong. I don’t really see how it could be used. Sending this thread so you can shout if this breaks you, and i’ll quickly re-instate it so we can figure out what to do.