[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