summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen/CodeGeneration.cpp
diff options
context:
space:
mode:
authorSiddharth Bhat <siddu.druid@gmail.com>2017-08-08 12:00:59 +0000
committerSiddharth Bhat <siddu.druid@gmail.com>2017-08-08 12:00:59 +0000
commit71dfb3eb074eb6237f631c23ba24fd5ca5fdd917 (patch)
tree6c57d6c68c7e65dafc9d8a862ff9a4ed1302b3cd /polly/lib/CodeGen/CodeGeneration.cpp
parente528bd219343140d00293421279918a598834f62 (diff)
downloadbcm5719-llvm-71dfb3eb074eb6237f631c23ba24fd5ca5fdd917.tar.gz
bcm5719-llvm-71dfb3eb074eb6237f631c23ba24fd5ca5fdd917.zip
[Polly] [PPCGCodeGeneration] Handle failing of invariant load hoisting gracefully.
To do this, we replicate what `CodeGeneration` does. We expose `markNodeUnreachable` from `CodeGeneration` to `PPCGCodeGeneration`. Differential Revision: https://reviews.llvm.org/D36457 llvm-svn: 310350
Diffstat (limited to 'polly/lib/CodeGen/CodeGeneration.cpp')
-rw-r--r--polly/lib/CodeGen/CodeGeneration.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp
index 78702646014..9f46715c580 100644
--- a/polly/lib/CodeGen/CodeGeneration.cpp
+++ b/polly/lib/CodeGen/CodeGeneration.cpp
@@ -54,6 +54,20 @@ static cl::opt<bool>
cl::desc("Add run-time performance monitoring"), cl::Hidden,
cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory));
+namespace polly {
+/// Mark a basic block unreachable.
+///
+/// Marks the basic block @p Block unreachable by equipping it with an
+/// UnreachableInst.
+void markBlockUnreachable(BasicBlock &Block, PollyIRBuilder &Builder) {
+ auto *OrigTerminator = Block.getTerminator();
+ Builder.SetInsertPoint(OrigTerminator);
+ Builder.CreateUnreachable();
+ OrigTerminator->eraseFromParent();
+}
+
+} // namespace polly
+
namespace {
static void verifyGeneratedFunction(Scop &S, Function &F, IslAstInfo &AI) {
@@ -86,17 +100,6 @@ static void fixRegionInfo(Function &F, Region &ParentRegion, RegionInfo &RI) {
}
}
-/// Mark a basic block unreachable.
-///
-/// Marks the basic block @p Block unreachable by equipping it with an
-/// UnreachableInst.
-static void markBlockUnreachable(BasicBlock &Block, PollyIRBuilder &Builder) {
- auto *OrigTerminator = Block.getTerminator();
- Builder.SetInsertPoint(OrigTerminator);
- Builder.CreateUnreachable();
- OrigTerminator->eraseFromParent();
-}
-
/// Remove all lifetime markers (llvm.lifetime.start, llvm.lifetime.end) from
/// @R.
///
OpenPOWER on IntegriCloud