As discussed in https://bugs.llvm.org/show_bug.cgi?id=43870, this transform is missing a crucial legality check: the old (non-countable) loop would early-return upon first mismatch, but there is no such guarantee for bcmp/memcmp. We'd need to ensure that [PtrA, PtrA+NBytes) and [PtrB, PtrB+NBytes) are fully dereferenceable memory regions. But that would limit the transform to constant loop trip counts and would further cripple it because dereferenceability analysis is *very* partial. Furthermore, even if all that is done, every single test would need to be rewritten from scratch. So let's just give up. |
||
|---|---|---|
| .. | ||
| AMDGPU | ||
| ARM | ||
| X86 | ||
| basic-address-space.ll | ||
| basic.ll | ||
| crash.ll | ||
| ctpop-multiple-users-crash.ll | ||
| dbginfo-cost.ll | ||
| debug-line.ll | ||
| int_sideeffect.ll | ||
| lir-heurs-multi-block-loop.ll | ||
| memcpy-debugify-remarks.ll | ||
| memset-debugify-remarks.ll | ||
| memset_noidiom.ll | ||
| non-canonical-loop.ll | ||
| non-integral-pointers.ll | ||
| nontemporal_store.ll | ||
| pr28196.ll | ||
| pr33114.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 | ||