[LLVMbugs] [Bug 3953] New: Instcombine quadratic in add chain length

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Mon Apr 6 14:10:20 PDT 2009


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

           Summary: Instcombine quadratic in add chain length
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Scalar Optimizations
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: jyasskin at google.com
                CC: llvmbugs at cs.uiuc.edu, nlewycky at google.com


Created an attachment (id=2799)
 --> (http://llvm.org/bugs/attachment.cgi?id=2799)
Generator for add chains that make instcombine quadratic

The attached script generates .ll files of the form:

$  ./instcombine_test3.py 3
declare void @use(i32)

define void @foo(i32 %B0) {

  %A1 = add i32 %B0, 1
  %B1 = add i32 %A1, -1
  call void @use(i32 %B1)

  %A2 = add i32 %B1, 1
  %B2 = add i32 %A2, -1
  call void @use(i32 %B2)

  ret void
}

instcombine takes approximately quadratic time to simplify these chains.

$ for N in 500 1000 1500 2000 2500; do ./instcombine_test3.py
$N|$LLVM/llvm-as|time $LLVM/opt -instcombine >/dev/null; done
        0.62 real         0.56 user         0.00 sys
        2.28 real         2.16 user         0.01 sys
        4.86 real         4.69 user         0.02 sys
        8.70 real         8.38 user         0.04 sys
       13.46 real        12.99 user         0.08 sys

This prevents me from applying the obvious workaround to bug 3936.

A time profile doesn't show an obvious culprit, spending 38% in
isInstructionTriviallyDead, 25% in visitCall, and 11% in visitAdd.


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