[LLVMbugs] [Bug 10114] New: EltsFromConsecutiveLoads does not preserve chain successor dependencies from the original loads.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jun 9 11:58:23 PDT 2011


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

           Summary: EltsFromConsecutiveLoads does not preserve chain
                    successor dependencies from the original loads.
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: jan_sjodin at yahoo.com
                CC: llvmbugs at cs.uiuc.edu


The EltsFromConsecutiveLoads in X86ISelLowering.cpp replaces several load
instructions with a single instruction. But if the replaced loads are before a
a call the new load may be inserted after the call, because the dependencies
are not preserved.

For example:

          chain
        /       \
       /         \
      V           V
 load addr       load addr+4
   |  \           /   |
   |   \         /    |
   |    V       V     |
   |   token_factor   |
   |         |        |
   \         |        /
    \        V       /
     \     call     / 
      \            / 
       \          / 
        \        /
       op1      op2

Will be replaced with:



       token_factor
            |
            |
            V
          call

          chain
            |
            |
            V  
          vload (not guaranteed to be executed before the call)
           /  \
          /    \
         /      \
       op1      op2

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