summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-04-20 00:50:39 +0000
committerChris Lattner <sabre@nondot.org>2008-04-20 00:50:39 +0000
commitff2367c0c9bc58cca4c49edd59f44e735a547cab (patch)
tree32915d0be90591e4215f358c6cc0f9172f7aac26 /clang
parent1886e71e477d632ae320da229a54d7acbfa9271d (diff)
downloadbcm5719-llvm-ff2367c0c9bc58cca4c49edd59f44e735a547cab.tar.gz
bcm5719-llvm-ff2367c0c9bc58cca4c49edd59f44e735a547cab.zip
implement a fixme, add support for ++/-- on long double.
llvm-svn: 49980
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/CodeGen/CGExprScalar.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp
index d1d29ab3ea4..a501145a495 100644
--- a/clang/lib/CodeGen/CGExprScalar.cpp
+++ b/clang/lib/CodeGen/CGExprScalar.cpp
@@ -14,6 +14,7 @@
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "clang/AST/AST.h"
+#include "clang/Basic/TargetInfo.h"
#include "llvm/Constants.h"
#include "llvm/Function.h"
#include "llvm/GlobalVariable.h"
@@ -43,7 +44,6 @@ class VISIBILITY_HIDDEN ScalarExprEmitter
llvm::IRBuilder &Builder;
CGObjCRuntime *Runtime;
-
public:
ScalarExprEmitter(CodeGenFunction &cgf) : CGF(cgf),
@@ -602,14 +602,15 @@ Value *ScalarExprEmitter::VisitPrePostIncDec(const UnaryOperator *E,
if (isa<llvm::IntegerType>(InVal->getType()))
NextVal = llvm::ConstantInt::get(InVal->getType(), AmountVal);
else if (InVal->getType() == llvm::Type::FloatTy)
- // FIXME: Handle long double.
NextVal =
llvm::ConstantFP::get(llvm::APFloat(static_cast<float>(AmountVal)));
- else {
- // FIXME: Handle long double.
- assert(InVal->getType() == llvm::Type::DoubleTy);
+ else if (InVal->getType() == llvm::Type::DoubleTy)
NextVal =
llvm::ConstantFP::get(llvm::APFloat(static_cast<double>(AmountVal)));
+ else {
+ llvm::APFloat F(static_cast<float>(AmountVal));
+ F.convert(*CGF.Target.getLongDoubleFormat(), llvm::APFloat::rmTowardZero);
+ NextVal = llvm::ConstantFP::get(F);
}
NextVal = Builder.CreateAdd(InVal, NextVal, isInc ? "inc" : "dec");
}
OpenPOWER on IntegriCloud