]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
class.c (note_name_declared_in_class): Make in 'extern "C"' blocks...
authorKai Tietz <kai.tietz@onevision.com>
Tue, 17 Aug 2010 09:52:30 +0000 (09:52 +0000)
committerKai Tietz <ktietz@gcc.gnu.org>
Tue, 17 Aug 2010 09:52:30 +0000 (11:52 +0200)
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

gcc/cp/ChangeLog
gcc/cp/class.c

index c202af4d4ccc33a09eff1b39741a457403b20d71..b37326619153daaa4f94a26dab1947e0d83abd5d 100644 (file)
@@ -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
index 73bcb7598ee0ed92a1a0a127640735c1c35eb539..c00b7de794c4688f537d6f505845ca08dbd19f59 100644 (file)
@@ -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)
     {