From: David Majnemer Date: Fri, 29 Apr 2016 21:22:04 +0000 (+0000) Subject: [ValueTracking] Make the code in lookThroughCast X-Git-Tag: llvmorg-3.9.0-rc1~7403 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=826e9831a7f6f1a414d83373d1207c516c88089d;p=platform%2Fupstream%2Fllvm.git [ValueTracking] Make the code in lookThroughCast No functionality change is intended. llvm-svn: 268108 --- diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 4097322..a0a294d 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -3714,29 +3714,22 @@ static Value *lookThroughCast(CmpInst *CmpI, Value *V1, Value *V2, return nullptr; } + Constant *CastedTo = nullptr; + if (isa(CI) && CmpI->isUnsigned()) - return ConstantExpr::getTrunc(C, CI->getSrcTy()); + CastedTo = ConstantExpr::getTrunc(C, CI->getSrcTy()); + + if (isa(CI) && CmpI->isSigned()) + CastedTo = ConstantExpr::getTrunc(C, CI->getSrcTy(), true); if (isa(CI)) - return ConstantExpr::getIntegerCast(C, CI->getSrcTy(), CmpI->isSigned()); + CastedTo = ConstantExpr::getIntegerCast(C, CI->getSrcTy(), CmpI->isSigned()); if (isa(CI)) - return ConstantExpr::getFPExtend(C, CI->getSrcTy(), true); + CastedTo = ConstantExpr::getFPExtend(C, CI->getSrcTy(), true); if (isa(CI)) - return ConstantExpr::getFPTrunc(C, CI->getSrcTy(), true); - - // Sophisticated constants can have values which we cannot easily reason - // about. Skip them for the fp<->int case. - if (isa(C)) - return nullptr; - - Constant *CastedTo = nullptr; - - // This is only valid if the truncated value can be sign-extended - // back to the original value. - if (isa(CI) && CmpI->isSigned()) - CastedTo = ConstantExpr::getTrunc(C, CI->getSrcTy(), true); + CastedTo = ConstantExpr::getFPTrunc(C, CI->getSrcTy(), true); if (isa(CI)) CastedTo = ConstantExpr::getUIToFP(C, CI->getSrcTy(), true);