mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
Make getUniqueExitBlocks's precondition assert more precise, to
avoid spurious failures. This fixes PR5758. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91147 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a4f9cc4e55
commit
050959cd08
@ -568,7 +568,7 @@ public:
|
|||||||
|
|
||||||
/// getUniqueExitBlocks - Return all unique successor blocks of this loop.
|
/// getUniqueExitBlocks - Return all unique successor blocks of this loop.
|
||||||
/// These are the blocks _outside of the current loop_ which are branched to.
|
/// These are the blocks _outside of the current loop_ which are branched to.
|
||||||
/// This assumes that loop is in canonical form.
|
/// This assumes that loop exits are in canonical form.
|
||||||
///
|
///
|
||||||
void getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const;
|
void getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const;
|
||||||
|
|
||||||
|
@ -316,12 +316,12 @@ bool Loop::hasDedicatedExits() const {
|
|||||||
|
|
||||||
/// getUniqueExitBlocks - Return all unique successor blocks of this loop.
|
/// getUniqueExitBlocks - Return all unique successor blocks of this loop.
|
||||||
/// These are the blocks _outside of the current loop_ which are branched to.
|
/// These are the blocks _outside of the current loop_ which are branched to.
|
||||||
/// This assumes that loop is in canonical form.
|
/// This assumes that loop exits are in canonical form.
|
||||||
///
|
///
|
||||||
void
|
void
|
||||||
Loop::getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const {
|
Loop::getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const {
|
||||||
assert(isLoopSimplifyForm() &&
|
assert(hasDedicatedExits() &&
|
||||||
"getUniqueExitBlocks assumes the loop is in canonical form!");
|
"getUniqueExitBlocks assumes the loop has canonical form exits!");
|
||||||
|
|
||||||
// Sort the blocks vector so that we can use binary search to do quick
|
// Sort the blocks vector so that we can use binary search to do quick
|
||||||
// lookups.
|
// lookups.
|
||||||
|
22
test/Transforms/IndVarSimplify/indirectbr.ll
Normal file
22
test/Transforms/IndVarSimplify/indirectbr.ll
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
; RUN: opt < %s -indvars -S -disable-output
|
||||||
|
; PR5758
|
||||||
|
|
||||||
|
define zeroext i1 @foo() nounwind {
|
||||||
|
entry:
|
||||||
|
indirectbr i8* undef, [label %"202", label %"133"]
|
||||||
|
|
||||||
|
"132": ; preds = %"133"
|
||||||
|
%0 = add i32 %1, 1 ; <i32> [#uses=1]
|
||||||
|
br label %"133"
|
||||||
|
|
||||||
|
"133": ; preds = %"132", %entry
|
||||||
|
%1 = phi i32 [ %0, %"132" ], [ 0, %entry ] ; <i32> [#uses=2]
|
||||||
|
%2 = icmp eq i32 %1, 4 ; <i1> [#uses=1]
|
||||||
|
br i1 %2, label %"134", label %"132"
|
||||||
|
|
||||||
|
"134": ; preds = %"133"
|
||||||
|
ret i1 true
|
||||||
|
|
||||||
|
"202": ; preds = %entry
|
||||||
|
ret i1 false
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user