/// A pointer to a StringRef instance.
StringRefKind,
- /// A pointer to an unsigned int value, to render as an unsigned decimal
- /// integer.
+ /// An unsigned int value reinterpreted as a pointer, to render as an
+ /// unsigned decimal integer.
DecUIKind,
- /// A pointer to an int value, to render as a signed decimal integer.
+ /// An int value reinterpreted as a pointer, to render as a signed
+ /// decimal integer.
DecIKind,
/// A pointer to an unsigned long value, to render as an unsigned decimal
}
/// Construct a twine to print \arg Val as an unsigned decimal integer.
- explicit Twine(const unsigned int &Val)
- : LHS(&Val), LHSKind(DecUIKind), RHSKind(EmptyKind) {
+ explicit Twine(unsigned Val)
+ : LHS((void*)(intptr_t)Val), LHSKind(DecUIKind), RHSKind(EmptyKind) {
}
/// Construct a twine to print \arg Val as a signed decimal integer.
- explicit Twine(const int &Val)
- : LHS(&Val), LHSKind(DecIKind), RHSKind(EmptyKind) {
+ explicit Twine(int Val)
+ : LHS((void*)(intptr_t)Val), LHSKind(DecIKind), RHSKind(EmptyKind) {
}
/// Construct a twine to print \arg Val as an unsigned decimal integer.
OS << *static_cast<const StringRef*>(Ptr);
break;
case Twine::DecUIKind:
- OS << *static_cast<const unsigned int*>(Ptr);
+ OS << (unsigned)(uintptr_t)Ptr;
break;
case Twine::DecIKind:
- OS << *static_cast<const int*>(Ptr);
+ OS << (int)(intptr_t)Ptr;
break;
case Twine::DecULKind:
OS << *static_cast<const unsigned long*>(Ptr);
<< static_cast<const StringRef*>(Ptr) << "\"";
break;
case Twine::DecUIKind:
- OS << "decUI:\"" << *static_cast<const unsigned int*>(Ptr) << "\"";
+ OS << "decUI:\"" << (unsigned)(uintptr_t)Ptr << "\"";
break;
case Twine::DecIKind:
- OS << "decI:\"" << *static_cast<const int*>(Ptr) << "\"";
+ OS << "decI:\"" << (int)(intptr_t)Ptr << "\"";
break;
case Twine::DecULKind:
OS << "decUL:\"" << *static_cast<const unsigned long*>(Ptr) << "\"";