Article View: gnu.gcc.bug
Article #2436gcc-1.34(vax) optimizer could be better maybe
From: Tim Shepard
Date: Tue, 21 Mar 1989 15:31
Date: Tue, 21 Mar 1989 15:31
78 lines
1845 bytes
1845 bytes
gcc-1.34 on 4.3bsd vax, foo.c (below) compiled with "gcc -S -O -c foo.c"
Note the two addl3's with identical sources before L9: below. Note
how r5 and r6 are subsequently each only used once. It looks like
code has been moved out of the loop from two different basic blocks in
the inner loop, but it doesn't look like cse ever got a crack at it.
I do appreciate the fine balance between an optimizer looping forever
and being very thorough. I won't complain too much if gcc is not
improved to catch this case.
-Tim
foo.c:
----------------------cut here----------------
int nums[4][4];
int foo()
{
int i,j;
int h = 0;
int t = 0;
for(i=0;i<4;i++) {
for (j=0;j<4;j++)
if (nums[i][j] < 0) {
h += t; t = 0;
} else {
t *= 10; t += nums[i][j];
}
h += t;
}
return h;
}
--------------------cut here-------------------
foo.s:
-----------------------cut here-----------------
#NO_APP
gcc_compiled.:
.text
.align 1
.globl _foo
_foo:
.word 0xc0
clrl r3
clrl r1
clrl r4
movab _nums,r7
L10:
clrl r2
ashl $4,r4,r0
addl3 r7,r0,r6
addl3 r7,r0,r5
L9:
tstl (r6)[r2]
jgeq L7
addl2 r1,r3
clrl r1
jbr L6
L7:
moval (r1)[r1],r0
addl3 r0,r0,r1
addl2 (r5)[r2],r1
L6:
incl r2
cmpl r2,$3
jleq L9
addl2 r1,r3
incl r4
cmpl r4,$3
jleq L10
movl r3,r0
ret
.comm _nums,64
-------------------------cut here---------------------
Technical Details
Message-ID:
<8903211531.AA07716@PTT.LCS.MIT.EDU>Path:
arc1-ca.pugleaf.net!utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!ALLSPICE.LCS.MIT.EDU!shepShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!ALLSPICE.LCS.MIT.EDU!shep From: shep@ALLSPICE.LCS.MIT.EDU (Tim Shepard) Newsgroups: gnu.gcc.bug Subject: gcc-1.34(vax) optimizer could be better maybe Message-ID: <8903211531.AA07716@PTT.LCS.MIT.EDU> Date: 21 Mar 89 15:31:13 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 78