Open
Description
In some cases loops are cloned with no performance benefit, and it would be better to not clone the loop at all, as the jit would run faster and produce smaller code.
For instance in benchi\iniarray, the two cloned copies are identical (in fact the array length is known and you can see there are no bounds checks):
G_M24601_IG03:
33C9 xor ecx, ecx
83780810 cmp dword ptr [rax+8], 16
7C15 jl SHORT G_M24601_IG05
G_M24601_IG04:
4C63C1 movsxd r8, ecx
6642C74440102000 mov word ptr [rax+2*r8+16], 32
FFC1 inc ecx
83F910 cmp ecx, 16
7CEE jl SHORT G_M24601_IG04
EB14 jmp SHORT G_M24601_IG06
G_M24601_IG05:
4C63C1 movsxd r8, ecx
6642C74440102000 mov word ptr [rax+2*r8+16], 32
FFC1 inc ecx
83F910 cmp ecx, 16
7CEE jl SHORT G_M24601_IG05
G_M24601_IG06:
FFC2 inc edx
81FA80969800 cmp edx, 0x989680
7CC8 jl SHORT G_M24601_IG03
category:cq
theme:loop-opt
skill-level:expert
cost:medium