[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