[polly] r295984 - [DependenceInfo] Simplify use of StmtSchedule's domain [NFC]

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 23 07:40:46 PST 2017


Author: meinersbur
Date: Thu Feb 23 09:40:46 2017
New Revision: 295984

URL: http://llvm.org/viewvc/llvm-project?rev=295984&view=rev
Log:
[DependenceInfo] Simplify use of StmtSchedule's domain [NFC]

Once a StmtSchedule is created, only its domain is used anywhere within
DependenceInfo::calculateDependences. So, we choose to return the
wrapped domain of the union_map rather than the entire union_map.

However, we still build the union_map first within collectInfo(). It is
cleaner to first build the entire union_map and then pull the domain out in
one shot, rather than repeatedly extracting the domain in bits and pieces
from accdom.

Contributed-by: Siddharth Bhat <siddu.druid at gmail.com>

Differential Revision: https://reviews.llvm.org/D30208

Modified:
    polly/trunk/lib/Analysis/DependenceInfo.cpp

Modified: polly/trunk/lib/Analysis/DependenceInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/DependenceInfo.cpp?rev=295984&r1=295983&r2=295984&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/DependenceInfo.cpp (original)
+++ polly/trunk/lib/Analysis/DependenceInfo.cpp Thu Feb 23 09:40:46 2017
@@ -114,14 +114,14 @@ static __isl_give isl_map *tag(__isl_tak
 static void collectInfo(Scop &S, isl_union_map **Read, isl_union_map **Write,
                         isl_union_map **MayWrite,
                         isl_union_map **ReductionTagMap,
-                        isl_union_map **StmtSchedule,
+                        isl_union_set **StmtScheduleDomain,
                         Dependences::AnalysisLevel Level) {
   isl_space *Space = S.getParamSpace();
   *Read = isl_union_map_empty(isl_space_copy(Space));
   *Write = isl_union_map_empty(isl_space_copy(Space));
   *MayWrite = isl_union_map_empty(isl_space_copy(Space));
   *ReductionTagMap = isl_union_map_empty(isl_space_copy(Space));
-  *StmtSchedule = isl_union_map_empty(Space);
+  isl_union_map *StmtSchedule = isl_union_map_empty(Space);
 
   SmallPtrSet<const ScopArrayInfo *, 8> ReductionArrays;
   if (UseReductions)
@@ -160,7 +160,7 @@ static void collectInfo(Scop &S, isl_uni
                  "Schedules that contain extension nodes require special "
                  "handling.");
           isl_map *Schedule = tag(StmtScheduleMap, MA, Level);
-          *StmtSchedule = isl_union_map_add_map(*StmtSchedule, Schedule);
+          StmtSchedule = isl_union_map_add_map(StmtSchedule, Schedule);
         }
       }
 
@@ -171,11 +171,12 @@ static void collectInfo(Scop &S, isl_uni
     }
 
     if (!ReductionArrays.empty() && Level == Dependences::AL_Statement)
-      *StmtSchedule = isl_union_map_add_map(*StmtSchedule, Stmt.getSchedule());
+      StmtSchedule = isl_union_map_add_map(StmtSchedule, Stmt.getSchedule());
   }
 
-  *StmtSchedule =
-      isl_union_map_intersect_params(*StmtSchedule, S.getAssumedContext());
+  StmtSchedule =
+      isl_union_map_intersect_params(StmtSchedule, S.getAssumedContext());
+  *StmtScheduleDomain = isl_union_map_domain(StmtSchedule);
 
   *ReductionTagMap = isl_union_map_coalesce(*ReductionTagMap);
   *Read = isl_union_map_coalesce(*Read);
