aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2007-12-26 18:20:19 +0000
committerAnders Carlsson <andersca@mac.com>2007-12-26 18:20:19 +0000
commitc9d41e7d27ffbae9cb041712c63c0e7a23acf5fe (patch)
tree3144bae2e951de8b8a235c30d6e6f107e527ee7b
parentbc13df19a8ce10a218e49d954f8b172e40012bf4 (diff)
downloadllvm-c9d41e7d27ffbae9cb041712c63c0e7a23acf5fe.zip
llvm-c9d41e7d27ffbae9cb041712c63c0e7a23acf5fe.tar.gz
llvm-c9d41e7d27ffbae9cb041712c63c0e7a23acf5fe.tar.bz2
No need to do work that the folding builder does for us.
llvm-svn: 45361
-rw-r--r--clang/CodeGen/CGExprScalar.cpp51
1 files changed, 14 insertions, 37 deletions
diff --git a/clang/CodeGen/CGExprScalar.cpp b/clang/CodeGen/CGExprScalar.cpp
index 81a0ced..a413150 100644
--- a/clang/CodeGen/CGExprScalar.cpp
+++ b/clang/CodeGen/CGExprScalar.cpp
@@ -368,50 +368,27 @@ Value *ScalarExprEmitter::EmitScalarConversion(Value *Src, QualType SrcType,
// Finally, we have the arithmetic types: real int/float.
if (isa<llvm::IntegerType>(Src->getType())) {
bool InputSigned = SrcType->isSignedIntegerType();
- if (llvm::Constant *C = dyn_cast<llvm::Constant>(Src)) {
- if (isa<llvm::IntegerType>(DstTy))
- return llvm::ConstantExpr::getIntegerCast(C, DstTy, InputSigned);
- else if (InputSigned)
- return llvm::ConstantExpr::getSIToFP(C, DstTy);
- else
- return llvm::ConstantExpr::getUIToFP(C, DstTy);
- } else {
- if (isa<llvm::IntegerType>(DstTy))
- return Builder.CreateIntCast(Src, DstTy, InputSigned, "conv");
- else if (InputSigned)
- return Builder.CreateSIToFP(Src, DstTy, "conv");
- else
- return Builder.CreateUIToFP(Src, DstTy, "conv");
- }
+ if (isa<llvm::IntegerType>(DstTy))
+ return Builder.CreateIntCast(Src, DstTy, InputSigned, "conv");
+ else if (InputSigned)
+ return Builder.CreateSIToFP(Src, DstTy, "conv");
+ else
+ return Builder.CreateUIToFP(Src, DstTy, "conv");
}
assert(Src->getType()->isFloatingPoint() && "Unknown real conversion");
if (isa<llvm::IntegerType>(DstTy)) {
- if (llvm::Constant *C = dyn_cast<llvm::Constant>(Src)) {
- if (DstType->isSignedIntegerType())
- return llvm::ConstantExpr::getFPToSI(C, DstTy);
- else
- return llvm::ConstantExpr::getFPToUI(C, DstTy);
- } else {
- if (DstType->isSignedIntegerType())
- return Builder.CreateFPToSI(Src, DstTy, "conv");
- else
- return Builder.CreateFPToUI(Src, DstTy, "conv");
- }
+ if (DstType->isSignedIntegerType())
+ return Builder.CreateFPToSI(Src, DstTy, "conv");
+ else
+ return Builder.CreateFPToUI(Src, DstTy, "conv");
}
assert(DstTy->isFloatingPoint() && "Unknown real conversion");
- if (llvm::Constant *C = dyn_cast<llvm::Constant>(Src)) {
- if (DstTy->getTypeID() < Src->getType()->getTypeID())
- return llvm::ConstantExpr::getFPTrunc(C, DstTy);
- else
- return llvm::ConstantExpr::getFPExtend(C, DstTy);
- } else {
- if (DstTy->getTypeID() < Src->getType()->getTypeID())
- return Builder.CreateFPTrunc(Src, DstTy, "conv");
- else
- return Builder.CreateFPExt(Src, DstTy, "conv");
- }
+ if (DstTy->getTypeID() < Src->getType()->getTypeID())
+ return Builder.CreateFPTrunc(Src, DstTy, "conv");
+ else
+ return Builder.CreateFPExt(Src, DstTy, "conv");
}
/// EmitComplexToScalarConversion - Emit a conversion from the specified