cvs commit: src/usr.bin/chat Makefile
Bruce Evans
bde at zeta.org.au
Tue Oct 28 21:11:35 PST 2003
On Tue, 28 Oct 2003, Peter Wemm wrote:
> Tim Kientzle wrote:
> > > On Sat, 25 Oct 2003, Peter Wemm wrote:
> > >>peter 2003/10/25 21:49:58 PDT
> > >>
> > >> FreeBSD src repository
> > >>
> > >> Modified files:
> > >> usr.bin/chat Makefile
> > >> Log:
> > >> The math function logf() probably isn't doing us much good for logging
> > >> stuff. Add -fno-builtin-logf.
> >
> > Rather than commit ugly Makefile hacks like
> > this, just rename the damned function and
> > be done with it.
>
> Be my guest. Be sure to get your changes are sent back to the vendor, or
> that the vendor has fixed it already.
This is not what you asked for, but here is a quick fix for the main bugs
in -Wshadow. It has not been sent to the vendor or built the world. It
doesn't affect chat unless chat is compiled with a C90 compiler (so that
<math.h> doesn't declare logf()), since chat bogusly declares logf() as
global.
%%%
Index: c-decl.c
===================================================================
RCS file: /home/ncvs/src/contrib/gcc/c-decl.c,v
retrieving revision 1.9
diff -u -2 -r1.9 c-decl.c
--- c-decl.c 22 Aug 2003 03:14:37 -0000 1.9
+++ c-decl.c 29 Oct 2003 04:57:16 -0000
@@ -977,5 +977,7 @@
built-in definition is overridden,
but optionally warn this was a bad choice of name. */
- if (warn_shadow)
+ /* XXX Actually only warn if the built-in is declared somewhere
+ other than in the compiler. */
+ if (warn_shadow && DECL_SOURCE_LINE (olddecl) != 0)
warning_with_decl (newdecl, "shadowing built-in function `%s'");
/* Discard the old built-in function. */
@@ -1647,5 +1649,8 @@
}
else if (IDENTIFIER_GLOBAL_VALUE (name) != 0
- && IDENTIFIER_GLOBAL_VALUE (name) != error_mark_node)
+ && IDENTIFIER_GLOBAL_VALUE (name) != error_mark_node
+ /* XXX No shadow warnings for shadowing built-ins that are
+ not declared somewhere other than in the compiler. */
+ && DECL_SOURCE_LINE (IDENTIFIER_GLOBAL_VALUE (name)) != 0)
shadow_warning ("a global declaration", name,
IDENTIFIER_GLOBAL_VALUE (name));
%%%
Test program:
%%%
#ifdef DECLARE_MATH_FUNCTIONS
#include <math.h>
#endif
/* This shouldn't shadow log() unless math.h is included. */
static int
log(double x)
{
return (x);
}
int
main(void)
{
/* This shouldn't shadow logf() unless math.h is included. */
int logf;
logf = 1;
return (logf);
}
%%%
Bruce
More information about the cvs-src
mailing list