[llvm-commits] [polly] r141256 - in /polly/trunk: include/polly/ScopInfo.h lib/Analysis/Dependences.cpp lib/Analysis/ScopInfo.cpp lib/Cloog.cpp lib/Exchange/OpenScopExporter.cpp lib/Exchange/ScopLib.cpp lib/Pocc.cpp lib/ScheduleOptimizer.cpp
Tobias Grosser
grosser at fim.uni-passau.de
Wed Oct 5 17:04:05 PDT 2011
Author: grosser
Date: Wed Oct 5 19:04:05 2011
New Revision: 141256
URL: http://llvm.org/viewvc/llvm-project?rev=141256&view=rev
Log:
ScopInfo: Only give away a copy of the schedule.
Modified:
polly/trunk/include/polly/ScopInfo.h
polly/trunk/lib/Analysis/Dependences.cpp
polly/trunk/lib/Analysis/ScopInfo.cpp
polly/trunk/lib/Cloog.cpp
polly/trunk/lib/Exchange/OpenScopExporter.cpp
polly/trunk/lib/Exchange/ScopLib.cpp
polly/trunk/lib/Pocc.cpp
polly/trunk/lib/ScheduleOptimizer.cpp
Modified: polly/trunk/include/polly/ScopInfo.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/ScopInfo.h?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/include/polly/ScopInfo.h (original)
+++ polly/trunk/include/polly/ScopInfo.h Wed Oct 5 19:04:05 2011
@@ -295,7 +295,7 @@
/// @brief Get the scattering function of this ScopStmt.
///
/// @return The scattering function of this ScopStmt.
- isl_map *getScattering() const { return Scattering; }
+ isl_map *getScattering() const;
void setScattering(isl_map *scattering);
/// @brief Get an isl string representing this scattering.
Modified: polly/trunk/lib/Analysis/Dependences.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/Dependences.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/Dependences.cpp (original)
+++ polly/trunk/lib/Analysis/Dependences.cpp Wed Oct 5 19:04:05 2011
@@ -106,8 +106,7 @@
else
must_source = isl_union_map_add_map(must_source, accdom);
}
- isl_map *scattering = isl_map_copy(Stmt->getScattering());
- schedule = isl_union_map_add_map(schedule, scattering);
+ schedule = isl_union_map_add_map(schedule, Stmt->getScattering());
}
DEBUG(
@@ -163,7 +162,7 @@
isl_map *scattering;
if (NewScattering->find(*SI) == NewScattering->end())
- scattering = isl_map_copy(Stmt->getScattering());
+ scattering = Stmt->getScattering();
else
scattering = isl_map_copy((*NewScattering)[Stmt]);
@@ -242,11 +241,11 @@
for (Scop::iterator SI = scop->begin(), SE = scop->end(); SI != SE; ++SI) {
ScopStmt *Stmt = *SI;
- isl_map *scattering = isl_map_copy(Stmt->getScattering());
- unsigned remainingDimensions = isl_map_n_out(scattering) - dimLevel;
- scattering = isl_map_project_out(scattering, isl_dim_out, dimLevel,
- remainingDimensions);
- schedule = isl_union_map_add_map(schedule, scattering);
+ unsigned remainingDimensions = Stmt->getNumScattering() - dimLevel;
+ isl_map *Scattering = isl_map_project_out(Stmt->getScattering(),
+ isl_dim_out, dimLevel,
+ remainingDimensions);
+ schedule = isl_union_map_add_map(schedule, Scattering);
}
return schedule;
Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Wed Oct 5 19:04:05 2011
@@ -426,7 +426,7 @@
isl_set *MemoryAccess::getStride(const isl_set *domainSubset) const {
isl_map *accessRelation = isl_map_copy(getAccessFunction());
isl_set *scatteringDomain = isl_set_copy(const_cast<isl_set*>(domainSubset));
- isl_map *scattering = isl_map_copy(getStatement()->getScattering());
+ isl_map *scattering = getStatement()->getScattering();
scattering = isl_map_reverse(scattering);
int difference = isl_map_n_in(scattering) - isl_set_n_dim(scatteringDomain);
@@ -512,9 +512,14 @@
}
//===----------------------------------------------------------------------===//
-void ScopStmt::setScattering(isl_map *scattering) {
+
+isl_map *ScopStmt::getScattering() const {
+ return isl_map_copy(Scattering);
+}
+
+void ScopStmt::setScattering(isl_map *NewScattering) {
isl_map_free(Scattering);
- Scattering = scattering;
+ Scattering = NewScattering;
}
void ScopStmt::buildScattering(SmallVectorImpl<unsigned> &Scatter) {
@@ -784,7 +789,7 @@
}
std::string ScopStmt::getScatteringStr() const {
- return stringFromIslObj(getScattering());
+ return stringFromIslObj(Scattering);
}
unsigned ScopStmt::getNumParams() const {
Modified: polly/trunk/lib/Cloog.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Cloog.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Cloog.cpp (original)
+++ polly/trunk/lib/Cloog.cpp Wed Oct 5 19:04:05 2011
@@ -159,10 +159,11 @@
if (Stmt->isFinalRead())
continue;
- CloogScattering *Scattering=
- cloog_scattering_from_isl_map(isl_map_copy(Stmt->getScattering()));
- CloogDomain *Domain =
- cloog_domain_from_isl_set(Stmt->getDomain());
+ CloogScattering *Scattering;
+ CloogDomain *Domain;
+
+ Scattering = cloog_scattering_from_isl_map(Stmt->getScattering());
+ Domain = cloog_domain_from_isl_set(Stmt->getDomain());
std::string entryName = Stmt->getBaseName();
Modified: polly/trunk/lib/Exchange/OpenScopExporter.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Exchange/OpenScopExporter.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Exchange/OpenScopExporter.cpp (original)
+++ polly/trunk/lib/Exchange/OpenScopExporter.cpp Wed Oct 5 19:04:05 2011
@@ -146,8 +146,11 @@
// Domain & Schedule
isl_set *domain = stmt->getDomain();
Stmt->domain = domainToMatrix(domain);
- Stmt->schedule = scatteringToMatrix(stmt->getScattering());
+ isl_map *Scattering = stmt->getScattering();
+ Stmt->schedule = scatteringToMatrix(Scattering);
isl_set_free(domain);
+ isl_map_free(Scattering);
+
// Statement name
const char* entryName = stmt->getBaseName();
Modified: polly/trunk/lib/Exchange/ScopLib.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Exchange/ScopLib.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Exchange/ScopLib.cpp (original)
+++ polly/trunk/lib/Exchange/ScopLib.cpp Wed Oct 5 19:04:05 2011
@@ -93,7 +93,9 @@
Stmt->domain = scoplib_matrix_list_malloc();
Stmt->domain->elt = domainToMatrix(domain);
Stmt->domain->next = NULL;
- Stmt->schedule = scatteringToMatrix(stmt->getScattering());
+ isl_map *Scattering = stmt->getScattering;
+ Stmt->schedule = scatteringToMatrix(Scattering);
+ isl_map_free(Scattering);
isl_set_free(domain);
// Statement name
Modified: polly/trunk/lib/Pocc.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Pocc.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/Pocc.cpp (original)
+++ polly/trunk/lib/Pocc.cpp Wed Oct 5 19:04:05 2011
@@ -179,7 +179,7 @@
if ((*SI)->isFinalRead())
continue;
- isl_map *scat = isl_map_copy((*SI)->getScattering());
+ isl_map *scat = (*SI)->getScattering();
isl_map *projected = isl_map_project_out(scat, isl_dim_out, lastLoop,
scatterDims - lastLoop);
@@ -199,11 +199,9 @@
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
if ((*SI)->isFinalRead())
continue;
- isl_map *scat = (*SI)->getScattering();
-
- int scatDims = isl_map_n_out(scat);
- isl_space *Space= isl_space_alloc(S.getCtx(), S.getNumParams(), scatDims,
- scatDims + 1);
+ int scatDims = (*SI)->getNumScattering();
+ isl_space *Space = isl_space_alloc(S.getCtx(), S.getNumParams(), scatDims,
+ scatDims + 1);
isl_basic_map *map = isl_basic_map_universe(isl_space_copy(Space));
for (int i = 0; i <= lastLoop - 1; i++) {
Modified: polly/trunk/lib/ScheduleOptimizer.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/ScheduleOptimizer.cpp?rev=141256&r1=141255&r2=141256&view=diff
==============================================================================
--- polly/trunk/lib/ScheduleOptimizer.cpp (original)
+++ polly/trunk/lib/ScheduleOptimizer.cpp Wed Oct 5 19:04:05 2011
@@ -67,38 +67,41 @@
return 0;
}
-static void extendScattering(Scop &S, unsigned scatDimensions) {
+static void extendScattering(Scop &S, unsigned NewDimensions) {
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
- ScopStmt *stmt = *SI;
+ ScopStmt *Stmt = *SI;
- if (stmt->isFinalRead())
+ if (Stmt->isFinalRead())
continue;
- isl_map *scattering = stmt->getScattering();
- isl_space *Space = isl_space_alloc(isl_map_get_ctx(scattering), 0,
- isl_map_n_out(scattering), scatDimensions);
- isl_basic_map *changeScattering = isl_basic_map_universe(
- isl_space_copy(Space));
+ unsigned OldDimensions = Stmt->getNumScattering();
+ isl_space *Space;
+ isl_basic_map *ChangeScattering;
+
+ Space = isl_space_alloc(Stmt->getIslCtx(), 0, OldDimensions, NewDimensions);
+ ChangeScattering = isl_basic_map_universe(isl_space_copy(Space));
isl_local_space *LocalSpace = isl_local_space_from_space(Space);
- for (unsigned i = 0; i < isl_map_n_out(scattering); i++) {
+ for (unsigned i = 0; i < OldDimensions; i++) {
isl_constraint *c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
isl_constraint_set_coefficient_si(c, isl_dim_in, i, 1);
isl_constraint_set_coefficient_si(c, isl_dim_out, i, -1);
- changeScattering = isl_basic_map_add_constraint(changeScattering, c);
+ ChangeScattering = isl_basic_map_add_constraint(ChangeScattering, c);
}
- for (unsigned i = isl_map_n_out(scattering); i < scatDimensions; i++) {
+ for (unsigned i = OldDimensions; i < NewDimensions; i++) {
isl_constraint *c = isl_equality_alloc(isl_local_space_copy(LocalSpace));
isl_constraint_set_coefficient_si(c, isl_dim_out, i, 1);
- changeScattering = isl_basic_map_add_constraint(changeScattering, c);
+ ChangeScattering = isl_basic_map_add_constraint(ChangeScattering, c);
}
- isl_map *changeScatteringMap = isl_map_from_basic_map(changeScattering);
+ isl_map *ChangeScatteringMap = isl_map_from_basic_map(ChangeScattering);
- isl_space *SpaceModel = isl_map_get_space(scattering);
- changeScatteringMap = isl_map_align_params(changeScatteringMap, SpaceModel);
- stmt->setScattering(isl_map_apply_range(scattering, changeScatteringMap));
+ ChangeScatteringMap = isl_map_align_params(ChangeScatteringMap,
+ S.getParamSpace());
+ isl_map *NewScattering = isl_map_apply_range(Stmt->getScattering(),
+ ChangeScatteringMap);
+ Stmt->setScattering(NewScattering);
isl_local_space_free(LocalSpace);
}
}
@@ -391,7 +394,7 @@
isl_union_set_from_set(domain));
isl_map *stmtSchedule;
isl_union_map_foreach_map(stmtBand, getSingleMap, &stmtSchedule);
- stmt->setScattering(isl_map_copy(stmtSchedule));
+ stmt->setScattering(stmtSchedule);
isl_union_map_free(stmtBand);
}
@@ -401,7 +404,7 @@
unsigned maxScatDims = 0;
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI)
- maxScatDims = std::max(isl_map_n_out((*SI)->getScattering()), maxScatDims);
+ maxScatDims = std::max((*SI)->getNumScattering(), maxScatDims);
extendScattering(S, maxScatDims);
return false;
More information about the llvm-commits
mailing list