diff options
-rw-r--r-- | CodeGen/CGExprComplex.cpp | 11 | ||||
-rw-r--r-- | CodeGen/CGExprScalar.cpp | 13 |
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"); } |