diff options
author | Ira Ruben <ira@gcc.gnu.org> | 2002-01-10 18:51:24 +0000 |
---|---|---|
committer | Ira Ruben <ira@gcc.gnu.org> | 2002-01-10 18:51:24 +0000 |
commit | e23bd2185fae41772d012231e005b789b3a9e6dc (patch) | |
tree | ea5ad261c8b70074c9c7c1c74de2f56e14b206cd /gcc/diagnostic.c | |
parent | 47073a382432479b397a1654da5a24354e3f368a (diff) | |
download | gcc-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.c | 41 |
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"); + } + } +} |