[LLVMbugs] [Bug 14432] New: -indvars generates infinite loop

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Nov 25 12:33:42 PST 2012


http://llvm.org/bugs/show_bug.cgi?id=14432

             Bug #: 14432
           Summary: -indvars generates infinite loop
           Product: libraries
           Version: 3.2
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: code at klickverbot.at
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 9594
  --> http://llvm.org/bugs/attachment.cgi?id=9594
test case, compile with "opt -indvars".

The attached .ll file seems to trigger a bug in -indvars with LLVM 3.1, the 3.2
branch (r168527) and SVN trunk (r168548):

In this loop:
---
forcond38:
  %__key8.0 = phi i32 [ %tmp81, %noassert68 ], [ 2, %forcond38.preheader ]
  %tmp46 = icmp slt i32 %__key8.0, 10
  br i1 %tmp46, label %forbody39, label %unrolledend

forbody39:
  %tmp51 = sdiv i32 32767, %__key8.0
  %tmp57 = sdiv i32 -32768, %__key8.0
  %sext33 = shl i32 %tmp51, 16
  %sext = shl i32 %tmp51, 16
  %tmp66 = icmp eq i32 %sext33, %sext
  br i1 %tmp66, label %noassert68, label %assert67

assert67:
  tail call void @llvm.trap()
  unreachable

noassert68:
  %sext34 = shl i32 %tmp57, 16
  %sext21 = shl i32 %tmp57, 16
  %tmp76 = icmp eq i32 %sext34, %sext21
  %tmp81 = add i32 %__key8.0, 1
  br i1 %tmp76, label %forcond38, label %assert77

assert77:                                         ; preds = %noassert68
  tail call void @llvm.trap()
  unreachable

unrolledend:                                      ; preds = %forcond38
  ret i32 0
---

-indvars replaces the loop condition with an unconditional jump:

---
-  %tmp46 = icmp slt i32 %__key8.0, 10
-  br i1 %tmp46, label %forbody39, label %unrolledend
+  br i1 true, label %forbody39, label %unrolledend
---

It would be great if somebody could have a look at this before the 3.2 release,
because this effectively causes a regression in the LDC test suite compared to
LLVM 3.1.

Sorry for the slightly big test case, but bugpoint crashes and I'm not sure if
I'll be able to have another look at the issue before the end of the first
release testing phase.

-- 
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