Adventures with gcc: code vs object-code size
Garance A Drosihn
drosih at rpi.edu
Sun Mar 21 14:40:00 PST 2004
At 10:22 AM -1000 3/21/04, Clifton Royston wrote:
> > Date: Sat, 20 Mar 2004 From: Garance A Drosihn
> >
> > So, by adding one call to strcmp() to check for a ":" string, I
> > end up with /bin/ps (the stripped-object-file) which has grown
> > by 12.6% !! This is for a program which is almost 2500 lines
> > spread out over 5 '.c'-files. How is that possible? What am
> > I missing here?
>
> If it happens that strcmp was not previously being referenced
>at all, absent this one line, then of course this change will
>pull in the strcmp routine. Now while strcmp itself is not ...
I forgot to include a significant part of this puzzle. The same
ps.c file already had two calls to strcmp() in it:
ps.c: if (strcmp(elem, "co") == 0)
ps.c: if (strcmp(elemcopy, ":") == 0)
ps.c: if (strcmp(vent->var->name, v->name) == 0)
There was no strcmp() in the subroutine that I added it to, but
I would assume that those other references would have already
pulled in the routine.
> This may also be true even if gcc is partially inlining it.
>gcc may be pulling in a big clump of its own internal support
>routines in that case, ...
but would it inline it's own routines multiple times in the same
source file?
>Again, differencing the symbol table should give you some idea.
Well, I was hoping someone would have already seen this before,
but I guess I will need to do some more checking if I'm going
to get a better idea of what is going on. I'll put it on my
list of "things to look at when I have some spare time"...
--
Garance Alistair Drosehn = gad at gilead.netel.rpi.edu
Senior Systems Programmer or gad at freebsd.org
Rensselaer Polytechnic Institute or drosih at rpi.edu
More information about the freebsd-hackers
mailing list