[LLVMbugs] [Bug 10515] New: LoopPasses incorrectly update LoopInfo after removing a backedge.
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Jul 27 15:23:47 PDT 2011
http://llvm.org/bugs/show_bug.cgi?id=10515
Summary: LoopPasses incorrectly update LoopInfo after removing
a backedge.
Product: libraries
Version: trunk
Platform: PC
OS/Version: All
Status: ASSIGNED
Severity: normal
Priority: P
Component: Loop Optimizer
AssignedTo: atrick at apple.com
ReportedBy: atrick at apple.com
CC: llvmbugs at cs.uiuc.edu
Created an attachment (id=6952)
--> (http://llvm.org/bugs/attachment.cgi?id=6952)
Unit test
I have been able expose the problem with a simple unit test (attached) by
running opt < skiplevelexit.ll -loop-unroll.
Assertion failed: (HasInsideLoopSuccs && "Loop block has no in-loop
successors!"), function verifyLoop, file
/Volumes/Storage/llvm/include/llvm/Analysis/LoopInfo.h, line 458.
I am currently implementing a a general algorithm that can rediscover
the containing loop for each block in the original loop assuming that
the rest of the loop tree is consistent. The fix involves
- post order iteration over the blocks in the original loop only, not
including subloops
- deriving a block's containing loop from its successors' containing
loops: it is the deepest loop that contains any successor
- handling nested subloops as a single unit: essentially, a
preheader's loop is the deepest loop that contains a subloop exit.
- incrementally processing blocks until all predecessors are available
to handle nested irreducible control flow (without irreducible flow,
a single postorder traversal is sufficient).
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list