Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2001 12:54:13 -0700
From:      Peter Wemm <peter@wemm.org>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        "Brian F. Feldman" <green@FreeBSD.org>, Mark Murray <mark@grondar.za>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/kern subr_prf.c src/sys/sys systm.h 
Message-ID:  <20010911195414.7D4D5380A@overcee.netplex.com.au>
In-Reply-To: <20010912002041.J5036-100000@delplex.bde.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans wrote:
> On Mon, 10 Sep 2001, Brian F. Feldman wrote:
> 
> > Mark Murray <mark@grondar.za> wrote:
> > > >   This hack brought to you by some questionable ``optimizations'' in gc
    c-3.
> > > >   gcc-3 takes it apon itself to convert:
> > > >     printf("string\n")  ->  puts("string");
> > > >   and:
> > > >     printf("a");  ->  putchar('a')
> > > >   etc.  I dont know what they've been smoking over there in gcc-land, b
    ut
> > > >   it must be pretty good stuff.
> > >
> > > This "optimzation" on the part of GCC is extremely rude, IMVHO. Is there
> > > a way (#define ?) of permanently disabling it?
> > >
> > > C is not FORTRAN - there are no intrinsic functions in C. Grrrrr.....
> >
> > Agreed.  Peter's original comment was absolutely justified.  The _ONLY_ cas
    e
> > I can see this possibly being even moderately alright is if it is somehow
> > done in a way that makes it act like a macro definition and can be
> > #undefined or (called)() in one of the standard ways.
> 
> Disagreed.  This seems like a normal optimization to me.  It's like
> replacing strlen("foo") by 3.

This is bogus too.  Who says that strlen("foo") returns three in the library
I am linking with?  

These optimizations should only be activated if #include <string.h>
or #include <stdio.h> and there is some sort of attribute marker on
the functions being optimized.

Unless I #include <string.h>, then strlen() is not any of the compiler's
business.  Unless I #include <stdio.h>, then printf() is not any of the
compiler's business.  Otherwise any under-the-table substitutions are
bogus.  These functions are not part of the core language spec, they are
something that is introduced as part of the optional includes and standard
c library.

> Bruce
> 
> 
> 

Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010911195414.7D4D5380A>