summaryrefslogtreecommitdiffstats
path: root/polly/lib
diff options
context:
space:
mode:
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>2016-04-25 13:33:07 +0000
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>2016-04-25 13:33:07 +0000
commitf560b3d2db8565a05c8fd0aca364f96d5d177f3d (patch)
tree9d88f043ffa75964fa3f3a1e76e468297bc2b54a /polly/lib
parentec8a2177298d38129e9a28ff0fd79afa464f42a9 (diff)
downloadbcm5719-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.cpp8
-rw-r--r--polly/lib/Support/SCEVValidator.cpp26
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);
OpenPOWER on IntegriCloud