Hi,

On Tue, Jul 26, 2005 at 11:08:12PM -0400, Michael Carlson wrote:
> I agree, the compiler should realise the parameters aren't used as an
> l-value in the function anywhere - but it apparently doesn't, or
> marking the parameters const is having some other effect on the binary
> - with gcc 4.0.1 (at least on my system, Debian sid), the compiled
> size of winex11.drv.so changes with my patch (it increases by 368
> bytes from 5335409 -> 5335777). Just changing the parameters to const
> for the function in question (and none of the other functions in the
> file) increases the size from the original size by 64 bytes.
> 
> I won't pretend to know why my patch increases the size of the binary,
> but it shows that even without looking at the assembly code, this
> patch is making some kind of difference (whether good or bad) in the
> compiled code. I would look further into it, but I don't know
> assembly.
You probably need to strip the binary or omit gcc -g in order to obtain
meaningful numbers, since otherwise it probably encodes the additional
const in debug information tables, too, which thus increases the size
of the binary.

> Anyway, I'm the amateur wine-hacker here, so if you guys still say we
> shouldn't change it, I won't argue the matter further. I just want to
> point out that this patch is certainly doing SOMETHING to the
> resulting binary, and it's possibly good.
While I'm not too convinced in this case (1.5% improvement sounds like
within statistic noise), it should be a good idea to mark things in Wine
const whenever possible (objdump -x helps here), since it improves reliability
(erroneous random memory area writes will crash in const areas)
and performance (hints for the compiler in some non-optimized compiler cases,
page discarding instead of swapping).

Andreas Mohr

-- 
GNU/Linux. It's not the software thats free, it's you.

Reply via email to