https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94092
Bug ID: 94092
Summary: Code size and performance degradations after
-ftree-loop-distribute-patterns was enabled at -O[2s]+
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: bina2374 at gmail dot com
Target Milestone: ---
Target: riscv64-unknown-elf
Since https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88440,
loop-distribute-patterns was enabled at -O[2s]+. We understand that this patch
is helpful in some cases, but not for all.
In the original bugzilla, the loop count is known, and the performance and code
size are all improved finally. However, if loop count is unknown, the results
may become worse.
void init_array(int N, int *array) {
int i;
for (i = 0; i < N; i++)
array[i] = 0;
}
init_array:
mv a2,a0
mv a0,a1
ble a2,zero,.L1
slli a2,a2,2
li a1,0
tail memset
.L1:
ret
For coremark, this is not only harmful to performance, but also code size.
Therefore, I suggest that we have to discuss how to resolve the case of unknown
loop count.