https://bugs.llvm.org/show_bug.cgi?id=47658

            Bug ID: 47658
           Summary: LoopReroll incorrectly reorders memory instrs when
                    there is overlap
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedb...@nondot.org
          Reporter: kevindevos9...@gmail.com
                CC: llvm-bugs@lists.llvm.org, nunoplo...@sapo.pt

Test: Transforms/LoopReroll/basic.ll
Function: pointer_bitcast_baseinst
Reason: Memory mismatch

Example: https://godbolt.org/z/5c8YK1
Ordering of loads and stores with memory offsets:

source -  load 876, load  892, store 892, store 900, ... 
target -  load 876, store 892, load  892, store 900, ...

Since there is overlap between the memory positions of the second load and
first store in source then the swapped ordering of these instructions in target
is incorrect. 
This optimization should not be performed in case of such a memory overlap.

A detailed and complete Alive report with single iteration loop unroll on this
test can be seen here: https://pastebin.com/pQsf61wb

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to