aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CodeGen/CGExprComplex.cpp11
-rw-r--r--CodeGen/CGExprScalar.cpp13
2 files changed, 19 insertions, 5 deletions
diff --git a/CodeGen/CGExprComplex.cpp b/CodeGen/CGExprComplex.cpp
index 067d2899ce..8dfe244a4f 100644
--- a/CodeGen/CGExprComplex.cpp
+++ b/CodeGen/CGExprComplex.cpp
@@ -301,9 +301,16 @@ ComplexPairTy ComplexExprEmitter::VisitPrePostIncDec(const UnaryOperator *E,
llvm::Value *NextVal;
if (isa<llvm::IntegerType>(InVal.first->getType()))
NextVal = llvm::ConstantInt::get(InVal.first->getType(), AmountVal);
- else
+ else if (InVal.first->getType() == llvm::Type::FloatTy)
+ // FIXME: Handle long double.
NextVal = llvm::ConstantFP::get(InVal.first->getType(),
- static_cast<double>(AmountVal));
+ llvm::APFloat(static_cast<float>(AmountVal)));
+ else {
+ // FIXME: Handle long double.
+ assert(InVal.first->getType() == llvm::Type::DoubleTy);
+ NextVal = llvm::ConstantFP::get(InVal.first->getType(),
+ llvm::APFloat(static_cast<double>(AmountVal)));
+ }
// Add the inc/dec to the real part.
NextVal = Builder.CreateAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
diff --git a/CodeGen/CGExprScalar.cpp b/CodeGen/CGExprScalar.cpp
index 62137b03b7..319ca82bf8 100644
--- a/CodeGen/CGExprScalar.cpp
+++ b/CodeGen/CGExprScalar.cpp
@@ -474,9 +474,16 @@ Value *ScalarExprEmitter::VisitPrePostIncDec(const UnaryOperator *E,
// Add the inc/dec to the real part.
if (isa<llvm::IntegerType>(InVal->getType()))
NextVal = llvm::ConstantInt::get(InVal->getType(), AmountVal);
- else
- NextVal = llvm::ConstantFP::get(InVal->getType(),
- static_cast<double>(AmountVal));
+ else if (InVal->getType() == llvm::Type::FloatTy)
+ // FIXME: Handle long double.
+ NextVal = llvm::ConstantFP::get(InVal->getType(),
+ llvm::APFloat(static_cast<float>(AmountVal)));
+ else {
+ // FIXME: Handle long double.
+ assert(InVal->getType() == llvm::Type::DoubleTy);
+ NextVal = llvm::ConstantFP::get(InVal->getType(),
+ llvm::APFloat(static_cast<double>(AmountVal)));
+ }
NextVal = Builder.CreateAdd(InVal, NextVal, isInc ? "inc" : "dec");
}