[LLVMbugs] [Bug 20806] New: [EarlyCSE, GVN, Missed Opt] invariant loads can be forwarded across aliasing stores

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Aug 29 14:00:41 PDT 2014


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

            Bug ID: 20806
           Summary: [EarlyCSE, GVN, Missed Opt] invariant loads can be
                    forwarded across aliasing stores
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: listmail at philipreames.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 12956
  --> http://llvm.org/bugs/attachment.cgi?id=12956&action=edit
Failing test case for EarlyCSE

LLVM supports the "invariant.load" metadata which indicates that the value
loaded from that location can not change during execution of the code visible
to LLVM.  This enables us to forward the values of invariant loads across
potentially aliasing stores (or even provably aliasing stores since that would
be undefined.)

We currently exploit this property in LICM to lift such loads out of loops and
forward the value to all uses in all iterations.  

We can apply the same reasoning to load value forwarding performed by EarlyCSE
and GVN.  I have attached a test case for EarlyCSE and will add another for GVN
shortly.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140829/b1154047/attachment.html>


More information about the llvm-bugs mailing list