aboutsummaryrefslogtreecommitdiff
path: root/gcc/diagnostic.c
diff options
context:
space:
mode:
authorIra Ruben <ira@gcc.gnu.org>2002-01-10 18:51:24 +0000
committerIra Ruben <ira@gcc.gnu.org>2002-01-10 18:51:24 +0000
commite23bd2185fae41772d012231e005b789b3a9e6dc (patch)
treeea5ad261c8b70074c9c7c1c74de2f56e14b206cd /gcc/diagnostic.c
parent47073a382432479b397a1654da5a24354e3f368a (diff)
downloadgcc-e23bd2185fae41772d012231e005b789b3a9e6dc.zip
gcc-e23bd2185fae41772d012231e005b789b3a9e6dc.tar.gz
gcc-e23bd2185fae41772d012231e005b789b3a9e6dc.tar.bz2
Added __attribute__((deprecated)) patches.
From-SVN: r48743
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r--gcc/diagnostic.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index d566401..ac3539b 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -1520,3 +1520,44 @@ default_diagnostic_finalizer (buffer, dc)
{
output_destroy_prefix (buffer);
}
+
+void
+warn_deprecated_use (node)
+ tree node;
+{
+ if (node && warn_deprecated_decl)
+ if (DECL_P (node))
+ {
+ warning ("`%s' is deprecated (declared at %s:%d)",
+ IDENTIFIER_POINTER (DECL_NAME (node)),
+ DECL_SOURCE_FILE (node), DECL_SOURCE_LINE (node));
+ }
+ else if (TYPE_P (node))
+ {
+ char *what = NULL;
+ tree decl = TYPE_STUB_DECL (node);
+
+ if (TREE_CODE (TYPE_NAME (node)) == IDENTIFIER_NODE)
+ what = IDENTIFIER_POINTER (TYPE_NAME (node));
+ else if (TREE_CODE (TYPE_NAME (node)) == TYPE_DECL
+ && DECL_NAME (TYPE_NAME (node)))
+ what = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (node)));
+
+ if (what)
+ {
+ if (decl)
+ warning ("`%s' is deprecated (declared at %s:%d)", what,
+ DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ else
+ warning ("`%s' is deprecated", what);
+ }
+ else
+ {
+ if (decl)
+ warning ("type is deprecated (declared at %s:%d)",
+ DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl));
+ else
+ warning ("type is deprecated");
+ }
+ }
+}