summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen/CodeGeneration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/CodeGen/CodeGeneration.cpp')
-rw-r--r--polly/lib/CodeGen/CodeGeneration.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp
index 5f50ab40e9e..1795cadad58 100644
--- a/polly/lib/CodeGen/CodeGeneration.cpp
+++ b/polly/lib/CodeGen/CodeGeneration.cpp
@@ -92,6 +92,18 @@ public:
return true;
}
+ // CodeGeneration adds a lot of BBs without updating the RegionInfo
+ // We make all created BBs belong to the scop's parent region without any
+ // nested structure to keep the RegionInfo verifier happy.
+ void fixRegionInfo(Function *F, Region *ParentRegion) {
+ for (BasicBlock &BB : *F) {
+ if (RI->getRegionFor(&BB))
+ continue;
+
+ RI->setRegionFor(&BB, ParentRegion);
+ }
+ }
+
bool runOnScop(Scop &S) override {
AI = &getAnalysis<IslAstInfo>();
@@ -136,6 +148,7 @@ public:
NodeBuilder.create(AstRoot);
NodeBuilder.finalizeSCoP(S);
+ fixRegionInfo(EnteringBB->getParent(), R->getParent());
assert(!verifyGeneratedFunction(S, *EnteringBB->getParent()) &&
"Verification of generated function failed");
OpenPOWER on IntegriCloud