[LLVMbugs] [Bug 11196] New: suboptimal code generation in loop unrolling

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Oct 20 12:01:42 PDT 2011


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

           Summary: suboptimal code generation in loop unrolling
           Product: new-bugs
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: s3734770 at mail.zih.tu-dresden.de
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=7495)
 --> (http://llvm.org/bugs/attachment.cgi?id=7495)
test case

I attached a llvm-ir translation of the following program:
static init
begin
  if(copy('hello', 1, 2) == 'el') {
    log('correct')
  }
end


This program should be completely constant folded, but the optimization stucks
at a loop:
the loop begins at line 51 and compares two strings of the same size.
As you see in line 61+63 and 62+64, the characters of the strings at this
specific position are loaded and this exactly is the problem.

It is about the same issue like http://llvm.org/bugs/show_bug.cgi?id=11142
but this time, it's a bit more complex: the memory is not directly copied, but
it's received by a getelementptr+load from the malloced memory.
The challenge is to proof that the loop will stay exactly in the copied range
of [3 x i8]* @label416 so that the getelementptr call can fetched from
@label416 instead of %result.i.i10

An other question is why the loop that only consists of two iterations is not
constant folded.
The loop has the following structure:

start:
 br label %test
test:
 %loopvar = phi i32 [%loopvar2, %body], [0, %start]
 %finished = icmp sgt i32 %loopvar, 2 ; or any other constant or non-constant
 br i1 %finished, label %continue, label %body
body:
 ; sth fancy
 %otherbreak = icmp .....
 br i1 %otherbreak, label %exception, label %test
continue:

This report is maybe two bugs but when you fix one of the two issues, the test
case will become unusable to test the other issue because of constant folding.

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