diff options
author | Chris Lattner <sabre@nondot.org> | 2008-04-20 00:50:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-04-20 00:50:39 +0000 |
commit | ff2367c0c9bc58cca4c49edd59f44e735a547cab (patch) | |
tree | 32915d0be90591e4215f358c6cc0f9172f7aac26 /clang | |
parent | 1886e71e477d632ae320da229a54d7acbfa9271d (diff) | |
download | bcm5719-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.cpp | 11 |
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"); } |