[Bug c/56824] pragma GCC diagnostic push/pop regression for GCC diagnostic ignored "-Waggregate-return"

manu at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Apr 10 18:32:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56824

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-04-10
                 CC|                            |manu at gcc dot gnu.org
     Ever Confirmed|0                           |1

--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2013-04-10 18:32:00 UTC ---
I think the problem is the continue, which moves to the next i--:

Index: diagnostic.c
===================================================================
--- diagnostic.c        (revision 197394)
+++ diagnostic.c        (working copy)
@@ -664,13 +685,13 @@ diagnostic_report_diagnostic (diagnostic
        return false;

       /* This tests for #pragma diagnostic changes.  */
       if (context->n_classification_history > 0)
        {
-         int i;
+         int i = context->n_classification_history - 1;
          /* FIXME: Stupid search.  Optimize later. */
-         for (i = context->n_classification_history - 1; i >= 0; i --)
+         while (i >= 0)
            {
              if (linemap_location_before_p
                  (line_table,
                   context->classification_history[i].location,
                   location))
@@ -686,10 +707,11 @@ diagnostic_report_diagnostic (diagnostic
                      if (diag_class != DK_UNSPECIFIED)
                        diagnostic->kind = diag_class;
                      break;
                    }
                }
+              i--;
            }
        }
       /* This tests if the user provided the appropriate -Werror=foo
         option.  */
       if (diag_class == DK_UNSPECIFIED

but someone would need to test the patch.

But it is a bug.


More information about the Gcc-bugs mailing list