[polly] r308635 - [ScopInfo] Get a list of statements for a region node. NFC.
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 20 10:18:58 PDT 2017
Author: meinersbur
Date: Thu Jul 20 10:18:58 2017
New Revision: 308635
URL: http://llvm.org/viewvc/llvm-project?rev=308635&view=rev
Log:
[ScopInfo] Get a list of statements for a region node. NFC.
When constructing a schedule true and there are multiple statements for
a basic block, create a sequence node for these statements.
Contributed-by: Nandini Singhal <cs15mtech01004 at iith.ac.in>
Differential Revision: https://reviews.llvm.org/D35679
Modified:
polly/trunk/include/polly/ScopInfo.h
polly/trunk/lib/Analysis/ScopInfo.cpp
Modified: polly/trunk/include/polly/ScopInfo.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/ScopInfo.h?rev=308635&r1=308634&r2=308635&view=diff
==============================================================================
--- polly/trunk/include/polly/ScopInfo.h (original)
+++ polly/trunk/include/polly/ScopInfo.h Thu Jul 20 10:18:58 2017
@@ -2678,14 +2678,14 @@ public:
/// to be executed last, only that the incoming value is available in it.
ScopStmt *getLastStmtFor(BasicBlock *BB) const;
- /// Return the ScopStmt that represents the Region @p R, or nullptr if
+ /// Return the ScopStmts that represents the Region @p R, or nullptr if
/// it is not represented by any statement in this Scop.
- ScopStmt *getStmtFor(Region *R) const;
+ ArrayRef<ScopStmt *> getStmtListFor(Region *R) const;
- /// Return the ScopStmt that represents @p RN; can return nullptr if
+ /// Return the ScopStmts that represents @p RN; can return nullptr if
/// the RegionNode is not within the SCoP or has been removed due to
/// simplifications.
- ScopStmt *getStmtFor(RegionNode *RN) const;
+ ArrayRef<ScopStmt *> getStmtListFor(RegionNode *RN) const;
/// Return the ScopStmt an instruction belongs to, or nullptr if it
/// does not belong to any statement in this Scop.
Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=308635&r1=308634&r2=308635&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Thu Jul 20 10:18:58 2017
@@ -4935,7 +4935,7 @@ void Scop::buildSchedule(RegionNode *RN,
auto &LoopData = LoopStack.back();
LoopData.NumBlocksProcessed += getNumBlocksInRegionNode(RN);
- if (auto *Stmt = getStmtFor(RN)) {
+ for (auto *Stmt : getStmtListFor(RN)) {
auto *UDomain = isl_union_set_from_set(Stmt->getDomain());
auto *StmtSchedule = isl_schedule_from_domain(UDomain);
LoopData.Schedule = combineInSequence(LoopData.Schedule, StmtSchedule);
@@ -4995,16 +4995,14 @@ ScopStmt *Scop::getLastStmtFor(BasicBloc
return nullptr;
}
-ScopStmt *Scop::getStmtFor(RegionNode *RN) const {
+ArrayRef<ScopStmt *> Scop::getStmtListFor(RegionNode *RN) const {
if (RN->isSubRegion())
- return getStmtFor(RN->getNodeAs<Region>());
- return getStmtFor(RN->getNodeAs<BasicBlock>());
+ return getStmtListFor(RN->getNodeAs<Region>());
+ return getStmtListFor(RN->getNodeAs<BasicBlock>());
}
-ScopStmt *Scop::getStmtFor(Region *R) const {
- ScopStmt *Stmt = getStmtFor(R->getEntry());
- assert(!Stmt || Stmt->getRegion() == R);
- return Stmt;
+ArrayRef<ScopStmt *> Scop::getStmtListFor(Region *R) const {
+ return getStmtListFor(R->getEntry());
}
int Scop::getRelativeLoopDepth(const Loop *L) const {
More information about the llvm-commits
mailing list