How about adding a private ValueMapCallbackVH constructor, that takes a single llvm::Value *. It would be only used to create "fake" ValueMapCallbackVH for empty/tombstone keys in DenseMapInfo<>. Losing compile-time check that static_cast<> enforces would be unfortunate. http://reviews.llvm.org/D6155