Adventures with gcc: code vs object-code size
cliftonr at lava.net
Sun Mar 21 20:00:32 PST 2004
On Sun, Mar 21, 2004 at 05:39:58PM -0500, Garance A Drosihn wrote:
> 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.
Ah, totally different story then. OK, I'm baffled too.
> > 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?
No, it definitely shouldn't.
Clifton Royston -- cliftonr at tikitechnologies.com
Tiki Technologies Lead Programmer/Software Architect
Did you ever fly a kite in bed? Did you ever walk with ten cats on your head?
Did you ever milk this kind of cow? Well we can do it. We know how.
If you never did, you should. These things are fun, and fun is good.
-- Dr. Seuss
More information about the freebsd-hackers