extend.texi (Deprecated Features): New node.

* extend.texi (Deprecated Features): New node.
	* invoke.texi (-Wdeprecated): Document.
	* cp/lang-options.h (-Wdeprecated): New flag.
	* cp/decl2.c (warn_deprecated): New flag.
	(lang_decode_option): Deprecated this-is-variable,
	external-templates, alt-external-templates.
	Support -Wdeprecated.
	* cp/errfn.c (cp_deprecated): New function.

From-SVN: r26438
This commit is contained in:
Martin v. Löwis 1999-04-14 05:34:55 +00:00 committed by Martin v. Löwis
parent 853c37e365
commit 2de45c0679
8 changed files with 84 additions and 2 deletions

View File

@ -1,3 +1,8 @@
Wed Apr 14 13:59:27 1999 Martin von Loewis <loewis@informatik.hu-berlin.de>
* extend.texi (Deprecated Features): New node.
* invoke.texi (-Wdeprecated): Document.
Wed Apr 14 00:18:22 1999 Jan Hubicka <hubicka@freesoft.cz>
* i386.md (SImode logical compare): Avoid outputing non-pariable testw

View File

@ -1,3 +1,12 @@
1999-04-13 Martin von Loewis <loewis@informatik.hu-berlin.de>
* lang-options.h (-Wdeprecated): New flag.
* decl2.c (warn_deprecated): New flag.
(lang_decode_option): Deprecated this-is-variable,
external-templates, alt-external-templates.
Support -Wdeprecated.
* errfn.c (cp_deprecated): New function.
1999-04-13 Jason Merrill <jason@yorick.cygnus.com>
* decl2.c (setup_initp): Compare DECL_ASSEMBLER_NAME instead

View File

@ -2959,6 +2959,7 @@ extern void cp_pedwarn PVPROTO((const char *, ...));
extern void cp_pedwarn_at PVPROTO((const char *, ...));
extern void cp_compiler_error PVPROTO((const char *, ...));
extern void cp_sprintf PVPROTO((const char *, ...));
extern void cp_deprecated PROTO((const char*));
/* in error.c */
extern void init_error PROTO((void));

View File

@ -315,6 +315,10 @@ int warn_multichar = 1;
int warn_nontemplate_friend = 1;
/* Nonzero means complain about deprecated features. */
int warn_deprecated = 1;
/* Nonzero means `$' can be in an identifier. */
#ifndef DOLLARS_IN_IDENTIFIERS
@ -566,6 +570,7 @@ lang_decode_option (argc, argv)
flag_external_templates = 1;
flag_alt_external_templates = 1;
found = 1;
cp_deprecated ("-falt-external-templates");
}
else if (! strcmp (p, "no-alt-external-templates"))
{
@ -589,6 +594,18 @@ lang_decode_option (argc, argv)
flag_guiding_decls = 0;
found = 1;
}
else if (!strcmp (p, "this-is-variable"))
{
flag_this_is_variable = 1;
found = 1;
cp_deprecated ("-fthis-is-variable");
}
else if (!strcmp (p, "external-templates"))
{
flag_external_templates = 1;
found = 1;
cp_deprecated ("-fexternal-templates");
}
else if (!strcmp (p, "new-abi"))
{
flag_new_abi = 1;
@ -698,6 +715,8 @@ lang_decode_option (argc, argv)
warn_unknown_pragmas = setting * 2;
else if (!strcmp (p, "non-template-friend"))
warn_nontemplate_friend = setting;
else if (!strcmp (p, "deprecated"))
warn_deprecated = setting;
else if (!strcmp (p, "comment"))
; /* cpp handles this one. */
else if (!strcmp (p, "comments"))

View File

@ -265,6 +265,17 @@ cp_compiler_error VPROTO((const char *format, ...))
va_end (ap);
}
void
cp_deprecated (msg)
const char *msg;
{
extern int warn_deprecated;
if (!warn_deprecated)
return;
cp_warning ("%s is deprecated.", msg);
cp_warning ("Please see the documentation for details.");
}
void
cp_sprintf VPROTO((const char *format, ...))
{

View File

@ -130,4 +130,5 @@ DEFINE_LANG_NAME ("C++")
{ "-Wno-old-style-cast", "" },
{ "-Wnon-template-friend", "" },
{ "-Wno-non-template-friend", "Don't warn when non-templatized friend functions are declared within a template" },
{ "-Wdeprecated", "" },
{ "-Wno-deprecated", "Don't announce deprecation of compiler features" },

View File

@ -65,6 +65,7 @@ C++ Language}, for extensions that apply @emph{only} to C++.
function.
* Return Address:: Getting the return or frame address of a function.
* Other Builtins:: Other built-in functions.
* Deprecated Features:: Things might disappear from g++.
@end menu
@end ifset
@ifclear INTERNALS
@ -112,6 +113,7 @@ C++ Language}, for extensions that apply @emph{only} to C++.
* Function Names:: Printable strings which are the name of the current
function.
* Return Address:: Getting the return or frame address of a function.
* Deprecated Features:: Things might disappear from g++.
@end menu
@end ifclear
@ -3090,6 +3092,36 @@ or constructor expression (@pxref{Constructors}) and will not return 1
when you pass a constant numeric value to the inline function unless you
specify the @samp{-O} option.
@node Deprecated Features
@section Deprecated Features
In the past, the GNU C++ compiler was extended to experiment with new
features, at a time when the C++ language was still evolving. Now that
the C++ standard is complete, some of those features are superceded by
superior alternatives. Using the old features might cause a warning in
some cases that the feature will be dropped in the future. In other
cases, the feature might be gone already.
While the list below is not exhaustive, it documents some of the options
that are now deprecated:
@table @code
@item -fthis-is-variable
In early versions of C++, assignment to this could be used to implement
application-defined memory allocation. Now, allocation functions
(@samp{operator new}) are the standard-conforming way to achieve the
same effect.
@item -fexternal-templates
@itemx -falt-external-templates
These are two of the many ways for g++ to implement template
instantiation. @xref{Template Instantiation}. The C++ standard clearly
defines how template definitions have to be organized across
implementation units. g++ has an implicit instantiation mechanism that
should work just fine for standard-conforming code.
@end table
@node C++ Extensions
@chapter Extensions to the C++ Language
@cindex extensions, C++ language

View File

@ -109,7 +109,8 @@ in the following sections.
-fno-implement-inlines -fname-mangling-version-@var{n} -fno-default-inline
-foperator-names -fno-optional-diags -frepo -fstrict-prototype
-fsquangle -ftemplate-depth-@var{n} -fthis-is-variable -fvtable-thunks
-nostdinc++ -Wctor-dtor-privacy -Weffc++ -Wno-non-template-friend
-nostdinc++ -Wctor-dtor-privacy -Wno-deprecated -Weffc++
-Wno-non-template-friend
-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual
-Wno-pmf-conversions -Wreorder -Wsign-promo -Wsynth
@end smallexample
@ -1218,6 +1219,9 @@ Warn about violations of various style guidelines from Scott Meyers'
that the standard library headers do not obey all of these guidelines;
you can use @samp{grep -v} to filter out those warnings.
@item -Wno-deprecated (C++ only)
Do not warn about usage of deprecated features. @xref{Deprecated Features}.
@item -Wno-non-template-friend (C++ only)
Disable warnings when non-templatized friend functions are declared
within a template. With the advent of explicit template specification