https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96063

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |msebor at gcc dot 
gnu.org
             Status|REOPENED                    |ASSIGNED

--- Comment #9 from Martin Sebor <msebor at gcc dot gnu.org> ---
The warning routine checks the warning state and returns without doing anything
when it's set:

  if (!warn_mismatched_tags)
    return;

It then calls warning_at() assuming the calls necessarily succeed, and doesn't
check their return value before calling inform().  That only works for global
settings of the warnings but not for local overrides via #pragmas.  Let me fix
it.  Longer term, we need a functional API to query whether warnings are
enabled, one that takes their context into consideration.  Checking the global
variable is almost never right.

Reply via email to