Try to fix build after invalid pointer conversion.

llvm-svn: 284428
This commit is contained in:
Zachary Turner 2016-10-17 21:14:27 +00:00
parent 8716b3cbe0
commit 47e2c0a9cb
3 changed files with 18 additions and 2 deletions

View File

@ -31,6 +31,8 @@ enum class IntegerStyle {
};
enum class HexStyle { Upper, Lower, PrefixUpper, PrefixLower };
IntegerStyle hexStyleToIntHexStyle(HexStyle S);
size_t getDefaultPrecision(FloatStyle Style);
size_t getDefaultPrecision(IntegerStyle Style);
size_t getDefaultPrecision(HexStyle Style);

View File

@ -353,6 +353,20 @@ void llvm::write_double(raw_ostream &S, double N, FloatStyle Style,
S << '%';
}
IntegerStyle llvm::hexStyleToIntHexStyle(HexStyle S) {
switch (S) {
case HexStyle::Upper:
return IntegerStyle::HexUpperNoPrefix;
case HexStyle::Lower:
return IntegerStyle::HexLowerNoPrefix;
case HexStyle::PrefixUpper:
return IntegerStyle::HexUpperPrefix;
case HexStyle::PrefixLower:
return IntegerStyle::HexLowerPrefix;
}
LLVM_BUILTIN_UNREACHABLE;
}
size_t llvm::getDefaultPrecision(FloatStyle Style) {
switch (Style) {
case FloatStyle::Exponent:

View File

@ -36,8 +36,8 @@ template <typename T>
typename std::enable_if<std::is_pointer<T>::value, std::string>::type
format_number(T N, HexStyle Style, Optional<size_t> Precision = None,
Optional<int> Width = None) {
return format_number(reinterpret_cast<uintptr_t>(N), Style, Precision, Width);
IntegerStyle IS = hexStyleToIntHexStyle(Style);
return format_number(reinterpret_cast<uintptr_t>(N), IS, Precision, Width);
}
std::string format_number(unsigned long N, IntegerStyle Style,