ScopInfo: Only give away a copy of the schedule.

llvm-svn: 141256
diff --git a/polly/lib/ScheduleOptimizer.cpp b/polly/lib/ScheduleOptimizer.cpp
index a2aeb96..0a01ee0 100644
--- a/polly/lib/ScheduleOptimizer.cpp
+++ b/polly/lib/ScheduleOptimizer.cpp
@@ -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;