@@ -297,13 +298,14 @@ static __isl_give isl_union_flow *buildF
 }
 
 void Dependences::calculateDependences(Scop &S) {
-  isl_union_map *Read, *Write, *MayWrite, *ReductionTagMap, *StmtSchedule;
+  isl_union_map *Read, *Write, *MayWrite, *ReductionTagMap;
   isl_schedule *Schedule;
+  isl_union_set *StmtScheduleDomain;
 
   DEBUG(dbgs() << "Scop: \n" << S << "\n");
 
-  collectInfo(S, &Read, &Write, &MayWrite, &ReductionTagMap, &StmtSchedule,
-              Level);
+  collectInfo(S, &Read, &Write, &MayWrite, &ReductionTagMap,
+              &StmtScheduleDomain, Level);
 
   bool HasReductions = !isl_union_map_is_empty(ReductionTagMap);
 
@@ -311,7 +313,7 @@ void Dependences::calculateDependences(S
         dbgs() << "Write: " << Write << '\n';
         dbgs() << "MayWrite: " << MayWrite << '\n';
         dbgs() << "ReductionTagMap: " << ReductionTagMap << '\n';
-        dbgs() << "StmtSchedule: " << StmtSchedule << '\n';);
+        dbgs() << "StmtScheduleDomain: " << StmtScheduleDomain << '\n';);
 
   Schedule = S.getScheduleTree();
 
@@ -319,8 +321,8 @@ void Dependences::calculateDependences(S
     isl_union_map_free(ReductionTagMap);
     // Tag the schedule tree if we want fine-grain dependence info
     if (Level > AL_Statement) {
-      auto TaggedDom = isl_union_map_domain((isl_union_map_copy(StmtSchedule)));
-      auto TaggedMap = isl_union_set_unwrap(TaggedDom);
+      auto TaggedMap =
+          isl_union_set_unwrap(isl_union_set_copy(StmtScheduleDomain));
       auto Tags = isl_union_map_domain_map_union_pw_multi_aff(TaggedMap);
       Schedule = isl_schedule_pullback_union_pw_multi_aff(Schedule, Tags);
     }
@@ -338,8 +340,8 @@ void Dependences::calculateDependences(S
 
     // Compute an identity map from each statement in domain to itself.
     // IdentityTags = { [Stmt[i] -> Stmt[i] }
-    IdentityDom = isl_union_map_domain(isl_union_map_copy(StmtSchedule));
-    IdentityMap = isl_union_set_identity(IdentityDom);
+    IdentityMap =
+        isl_union_set_identity(isl_union_set_copy(StmtScheduleDomain));
     IdentityTags = isl_union_pw_multi_aff_from_union_map(IdentityMap);
 
     Tags = isl_union_pw_multi_aff_union_add(ReductionTags, IdentityTags);
@@ -427,20 +429,18 @@ void Dependences::calculateDependences(S
   // reduction dependences or dependences that are finer than statement
   // level dependences.
   if (!HasReductions && Level == AL_Statement) {
-    TC_RED = isl_union_map_empty(isl_union_map_get_space(StmtSchedule));
-    isl_union_map_free(StmtSchedule);
+    TC_RED = isl_union_map_empty(isl_union_set_get_space(StmtScheduleDomain));
+    isl_union_set_free(StmtScheduleDomain);
     return;
   }
 
   isl_union_map *STMT_RAW, *STMT_WAW, *STMT_WAR;
   STMT_RAW = isl_union_map_intersect_domain(
-      isl_union_map_copy(RAW),
-      isl_union_map_domain(isl_union_map_copy(StmtSchedule)));
+      isl_union_map_copy(RAW), isl_union_set_copy(StmtScheduleDomain));
   STMT_WAW = isl_union_map_intersect_domain(
-      isl_union_map_copy(WAW),
-      isl_union_map_domain(isl_union_map_copy(StmtSchedule)));
+      isl_union_map_copy(WAW), isl_union_set_copy(StmtScheduleDomain));
   STMT_WAR = isl_union_map_intersect_domain(isl_union_map_copy(WAR),
-                                            isl_union_map_domain(StmtSchedule));
+                                            StmtScheduleDomain);
   DEBUG({
     dbgs() << "Wrapped Dependences:\n";
     dump();




More information about the llvm-commits mailing list