Remove dependency of Scop::getStmtFor(Inst) on getStmtFor(BB). NFC.
We are working towards removing uses of Scop::getStmtFor(BB). In this
patch, we remove dependency of Scop::getStmtFor(Inst) on getStmtFor(BB).
To do so, we introduce a map of instructions to their corresponding scop
statements and use it to get the instructions' statement.
Contributed-by: Nandini Singhal <cs15mtech01004@iith.ac.in>
Differential Revision: https://reviews.llvm.org/D35663
llvm-svn: 310494
diff --git a/polly/lib/Transform/ForwardOpTree.cpp b/polly/lib/Transform/ForwardOpTree.cpp
index 27f9f61..0b916c5 100644
--- a/polly/lib/Transform/ForwardOpTree.cpp
+++ b/polly/lib/Transform/ForwardOpTree.cpp
@@ -666,9 +666,12 @@
case VirtualUse::Inter:
Instruction *Inst = cast<Instruction>(UseVal);
- if (!DefStmt)
+ if (!DefStmt) {
DefStmt = S->getStmtFor(Inst);
- assert(DefStmt && "Value must be defined somewhere");
+ if (!DefStmt)
+ return FD_CannotForward;
+ }
+
DefLoop = LI->getLoopFor(Inst->getParent());
if (DefToTarget.is_null() && !Known.is_null()) {