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            =   [EMAIL PROTECTED]
Senior Systems Programmer           or  [EMAIL PROTECTED]
Rensselaer Polytechnic Institute    or  [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to