OSDN Git Service

(shadow_tag_warned): Let warned have three values, so that a mere
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Apr 1993 23:27:20 +0000 (23:27 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 23 Apr 1993 23:27:20 +0000 (23:27 +0000)
warning doesn't prevent a pedwarn.  Don't skip the error call at the
end on accounted of warned.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4203 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-decl.c

index 783ca55..f62e306 100644 (file)
@@ -3097,6 +3097,8 @@ void
 shadow_tag_warned (declspecs, warned)
      tree declspecs;
      int warned;
+     /* 1 => we have done a pedwarn.  2 => we have done a warning, but
+       no pedwarn.  */
 {
   int found_tag = 0;
   register tree link;
@@ -3119,7 +3121,8 @@ shadow_tag_warned (declspecs, warned)
 
          if (name == 0)
            {
-             if (!warned && code != ENUMERAL_TYPE) /* Empty unnamed enum OK */
+             if (warned != 1 && code != ENUMERAL_TYPE)
+               /* Empty unnamed enum OK */
                {
                  pedwarn ("unnamed struct/union that defines no instances");
                  warned = 1;
@@ -3139,15 +3142,18 @@ shadow_tag_warned (declspecs, warned)
       else
        {
          if (!warned)
-           pedwarn ("useless keyword or type name in empty declaration");
-         warned = 1;
+           {
+             warning ("useless keyword or type name in empty declaration");
+             warned = 2;
+           }
        }
     }
 
-  if (!warned)
+  if (found_tag > 1)
+    error ("two types specified in one empty declaration");
+
+  if (warned != 1)
     {
-      if (found_tag > 1)
-       error ("two types specified in one empty declaration");
       if (found_tag == 0)
        pedwarn ("empty declaration");
     }