This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/19701] New: [4.0 regression] Way too many IVs
- From: "falk at debian dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jan 2005 00:48:52 -0000
- Subject: [Bug tree-optimization/19701] New: [4.0 regression] Way too many IVs
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
GNU C version 4.0.0 20050120 (experimental) (alphaev68-unknown-linux-gnu)
Test case:
void fbSolidFillmmx(int w, unsigned char *d) {
while (w >= 64) {
*(unsigned long long *) (d + 0) = 0;
*(unsigned long long *) (d + 8) = 0;
*(unsigned long long *) (d + 16) = 0;
*(unsigned long long *) (d + 24) = 0;
*(unsigned long long *) (d + 32) = 0;
*(unsigned long long *) (d + 40) = 0;
*(unsigned long long *) (d + 48) = 0;
*(unsigned long long *) (d + 56) = 0;
w -= 64;
d += 64;
}
}
gives
fbSolidFillmmx:
cmple $16,63,$1
bne $1,$L5
lda $8,8($17)
lda $7,16($17)
lda $6,24($17)
lda $5,32($17)
lda $4,40($17)
lda $3,48($17)
lda $2,56($17)
mov $31,$22
.align 4
$L4:
stq $31,0($17)
lda $22,64($22)
lda $17,64($17)
stq $31,0($8)
subl $16,$22,$1
lda $8,64($8)
stq $31,0($7)
cmple $1,63,$1
lda $7,64($7)
stq $31,0($6)
lda $6,64($6)
stq $31,0($5)
lda $5,64($5)
stq $31,0($4)
lda $4,64($4)
stq $31,0($3)
lda $3,64($3)
stq $31,0($2)
lda $2,64($2)
beq $1,$L4
$L5:
ret $31,($26),1
gcc-3.4 generates reasonable code:
fbSolidFillmmx:
cmple $16,63,$1
bne $1,$L6
.align 4
$L11:
subl $16,64,$16
stq $31,0($17)
stq $31,8($17)
cmple $16,63,$1
stq $31,16($17)
stq $31,24($17)
stq $31,32($17)
stq $31,40($17)
stq $31,48($17)
stq $31,56($17)
lda $17,64($17)
beq $1,$L11
$L6:
ret $31,($26),1
--
Summary: [4.0 regression] Way too many IVs
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: falk at debian dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: alphaev68-unknown-linux-gnu
GCC host triplet: alphaev68-unknown-linux-gnu
GCC target triplet: alphaev68-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19701