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:
parent
853c37e365
commit
2de45c0679
@ -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
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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"))
|
||||
|
@ -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, ...))
|
||||
{
|
||||
|
@ -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" },
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user