Index: src/PNaClTranslator.cpp |
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp |
index 124ed894f34fd72da298a1c43b253227479e7179..3f93ecafb31ed381695924322ebe766836ae46ab 100644 |
--- a/src/PNaClTranslator.cpp |
+++ b/src/PNaClTranslator.cpp |
@@ -17,13 +17,14 @@ |
#include "llvm/Bitcode/NaCl/NaClBitcodeHeader.h" |
#include "llvm/Bitcode/NaCl/NaClBitcodeParser.h" |
#include "llvm/Bitcode/NaCl/NaClReaderWriter.h" |
-#include "llvm/IR/Constants.h" |
#include "llvm/IR/LLVMContext.h" |
#include "llvm/IR/Module.h" |
#include "llvm/Support/Format.h" |
#include "llvm/Support/MemoryBuffer.h" |
#include "llvm/Support/raw_ostream.h" |
+#include "IceAPInt.h" |
+#include "IceAPFloat.h" |
#include "IceCfg.h" |
#include "IceCfgNode.h" |
#include "IceClFlags.h" |
@@ -2188,9 +2189,8 @@ void FunctionParser::ProcessRecord() { |
Error(StrBuf.str()); |
return; |
} |
- APInt Value(BitWidth, |
- NaClDecodeSignRotatedValue(Values[ValCaseIndex + 2]), |
- true); |
+ Ice::APInt Value(BitWidth, |
+ NaClDecodeSignRotatedValue(Values[ValCaseIndex + 2])); |
if (isIRGenDisabled) |
continue; |
Ice::CfgNode *Label = getBranchBasicBlock(Values[ValCaseIndex + 3]); |
@@ -2563,7 +2563,8 @@ void ConstantsParser::ProcessRecord() { |
} |
if (auto IType = dyn_cast<IntegerType>( |
Context->convertToLLVMType(NextConstantType))) { |
- APInt Value(IType->getBitWidth(), NaClDecodeSignRotatedValue(Values[0])); |
+ Ice::APInt Value(IType->getBitWidth(), |
+ NaClDecodeSignRotatedValue(Values[0])); |
if (Ice::Constant *C = getContext()->getConstantInt( |
NextConstantType, Value.getSExtValue())) { |
FuncParser->setNextConstantID(C); |
@@ -2589,16 +2590,15 @@ void ConstantsParser::ProcessRecord() { |
} |
switch (NextConstantType) { |
case Ice::IceType_f32: { |
- APFloat Value(APFloat::IEEEsingle, |
- APInt(32, static_cast<uint32_t>(Values[0]))); |
- FuncParser->setNextConstantID( |
- getContext()->getConstantFloat(Value.convertToFloat())); |
+ const Ice::APInt IntValue(32, static_cast<uint32_t>(Values[0])); |
+ float FpValue = Ice::convertAPIntToFp<int32_t, float>(IntValue); |
+ FuncParser->setNextConstantID(getContext()->getConstantFloat(FpValue)); |
return; |
} |
case Ice::IceType_f64: { |
- APFloat Value(APFloat::IEEEdouble, APInt(64, Values[0])); |
- FuncParser->setNextConstantID( |
- getContext()->getConstantDouble(Value.convertToDouble())); |
+ const Ice::APInt IntValue(64, Values[0]); |
+ double FpValue = Ice::convertAPIntToFp<uint64_t, double>(IntValue); |
+ FuncParser->setNextConstantID(getContext()->getConstantDouble(FpValue)); |
return; |
} |
default: { |