[polly] r261436 - Introduce helper function to build isl_flow, NFC.

Hongbin Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 20 06:45:48 PST 2016


Author: ether
Date: Sat Feb 20 08:45:48 2016
New Revision: 261436

URL: http://llvm.org/viewvc/llvm-project?rev=261436&view=rev
Log:
Introduce helper function to build isl_flow, NFC.

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=261436&r1=261435&r2=261436&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/DependenceInfo.cpp (original)
+++ polly/trunk/lib/Analysis/DependenceInfo.cpp Sat Feb 20 08:45:48 2016
@@ -254,6 +254,20 @@ addZeroPaddingToSchedule(__isl_take isl_
   return Schedule;
 }
 
+static __isl_give isl_union_flow *buildFlow(__isl_keep isl_union_map *Snk,
+                                            __isl_keep isl_union_map *Src,
+                                            __isl_keep isl_union_map *MaySrc,
+                                            __isl_keep isl_schedule *Schedule) {
+  isl_union_access_info *AI;
+
+  AI = isl_union_access_info_from_sink(isl_union_map_copy(Snk));
+  AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(MaySrc));
+  if (Src)
+    AI = isl_union_access_info_set_must_source(AI, isl_union_map_copy(Src));
+  AI = isl_union_access_info_set_schedule(AI, isl_schedule_copy(Schedule));
+  return isl_union_access_info_compute_flow(AI);
+}
+
 void Dependences::calculateDependences(Scop &S) {
   isl_union_map *Read, *Write, *MayWrite, *AccessSchedule, *StmtSchedule;
   isl_schedule *Schedule;
@@ -295,23 +309,14 @@ void Dependences::calculateDependences(S
   RAW = WAW = WAR = RED = nullptr;
 
   if (OptAnalysisType == VALUE_BASED_ANALYSIS) {
-    isl_union_access_info *AI;
     isl_union_flow *Flow;
 
-    AI = isl_union_access_info_from_sink(isl_union_map_copy(Read));
-    AI = isl_union_access_info_set_must_source(AI, isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(MayWrite));
-    AI = isl_union_access_info_set_schedule(AI, isl_schedule_copy(Schedule));
-    Flow = isl_union_access_info_compute_flow(AI);
+    Flow = buildFlow(Read, Write, MayWrite, Schedule);
 
     RAW = isl_union_flow_get_must_dependence(Flow);
     isl_union_flow_free(Flow);
 
-    AI = isl_union_access_info_from_sink(isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_must_source(AI, isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(Read));
-    AI = isl_union_access_info_set_schedule(AI, Schedule);
-    Flow = isl_union_access_info_compute_flow(AI);
+    Flow = buildFlow(Write, Write, Read, Schedule);
 
     WAW = isl_union_flow_get_must_dependence(Flow);
     WAR = isl_union_flow_get_may_dependence(Flow);
@@ -322,36 +327,29 @@ void Dependences::calculateDependences(S
     // WAR, refactoring Polly to only track general non-flow dependences may
     // improve performance.
     WAR = isl_union_map_subtract(WAR, isl_union_map_copy(WAW));
+
     isl_union_flow_free(Flow);
+    isl_schedule_free(Schedule);
   } else {
-    isl_union_access_info *AI;
     isl_union_flow *Flow;
 
     Write = isl_union_map_union(Write, isl_union_map_copy(MayWrite));
 
-    AI = isl_union_access_info_from_sink(isl_union_map_copy(Read));
-    AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_schedule(AI, isl_schedule_copy(Schedule));
-    Flow = isl_union_access_info_compute_flow(AI);
+    Flow = buildFlow(Read, nullptr, Write, Schedule);
 
     RAW = isl_union_flow_get_may_dependence(Flow);
     isl_union_flow_free(Flow);
 
-    AI = isl_union_access_info_from_sink(isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(Read));
-    AI = isl_union_access_info_set_schedule(AI, isl_schedule_copy(Schedule));
-    Flow = isl_union_access_info_compute_flow(AI);
+    Flow = buildFlow(Write, nullptr, Read, Schedule);
 
     WAR = isl_union_flow_get_may_dependence(Flow);
     isl_union_flow_free(Flow);
 
-    AI = isl_union_access_info_from_sink(isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_may_source(AI, isl_union_map_copy(Write));
-    AI = isl_union_access_info_set_schedule(AI, Schedule);
-    Flow = isl_union_access_info_compute_flow(AI);
+    Flow = buildFlow(Write, nullptr, Write, Schedule);
 
     WAW = isl_union_flow_get_may_dependence(Flow);
     isl_union_flow_free(Flow);
+    isl_schedule_free(Schedule);
   }
 
   isl_union_map_free(MayWrite);




More information about the llvm-commits mailing list