[LLVMbugs] [Bug 7718] New: Redundant pair of load / store is not eliminated by -std-compile-opts

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Jul 26 17:24:08 PDT 2010


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

           Summary: Redundant pair of load / store is not eliminated by
                    -std-compile-opts
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Loop Optimizer
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: asl at math.spbu.ru
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=5271)
 --> (http://llvm.org/bugs/attachment.cgi?id=5271)
Example LLVM IR

Consider the attached bitcode containing quite ugly-written FIR core. After opt
-std-compile-outs In the innermost loop we have:

  %28 = load i32** @coefficient1.2129, align 4    ; <i32*> [#uses=2]
...
  store i32* %35, i32** @coefficient1.2129, align 4

This pair of load/stores should be moved out of loop:
  - @coefficient1.2129 is initialized just before the loop
  - the value can be reused during the loop iteration
  - the final value can be just stored after the loop

Exactly the same thing can be applied to @signalOutLow1.2126 and
@history1Low1.2127. In short: all loads / stores to globals should be raised to
regs and only final values stored after the loop.

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