[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: About g++ optimization
From: |
address@hidden |
Subject: |
Re: About g++ optimization |
Date: |
2 Apr 2006 07:44:01 -0700 |
User-agent: |
G2/0.2 |
> Funny. Last time I looked there was no cmpl in this case.
That's because you are using predecrement in this example. It changes
the test completely. With predecrement you only iterate the loop 4
times, and iterate 5 times with post decrement. Since it is
postdecrement, it needs the compare the loop iterator against -1, not 0
or else it will miss the last loop iteration.
Change your more recent test case to i--, then look at the assembly.
There will be a cmpl $-1
> What version are you using?
gcc version 4.2.0 20060327 (experimental)
Previously I was using gcc 4.2, but for your sake here is your recent
test case with postdecrement and gcc 3.3 at -O3:
.L6:
addl %edx, %eax
decl %edx
cmpl $-1, %edx
jne .L6
movl %ebp, %esp
popl %ebp
ret
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.6 (Debian 1:3.3.6-7)"
> Aehm, wait. Did you use '--i' or 'i--'? You need the latter (both to be
> correct and to achieve the savings)
i-- which is what you originally suggested and what I said I had used.
> I tend not to do micro optimizations myself as well - unless I think I
> know what am doing.
Good luck.
Regards,
Ryan Mansfield