SCEVValidator: Restructure the logic of visitAddRecExpr

Suggested by Sebastian Pop.

llvm-svn: 144904
This commit is contained in:
Tobias Grosser 2011-11-17 12:56:14 +00:00
parent 2a7cd94215
commit bcc0a0d560
1 changed files with 11 additions and 11 deletions

View File

@ -157,23 +157,23 @@ public:
ValidatorResult Start = visit(Expr->getStart());
ValidatorResult Recurrence = visit(Expr->getStepRecurrence(SE));
if (!Start.isValid() || !Recurrence.isValid() || Recurrence.isIV())
if (!Start.isValid() || !Recurrence.isConstant())
return ValidatorResult(SCEVType::INVALID);
if (R->contains(Expr->getLoop())) {
if (Recurrence.isINT()) {
ValidatorResult Result(SCEVType::IV);
Result.addParamsFrom(Start);
return Result;
}
if (!R->contains(Expr->getLoop())) {
if (Start.isIV())
return ValidatorResult(SCEVType::INVALID);
else
return ValidatorResult(SCEVType::PARAM, Expr);
return ValidatorResult(SCEVType::INVALID);
}
if (!Recurrence.isINT())
return ValidatorResult(SCEVType::INVALID);
if (Start.isConstant())
return ValidatorResult(SCEVType::PARAM, Expr);
ValidatorResult Result(SCEVType::IV);
Result.addParamsFrom(Start);
return Result;
return ValidatorResult(SCEVType::INVALID);
}
struct ValidatorResult visitSMaxExpr(const SCEVSMaxExpr *Expr) {