diff options
author | Siddharth Bhat <siddu.druid@gmail.com> | 2017-08-08 12:00:59 +0000 |
---|---|---|
committer | Siddharth Bhat <siddu.druid@gmail.com> | 2017-08-08 12:00:59 +0000 |
commit | 71dfb3eb074eb6237f631c23ba24fd5ca5fdd917 (patch) | |
tree | 6c57d6c68c7e65dafc9d8a862ff9a4ed1302b3cd /polly/lib/CodeGen/CodeGeneration.cpp | |
parent | e528bd219343140d00293421279918a598834f62 (diff) | |
download | bcm5719-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.cpp | 25 |
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. /// |