mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 02:32:08 +00:00
Don't try to preserve pointer types in SCEVConstants; the old code
was over-complicated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106760 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
473e63512a
commit
eaf6cf28dd
@ -863,12 +863,10 @@ const SCEV *ScalarEvolution::getZeroExtendExpr(const SCEV *Op,
|
||||
Ty = getEffectiveSCEVType(Ty);
|
||||
|
||||
// Fold if the operand is constant.
|
||||
if (const SCEVConstant *SC = dyn_cast<SCEVConstant>(Op)) {
|
||||
const Type *IntTy = getEffectiveSCEVType(Ty);
|
||||
Constant *C = ConstantExpr::getZExt(SC->getValue(), IntTy);
|
||||
if (IntTy != Ty) C = ConstantExpr::getIntToPtr(C, Ty);
|
||||
return getConstant(cast<ConstantInt>(C));
|
||||
}
|
||||
if (const SCEVConstant *SC = dyn_cast<SCEVConstant>(Op))
|
||||
return getConstant(
|
||||
cast<ConstantInt>(ConstantExpr::getZExt(SC->getValue(),
|
||||
getEffectiveSCEVType(Ty))));
|
||||
|
||||
// zext(zext(x)) --> zext(x)
|
||||
if (const SCEVZeroExtendExpr *SZ = dyn_cast<SCEVZeroExtendExpr>(Op))
|
||||
@ -998,12 +996,10 @@ const SCEV *ScalarEvolution::getSignExtendExpr(const SCEV *Op,
|
||||
Ty = getEffectiveSCEVType(Ty);
|
||||
|
||||
// Fold if the operand is constant.
|
||||
if (const SCEVConstant *SC = dyn_cast<SCEVConstant>(Op)) {
|
||||
const Type *IntTy = getEffectiveSCEVType(Ty);
|
||||
Constant *C = ConstantExpr::getSExt(SC->getValue(), IntTy);
|
||||
if (IntTy != Ty) C = ConstantExpr::getIntToPtr(C, Ty);
|
||||
return getConstant(cast<ConstantInt>(C));
|
||||
}
|
||||
if (const SCEVConstant *SC = dyn_cast<SCEVConstant>(Op))
|
||||
return getConstant(
|
||||
cast<ConstantInt>(ConstantExpr::getSExt(SC->getValue(),
|
||||
getEffectiveSCEVType(Ty))));
|
||||
|
||||
// sext(sext(x)) --> sext(x)
|
||||
if (const SCEVSignExtendExpr *SS = dyn_cast<SCEVSignExtendExpr>(Op))
|
||||
|
Loading…
Reference in New Issue
Block a user