diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-09-11 10:09:45 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-09-11 10:09:45 +0000 |
commit | 36272db3cad448211389168cced4baac39a1a0d1 (patch) | |
tree | e570502f0d6730e432657fc86304fa02a2de80fa /lib/Transforms/Scalar/LoopSink.cpp | |
parent | 8568f9cb5af587ccee4088af3e2d617b3c30d403 (diff) |
Diffstat (limited to 'lib/Transforms/Scalar/LoopSink.cpp')
-rw-r--r-- | lib/Transforms/Scalar/LoopSink.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/LoopSink.cpp b/lib/Transforms/Scalar/LoopSink.cpp index 760177c9c5e9..7d62349d4719 100644 --- a/lib/Transforms/Scalar/LoopSink.cpp +++ b/lib/Transforms/Scalar/LoopSink.cpp @@ -152,6 +152,14 @@ findBBsToSinkInto(const Loop &L, const SmallPtrSetImpl<BasicBlock *> &UseBBs, } } + // Can't sink into blocks that have no valid insertion point. + for (BasicBlock *BB : BBsToSinkInto) { + if (BB->getFirstInsertionPt() == BB->end()) { + BBsToSinkInto.clear(); + break; + } + } + // If the total frequency of BBsToSinkInto is larger than preheader frequency, // do not sink. if (adjustedSumFreq(BBsToSinkInto, BFI) > |