[LLVMbugs] [Bug 255] [tailduplication] Single basic block loops are very rare

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Feb 28 22:48:04 PST 2004


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=255

sabre at nondot.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From sabre at nondot.org  2004-02-29 00:48 -------
This tiny patch fixes the problem:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040223/012408.html

After applying this, we get:

void %test() {
entry:
        br label %no_exit
no_exit:
        %i.0.pn = phi int [ 0, %entry ], [ %inc, %no_exit ]
        %tmp.4 = cast int %i.0.pn to long
        %tmp.5 = getelementptr [1000 x int]* %A, long 0, long %tmp.4
        store int 0, int* %tmp.5
        %inc = add int %i.0.pn, 1
        %tmp.11 = setlt int %inc, 1000
        br bool %tmp.11, label %no_exit, label %return
return:         ; preds = %no_exit
        ret void
}

As we would expect on the testcase in the bug.

Note that this is really just a bandaid over the problem.  It simply enables
tail-duplication in the one really bad case that it is absolutely essential. 
The real problem is still very present, and should be fixed: namely that taildup
requires a general dominator update mechanism.

In the meantime, at least we won't generate completely brain-dead code and
modulo-sched will have a chance again. :)

-Chris




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.



More information about the llvm-bugs mailing list