diff options
| author | Johannes Doerfert <doerfert@cs.uni-saarland.de> | 2016-04-25 13:33:07 +0000 |
|---|---|---|
| committer | Johannes Doerfert <doerfert@cs.uni-saarland.de> | 2016-04-25 13:33:07 +0000 |
| commit | f560b3d2db8565a05c8fd0aca364f96d5d177f3d (patch) | |
| tree | 9d88f043ffa75964fa3f3a1e76e468297bc2b54a /polly/lib | |
| parent | ec8a2177298d38129e9a28ff0fd79afa464f42a9 (diff) | |
| download | bcm5719-llvm-f560b3d2db8565a05c8fd0aca364f96d5d177f3d.tar.gz bcm5719-llvm-f560b3d2db8565a05c8fd0aca364f96d5d177f3d.zip | |
Introduce a parameter set type [NFC]
llvm-svn: 267401
Diffstat (limited to 'polly/lib')
| -rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 8 | ||||
| -rw-r--r-- | polly/lib/Support/SCEVValidator.cpp | 26 |
2 files changed, 15 insertions, 19 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 9d34a730fe1..e1ef23c98c2 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -1803,7 +1803,7 @@ const SCEV *Scop::getRepresentingInvariantLoadSCEV(const SCEV *S) { return SCEVSensitiveParameterRewriter::rewrite(S, *SE, InvEquivClassVMap); } -void Scop::addParams(std::vector<const SCEV *> NewParameters) { +void Scop::addParams(const ParameterSetTy &NewParameters) { for (const SCEV *Parameter : NewParameters) { Parameter = extractConstantFactor(Parameter, *SE).second; @@ -1873,15 +1873,15 @@ void Scop::addUserAssumptions(AssumptionCache &AC, DominatorTree &DT, auto *L = LI.getLoopFor(CI->getParent()); auto *Val = CI->getArgOperand(0); - std::vector<const SCEV *> Params; - if (!isAffineParamConstraint(Val, R, L, *SE, Params)) { + ParameterSetTy DetectedParams; + if (!isAffineParamConstraint(Val, R, L, *SE, DetectedParams)) { emitOptimizationRemarkAnalysis(F.getContext(), DEBUG_TYPE, F, CI->getDebugLoc(), "Non-affine user assumption ignored."); continue; } - addParams(Params); + addParams(DetectedParams); SmallVector<isl_set *, 2> ConditionSets; buildConditionSets(*Stmts.begin(), Val, nullptr, L, Context, ConditionSets); diff --git a/polly/lib/Support/SCEVValidator.cpp b/polly/lib/Support/SCEVValidator.cpp index 390a4f5d406..1bd6015699e 100644 --- a/polly/lib/Support/SCEVValidator.cpp +++ b/polly/lib/Support/SCEVValidator.cpp @@ -5,7 +5,6 @@ #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/ScalarEvolutionExpressions.h" #include "llvm/Support/Debug.h" -#include <vector> using namespace llvm; using namespace polly; @@ -41,7 +40,7 @@ class ValidatorResult { SCEVType::TYPE Type; /// @brief The set of Parameters in the expression. - std::vector<const SCEV *> Parameters; + ParameterSetTy Parameters; public: /// @brief The copy constructor @@ -57,7 +56,7 @@ public: /// @brief Construct a result with a certain type and a single parameter. ValidatorResult(SCEVType::TYPE Type, const SCEV *Expr) : Type(Type) { - Parameters.push_back(Expr); + Parameters.insert(Expr); } /// @brief Get the type of the ValidatorResult. @@ -79,12 +78,11 @@ public: bool isPARAM() { return Type == SCEVType::PARAM; } /// @brief Get the parameters of this validator result. - std::vector<const SCEV *> getParameters() { return Parameters; } + const ParameterSetTy &getParameters() { return Parameters; } /// @brief Add the parameters of Source to this result. void addParamsFrom(const ValidatorResult &Source) { - Parameters.insert(Parameters.end(), Source.Parameters.begin(), - Source.Parameters.end()); + Parameters.insert(Source.Parameters.begin(), Source.Parameters.end()); } /// @brief Merge a result. @@ -548,8 +546,7 @@ bool isAffineExpr(const Region *R, llvm::Loop *Scope, const SCEV *Expr, } static bool isAffineParamExpr(Value *V, const Region *R, Loop *Scope, - ScalarEvolution &SE, - std::vector<const SCEV *> &Params) { + ScalarEvolution &SE, ParameterSetTy &Params) { auto *E = SE.getSCEV(V); if (isa<SCEVCouldNotCompute>(E)) return false; @@ -560,14 +557,14 @@ static bool isAffineParamExpr(Value *V, const Region *R, Loop *Scope, return false; auto ResultParams = Result.getParameters(); - Params.insert(Params.end(), ResultParams.begin(), ResultParams.end()); + Params.insert(ResultParams.begin(), ResultParams.end()); return true; } bool isAffineParamConstraint(Value *V, const Region *R, llvm::Loop *Scope, - ScalarEvolution &SE, - std::vector<const SCEV *> &Params, bool OrExpr) { + ScalarEvolution &SE, ParameterSetTy &Params, + bool OrExpr) { if (auto *ICmp = dyn_cast<ICmpInst>(V)) { return isAffineParamConstraint(ICmp->getOperand(0), R, Scope, SE, Params, true) && @@ -589,11 +586,10 @@ bool isAffineParamConstraint(Value *V, const Region *R, llvm::Loop *Scope, return isAffineParamExpr(V, R, Scope, SE, Params); } -std::vector<const SCEV *> getParamsInAffineExpr(const Region *R, Loop *Scope, - const SCEV *Expr, - ScalarEvolution &SE) { +ParameterSetTy getParamsInAffineExpr(const Region *R, Loop *Scope, + const SCEV *Expr, ScalarEvolution &SE) { if (isa<SCEVCouldNotCompute>(Expr)) - return std::vector<const SCEV *>(); + return ParameterSetTy(); InvariantLoadsSetTy ILS; SCEVValidator Validator(R, Scope, SE, &ILS); |

