diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-12-04 17:05:42 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-12-04 17:05:42 +0000 |
commit | 14bab5db2d2a7b597ae7272e9c809d68ed3343b6 (patch) | |
tree | d2c2f827dfc5c87d08871b95ebd3e187f4f16bd7 /lib | |
parent | 10292555f391bf9fa0e8ee78da35757e9b7e49f2 (diff) | |
download | external_llvm-14bab5db2d2a7b597ae7272e9c809d68ed3343b6.zip external_llvm-14bab5db2d2a7b597ae7272e9c809d68ed3343b6.tar.gz external_llvm-14bab5db2d2a7b597ae7272e9c809d68ed3343b6.tar.bz2 |
Fix inferred casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32180 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/ScalarEvolution.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 87232b3..52d9410 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -178,7 +178,8 @@ SCEVHandle SCEVConstant::get(ConstantInt *V) { // Make sure that SCEVConstant instances are all unsigned. if (V->getType()->isSigned()) { const Type *NewTy = V->getType()->getUnsignedVersion(); - V = cast<ConstantInt>(ConstantExpr::getCast(V, NewTy)); + V = cast<ConstantInt>( + ConstantExpr::getInferredCast(V, false, NewTy, false)); } SCEVConstant *&R = (*SCEVConstants)[V]; @@ -465,7 +466,7 @@ SCEVHandle SCEVUnknown::getIntegerSCEV(int Val, const Type *Ty) { C = ConstantInt::get(Ty, Val); else { C = ConstantInt::get(Ty->getSignedVersion(), Val); - C = ConstantExpr::getCast(C, Ty); + C = ConstantExpr::getInferredCast(C, true, Ty, false); } return SCEVUnknown::get(C); } @@ -511,7 +512,8 @@ static SCEVHandle PartialFact(SCEVHandle V, unsigned NumSteps) { for (; NumSteps; --NumSteps) Result *= Val-(NumSteps-1); Constant *Res = ConstantInt::get(Type::ULongTy, Result); - return SCEVUnknown::get(ConstantExpr::getCast(Res, V->getType())); + return SCEVUnknown::get( + ConstantExpr::getInferredCast(Res, false, V->getType(), true)); } const Type *Ty = V->getType(); @@ -996,10 +998,11 @@ SCEVHandle SCEVSDivExpr::get(const SCEVHandle &LHS, const SCEVHandle &RHS) { Constant *LHSCV = LHSC->getValue(); Constant *RHSCV = RHSC->getValue(); if (LHSCV->getType()->isUnsigned()) - LHSCV = ConstantExpr::getCast(LHSCV, - LHSCV->getType()->getSignedVersion()); + LHSCV = ConstantExpr::getInferredCast( + LHSCV, false, LHSCV->getType()->getSignedVersion(), true); if (RHSCV->getType()->isUnsigned()) - RHSCV = ConstantExpr::getCast(RHSCV, LHSCV->getType()); + RHSCV = ConstantExpr::getInferredCast( + RHSCV, false, LHSCV->getType(), true); return SCEVUnknown::get(ConstantExpr::getSDiv(LHSCV, RHSCV)); } } |