mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-04 00:29:28 +00:00
Fix GetMinTrailingZeros for SCEVSignExtend and SCEVZeroExtendExpr to
return the correct value when the cast operand is all zeros. This ought to be pretty rare, because it would mean that the regular SCEV folding routines missed a case, though there are cases they might legitimately miss. Also, it's unlikely anything currently using GetMinTrailingZeros cares about this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71532 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6ed34918eb
commit
42a5875e10
@ -1984,13 +1984,13 @@ static uint32_t GetMinTrailingZeros(SCEVHandle S, const ScalarEvolution &SE) {
|
||||
if (const SCEVZeroExtendExpr *E = dyn_cast<SCEVZeroExtendExpr>(S)) {
|
||||
uint32_t OpRes = GetMinTrailingZeros(E->getOperand(), SE);
|
||||
return OpRes == SE.getTypeSizeInBits(E->getOperand()->getType()) ?
|
||||
SE.getTypeSizeInBits(E->getOperand()->getType()) : OpRes;
|
||||
SE.getTypeSizeInBits(E->getType()) : OpRes;
|
||||
}
|
||||
|
||||
if (const SCEVSignExtendExpr *E = dyn_cast<SCEVSignExtendExpr>(S)) {
|
||||
uint32_t OpRes = GetMinTrailingZeros(E->getOperand(), SE);
|
||||
return OpRes == SE.getTypeSizeInBits(E->getOperand()->getType()) ?
|
||||
SE.getTypeSizeInBits(E->getOperand()->getType()) : OpRes;
|
||||
SE.getTypeSizeInBits(E->getType()) : OpRes;
|
||||
}
|
||||
|
||||
if (const SCEVAddExpr *A = dyn_cast<SCEVAddExpr>(S)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user