diff options
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 0efb50884cc..dbf41f38b8f 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -3001,16 +3001,13 @@ RValue CodeGenFunction::EmitAtomicExpr(AtomicExpr *E, llvm::Value *Dest) { return ConvertTempToRValue(*this, E->getType(), OrigDest); } -void CodeGenFunction::SetFPAccuracy(llvm::Value *Val, unsigned AccuracyN, - unsigned AccuracyD) { +void CodeGenFunction::SetFPAccuracy(llvm::Value *Val, float Accuracy) { assert(Val->getType()->isFPOrFPVectorTy()); - if (!AccuracyN || !isa<llvm::Instruction>(Val)) + if (Accuracy == 0.0 || !isa<llvm::Instruction>(Val)) return; - llvm::Value *Vals[2]; - Vals[0] = llvm::ConstantInt::get(Int32Ty, AccuracyN); - Vals[1] = llvm::ConstantInt::get(Int32Ty, AccuracyD); - llvm::MDNode *Node = llvm::MDNode::get(getLLVMContext(), Vals); + llvm::Value *ULPs = llvm::ConstantFP::get(Builder.getFloatTy(), Accuracy); + llvm::MDNode *Node = llvm::MDNode::get(getLLVMContext(), ULPs); cast<llvm::Instruction>(Val)->setMetadata(llvm::LLVMContext::MD_fpaccuracy, Node); |