llvm-project/llvm/test/Transforms/LoopIdiom
Dawid Jurczak bdcf04246c [LoopIdiom] Don't transform loop into memmove when load from body has more than one use
This change fixes issue found by Markus: https://reviews.llvm.org/rG11338e998df1
Before this patch following code was transformed to memmove:

for (int i = 15; i >= 1; i--) {
  p[i] = p[i-1];
  sum += p[i-1];
}

However load from p[i-1] is used not only by store to p[i] but also by sum computation.
Therefore we cannot emit memmove in loop header.

Differential Revision: https://reviews.llvm.org/D107964
2021-08-25 14:22:40 +02:00
..
AMDGPU
ARM
RISCV
X86 [LoopIdiom] Transform memmove-like loop into memmove (PR46179) 2021-07-22 13:05:43 +02:00
basic-address-space.ll
basic.ll [LoopIdiom] Don't transform loop into memmove when load from body has more than one use 2021-08-25 14:22:40 +02:00
crash.ll
ctpop-multiple-users-crash.ll
dbginfo-cost.ll
debug-line.ll
disable-options.ll
expander-do-not-delete-reused-values.ll
int_sideeffect.ll
lir-heurs-multi-block-loop.ll
memcpy-debugify-remarks.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-inline-intrinsic.ll [Intrinsics] Make MemCpyInlineInst a MemCpyInst 2021-07-02 10:25:24 -07:00
memcpy-intrinsic-different-types.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-intrinsic.ll [loop-idiom] Hoist loop memcpys to loop preheader 2021-05-04 17:05:04 -07:00
memcpy-vectors.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
memcpy.ll [LoopIdiom] Added testcase from PR44378; NFC 2021-04-21 22:00:32 +02:00
memset-debugify-remarks.ll [ScalarEvolution] Ensure backedge-taken counts are not pointers. 2021-06-21 16:24:16 -07:00
memset-runtime-debug.ll [LoopIdiom] let the pass deal with runtime memset size 2021-08-14 19:22:06 +08:00
memset-runtime.ll [LoopIdiom] let the pass deal with runtime memset size 2021-08-14 19:22:06 +08:00
memset.ll [LoopIdiom] Added testcase for double memset (fixed in LLVM 12); NFC 2021-04-22 16:39:25 +02:00
memset_noidiom.ll
non-canonical-loop.ll
non-integral-pointers.ll
nontemporal_store.ll
phi-insertion.ll
pr28196.ll
pr33114.ll
reuse-cast.ll
scev-invalidation.ll
scev-invalidation_topmostloop.ll
struct-custom-dl.ll
struct.ll
struct_pattern.ll
unordered-atomic-memcpy-noarch.ll
unroll-custom-dl.ll
unroll.ll
unsafe.ll
unwind.ll