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

--- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #4)
> Reverting one minor part of those changes fixes both of the PRs though:
> --- gcc/c-family/c-pragma.c.jj        2016-01-15 21:57:00.000000000 +0100
> +++ gcc/c-family/c-pragma.c   2016-01-29 18:34:51.743943283 +0100
> @@ -819,7 +819,7 @@ handle_pragma_diagnostic(cpp_reader *ARG
>      arg = option_string + 1 + cl_options[option_index].opt_len;
>    control_warning_option (option_index, (int) kind,
>                         arg, kind != DK_IGNORED,
> -                       loc, lang_mask, &handlers,
> +                       input_location, lang_mask, &handlers,
>                         &global_options, &global_options_set,
>                         global_dc);
>  }
> I have no idea why, but if it doesn't break anything else, I think it would
> be better to revert it.  The ChangeLog nor gcc-patches post doesn't mention
> that change anywhere.

Perhaps input_location points to the expansion point and loc to the spelling
point. The latter is correct when one wants to point to the error within the
pragma, however, the former should be used if one wants a pragma within a macro
to apply to the location where the macro is expanded.

What if you resolve the loc to the expansion point above?
input_location does not always point to the correct thing.

Reply via email to