From f72c663ac56e361e7b5808f64cd0c16d116db526 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Fri, 5 Aug 2016 11:59:49 +0000 Subject: [PATCH] LLLexer.cpp: Avoid using BitsToDouble() to preserve SNaN like "double 0x7FF4000000000000". We should not use double (or float) in the LLVM, unless it is really needed. x87 FP register doesn't preserve SNaN to move the value. FIXME: APFloat() may have the constructor by raw bit. llvm-svn: 277813 --- llvm/lib/AsmParser/LLLexer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/AsmParser/LLLexer.cpp b/llvm/lib/AsmParser/LLLexer.cpp index 980ae1e..c118ecf 100644 --- a/llvm/lib/AsmParser/LLLexer.cpp +++ b/llvm/lib/AsmParser/LLLexer.cpp @@ -871,7 +871,8 @@ lltok::Kind LLLexer::Lex0x() { // HexFPConstant - Floating point constant represented in IEEE format as a // hexadecimal number for when exponential notation is not precise enough. // Half, Float, and double only. - APFloatVal = APFloat(BitsToDouble(HexIntToVal(TokStart + 2, CurPtr))); + APFloatVal = APFloat(APFloat::IEEEdouble, + APInt(64, HexIntToVal(TokStart + 2, CurPtr))); return lltok::APFloat; } -- 2.7.4