aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGExpr.cpp
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2012-04-10 08:23:07 +0000
committerDuncan Sands <baldrick@free.fr>2012-04-10 08:23:07 +0000
commit8250016fb9491fcfde7fce05230d66e267944484 (patch)
tree9140b62c2c03c670521fbd2c26fcb2024e6dca06 /lib/CodeGen/CGExpr.cpp
parent2b124ea9d2c27c6d002ecd4623f6321e305d907e (diff)
Express the number of ULPs in fpaccuracy metadata as a real rather than a
rational number, eg as 2.5 rather than 5, 2. OK'd by Peter Collingbourne. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154388 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGExpr.cpp')
-rw-r--r--lib/CodeGen/CGExpr.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index 0efb50884c..dbf41f38b8 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/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);