[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