From 29c3ef5a0e5f129ee7e0b5416a93484f4ecebf35 Mon Sep 17 00:00:00 2001 From: V Donaldson Date: Tue, 31 Aug 2021 18:26:58 -0700 Subject: [PATCH] Remove blank from NaN string representation Flang front end function DumpHexadecimal generates a string representation of a REAL value. When the value is a NaN, the string contains a blank, as in "NaN 0x7fc00000". This function is used by lowering to generate a string that is then passed to llvm Support function convertFromStringSpecials, which does not expect a blank in the string. Remove the blank to allow correct recognition of a NaN by this llvm function. Note that function DumpHexadecimal is not exercised by the front end itself. This functionality is only exercised by code that is not yet present in llvm. --- flang/lib/Evaluate/real.cpp | 2 +- flang/unittests/Evaluate/real.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flang/lib/Evaluate/real.cpp b/flang/lib/Evaluate/real.cpp index 1428d52..2146789 100644 --- a/flang/lib/Evaluate/real.cpp +++ b/flang/lib/Evaluate/real.cpp @@ -439,7 +439,7 @@ ValueWithRealFlags> Real::Read( template std::string Real::DumpHexadecimal() const { if (IsNotANumber()) { - return "NaN 0x"s + word_.Hexadecimal(); + return "NaN0x"s + word_.Hexadecimal(); } else if (IsNegative()) { return "-"s + Negate().DumpHexadecimal(); } else if (IsInfinite()) { diff --git a/flang/unittests/Evaluate/real.cpp b/flang/unittests/Evaluate/real.cpp index d4c7ce5..af06e7a 100644 --- a/flang/unittests/Evaluate/real.cpp +++ b/flang/unittests/Evaluate/real.cpp @@ -24,7 +24,7 @@ void dumpTest() { std::uint64_t raw; const char *expected; } table[] = { - {0x7f876543, "NaN 0x7f876543"}, + {0x7f876543, "NaN0x7f876543"}, {0x7f800000, "Inf"}, {0xff800000, "-Inf"}, {0x00000000, "0.0"}, -- 2.7.4