diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-06 00:07:50 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-06 00:07:50 +0000 |
commit | 567123633cde83d84b94e0051ac8668c03a33104 (patch) | |
tree | a6ebd61fe15b0d819dbd87fef8138e1bb10989e0 /gcc | |
parent | 70c912cff7f00414cad5c3dee2ab969f7f4acf08 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wcxx-compat-21.c | 25 |
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" } */ +}; |