summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-06 00:07:50 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-06 00:07:50 +0000
commit567123633cde83d84b94e0051ac8668c03a33104 (patch)
treea6ebd61fe15b0d819dbd87fef8138e1bb10989e0 /gcc
parent70c912cff7f00414cad5c3dee2ab969f7f4acf08 (diff)
downloadgcc-567123633cde83d84b94e0051ac8668c03a33104.tar.gz
PR c/44772
* c-decl.c (warn_cxx_compat_finish_struct): Don't call pointer_set_contains if DECL_NAME is NULL. * gcc.dg/Wcxx-compat-21.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166384 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-decl.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/Wcxx-compat-21.c25
4 files changed, 38 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 34b3601e938..1e55c844042 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/44772
+ * c-decl.c (warn_cxx_compat_finish_struct): Don't call
+ pointer_set_contains if DECL_NAME is NULL.
+
2010-11-05 Ian Lance Taylor <iant@google.com>
PR target/46084
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index bb7cf64553b..7d27dfe8f0f 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -6877,7 +6877,8 @@ warn_cxx_compat_finish_struct (tree fieldlist)
for (x = fieldlist; x != NULL_TREE; x = DECL_CHAIN (x))
{
- if (pointer_set_contains (tset, DECL_NAME (x)))
+ if (DECL_NAME (x) != NULL_TREE
+ && pointer_set_contains (tset, DECL_NAME (x)))
{
warning_at (DECL_SOURCE_LOCATION (x), OPT_Wc___compat,
("using %qD as both field and typedef name is "
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b2642c1dfc0..0cc58bf84af 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/44772
+ * gcc.dg/Wcxx-compat-21.c: New test.
+
2010-11-05 Ian Lance Taylor <iant@google.com>
PR target/46084
diff --git a/gcc/testsuite/gcc.dg/Wcxx-compat-21.c b/gcc/testsuite/gcc.dg/Wcxx-compat-21.c
new file mode 100644
index 00000000000..183f0f17980
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wcxx-compat-21.c
@@ -0,0 +1,25 @@
+/* PR c/44772 */
+/* { dg-do compile } */
+/* { dg-options "-Wc++-compat" } */
+
+typedef enum { E1, E2 } E;
+
+typedef struct
+{
+ E e;
+ union
+ {
+ int i;
+ char *c;
+ }; /* { dg-bogus "as both field and typedef name" } */
+} S;
+
+S s;
+
+typedef int T;
+
+struct U
+{
+ T t;
+ union { int i; }; /* { dg-bogus "as both field and typedef name" } */
+};