summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-10 10:54:25 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-10 10:54:25 +0000
commitba03a9086d20fab11badea65d734205119b4a762 (patch)
treeed2baafd2f1b72a27341679804ac68b6b935c411
parent597ff315647cb37da623e03e63865491ef96990d (diff)
downloadgcc-ba03a9086d20fab11badea65d734205119b4a762.tar.gz
* toplev.c (warn_deprecated_use): Correct logic for saying "type"
in diagnostic. Don't dereference NULL TYPE_NAME. testsuite: * gcc.dg/deprecated-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87289 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/deprecated-2.c7
-rw-r--r--gcc/toplev.c17
4 files changed, 26 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 72d1e46fbaf..74815048c0c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * toplev.c (warn_deprecated_use): Correct logic for saying "type"
+ in diagnostic. Don't dereference NULL TYPE_NAME.
+
2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
* c-common.c, c-pch.c, defaults.h, lambda-code.c, passes.c,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1dbc50a01d5..c33d260b5b3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-09-10 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * gcc.dg/deprecated-2.c: New test.
+
2004-09-09 James E Wilson <wilson@specifixinc.com>
* gcc.dg/init-vec-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/deprecated-2.c b/gcc/testsuite/gcc.dg/deprecated-2.c
new file mode 100644
index 00000000000..c4ca8a272d0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/deprecated-2.c
@@ -0,0 +1,7 @@
+/* Test __attribute__((deprecated)). Test types without names. */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+struct { int a; } __attribute__((deprecated)) x; /* { dg-warning "type is deprecated" } */
+typeof(x) y; /* { dg-warning "type is deprecated" } */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index c3cae64b296..79094e2e039 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -900,11 +900,14 @@ warn_deprecated_use (tree node)
const 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 (TYPE_NAME (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 (decl)
{
@@ -920,9 +923,9 @@ warn_deprecated_use (tree node)
else
{
if (what)
- warning ("type is deprecated");
- else
warning ("`%s' is deprecated", what);
+ else
+ warning ("type is deprecated");
}
}
}