diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index fcf2e510f9b..8715f89c257 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -626,7 +626,7 @@ bool BitcodeReader::ParseConstants() { if (Record.empty()) return Error("Invalid FLOAT record"); if (CurTy == Type::FloatTy) - V = ConstantFP::get(CurTy, APFloat((float)BitsToDouble(Record[0]))); + V = ConstantFP::get(CurTy, APFloat(BitsToFloat(Record[0]))); else if (CurTy == Type::DoubleTy) V = ConstantFP::get(CurTy, APFloat(BitsToDouble(Record[0]))); // FIXME: Make long double constants work. BitsToDouble does not make it. diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index ab3d9834d16..73f5338dcce 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -526,10 +526,9 @@ static void WriteConstants(unsigned FirstVal, unsigned LastVal, } else if (const ConstantFP *CFP = dyn_cast(C)) { Code = bitc::CST_CODE_FLOAT; const Type *Ty = CFP->getType(); - if (Ty == Type::FloatTy) { - Record.push_back(DoubleToBits((double)CFP->getValueAPF(). - convertToFloat())); - } else if (Ty == Type::DoubleTy) { + if (Ty == Type::FloatTy) + Record.push_back(FloatToBits(CFP->getValueAPF().convertToFloat())); + else if (Ty == Type::DoubleTy) { Record.push_back(DoubleToBits(CFP->getValueAPF().convertToDouble())); // FIXME: make long double constants work. } else if (Ty == Type::X86_FP80Ty ||