aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin v. Löwis <loewis@informatik.hu-berlin.de>1999-04-14 05:34:55 +0000
committerMartin v. Löwis <loewis@gcc.gnu.org>1999-04-14 05:34:55 +0000
commit2de45c0679fc608353e9267941477769b3b18ecd (patch)
treee1d858eaef48804c0e8d8e939fbfdb6f3a5e58bd /gcc
parent853c37e365f729d9ece936f0432138cbf1abdeb5 (diff)
downloadgcc-2de45c0679fc608353e9267941477769b3b18ecd.zip
gcc-2de45c0679fc608353e9267941477769b3b18ecd.tar.gz
gcc-2de45c0679fc608353e9267941477769b3b18ecd.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/cp-tree.h1
-rw-r--r--gcc/cp/decl2.c19
-rw-r--r--gcc/cp/errfn.c11
-rw-r--r--gcc/cp/lang-options.h3
-rw-r--r--gcc/extend.texi32
-rw-r--r--gcc/invoke.texi6
8 files changed, 84 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aa61163..55c15dd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b320d5d..2f00fdd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 240e2b0..acb94d5 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -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));
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 4ea3035..8f0375b 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -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"))
diff --git a/gcc/cp/errfn.c b/gcc/cp/errfn.c
index 58a46af..b5d3eec 100644
--- a/gcc/cp/errfn.c
+++ b/gcc/cp/errfn.c
@@ -266,6 +266,17 @@ cp_compiler_error VPROTO((const char *format, ...))
}
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, ...))
{
#ifndef ANSI_PROTOTYPES
diff --git a/gcc/cp/lang-options.h b/gcc/cp/lang-options.h
index f9cfa8c..cfc6456 100644
--- a/gcc/cp/lang-options.h
+++ b/gcc/cp/lang-options.h
@@ -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" },
diff --git a/gcc/extend.texi b/gcc/extend.texi
index 7b6a6bf..f969f65 100644
--- a/gcc/extend.texi
+++ b/gcc/extend.texi
@@ -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
diff --git a/gcc/invoke.texi b/gcc/invoke.texi
index cd07697..a8eb923 100644
--- a/gcc/invoke.texi
+++ b/gcc/invoke.texi
@@ -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