aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2010-08-17 09:52:30 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2010-08-17 11:52:30 +0200
commit8ce1235bfa4d3737f58d356d5221c75b33463afc (patch)
tree3de242d013e7c9b5986acbcea9b7886716faa13b
parentf9abf412e2b67046bf906a70f1f19ef569aa55d1 (diff)
downloadgcc-8ce1235bfa4d3737f58d356d5221c75b33463afc.zip
gcc-8ce1235bfa4d3737f58d356d5221c75b33463afc.tar.gz
gcc-8ce1235bfa4d3737f58d356d5221c75b33463afc.tar.bz2
class.c (note_name_declared_in_class): Make in 'extern "C"' blocks...
2010-08-17 Kai Tietz <kai.tietz@onevision.com> * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks, or if -fms-extensions is enabled check, check permissive. From-SVN: r163300
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/class.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c202af4..b373266 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-17 Kai Tietz <kai.tietz@onevision.com>
+
+ * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks,
+ or if -fms-extensions is enabled check, check permissive.
+
2010-08-09 Jason Merrill <jason@redhat.com>
PR c++/45236
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 73bcb75..c00b7de 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -6807,7 +6807,13 @@ note_name_declared_in_class (tree name, tree decl)
= current_class_stack[current_class_depth - 1].names_used;
if (!names_used)
return;
-
+ /* The C language allows members to be declared with a type of the same
+ name, and the C++ standard says this diagnostic is not required. So
+ allow it in extern "C" blocks unless predantic is specified.
+ Allow it in all cases if -ms-extensions is specified. */
+ if ((!pedantic && current_lang_name == lang_name_c)
+ || flag_ms_extensions)
+ return;
n = splay_tree_lookup (names_used, (splay_tree_key) name);
if (n)
{