#include "polly/Support/SCEVValidator.h"
#include "polly/ScopDetection.h"
#include "llvm/Analysis/RegionInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Support/Debug.h"
usingnamespacellvm;
usingnamespacepolly;
#include "polly/Support/PollyDebug.h"
#define DEBUG_TYPE …
namespace SCEVType {
enum TYPE { … };
}
class ValidatorResult final { … };
raw_ostream &operator<<(raw_ostream &OS, ValidatorResult &VR) { … }
class SCEVValidator : public SCEVVisitor<SCEVValidator, ValidatorResult> { … };
class SCEVInRegionDependences final { … };
class SCEVFindLoops final { … };
void polly::findLoops(const SCEV *Expr, SetVector<const Loop *> &Loops) { … }
class SCEVFindValues final { … };
void polly::findValues(const SCEV *Expr, ScalarEvolution &SE,
SetVector<Value *> &Values) { … }
bool polly::hasScalarDepsInsideRegion(const SCEV *Expr, const Region *R,
llvm::Loop *Scope, bool AllowLoops,
const InvariantLoadsSetTy &ILS) { … }
bool polly::isAffineExpr(const Region *R, llvm::Loop *Scope, const SCEV *Expr,
ScalarEvolution &SE, InvariantLoadsSetTy *ILS) { … }
static bool isAffineExpr(Value *V, const Region *R, Loop *Scope,
ScalarEvolution &SE, ParameterSetTy &Params) { … }
bool polly::isAffineConstraint(Value *V, const Region *R, Loop *Scope,
ScalarEvolution &SE, ParameterSetTy &Params,
bool OrExpr) { … }
ParameterSetTy polly::getParamsInAffineExpr(const Region *R, Loop *Scope,
const SCEV *Expr,
ScalarEvolution &SE) { … }
std::pair<const SCEVConstant *, const SCEV *>
polly::extractConstantFactor(const SCEV *S, ScalarEvolution &SE) { … }
const SCEV *polly::tryForwardThroughPHI(const SCEV *Expr, Region &R,
ScalarEvolution &SE,
ScopDetection *SD) { … }
Value *polly::getUniqueNonErrorValue(PHINode *PHI, Region *R,
ScopDetection *SD) { … }