[Patch, Fortran] PR 92793 - fix column used for error diagnostic

Tobias Burnus tobias@codesourcery.com
Fri Oct 30 11:16:05 GMT 2020


Hi Thomas,

On 30.10.20 11:47, Thomas Schwinge wrote:
>>> Fixed by introducing a new function; now one only needs to make sure
>>> that no new code will re-introduce "lb->location":-)
> ... another*existing instance*  of this problem.
...
>   gfc_set_backend_locus (locus * loc)
>   {
>     gfc_current_backend_file = loc->lb->file;
> -  input_location = loc->lb->location;
> +  input_location = gfc_get_location (loc);
>   }

In bare usage, it seems to be fine – which are 23 callers.

However, there is additionally:

gfc_save_backend_locus (locus * loc)
{
   loc->lb = XCNEW (gfc_linebuf);
   loc->lb->location = input_location;
   loc->lb->file = gfc_current_backend_file;
}

which is used together with:

gfc_restore_backend_locus (locus * loc)
{
   gfc_set_backend_locus (loc);
   free (loc->lb);
}

I think the latter needs to be replaced by the previous
version of "gfc_save_backend_locus" for two related reasons:

* gfc_save_backend_locus operates with incomplete data,
   i.e. loc->nextc (used by gfc_get_location) might not
   be set.
* input_location might/should already contain the column
   offset – and you do not want to add some random offset
   to it.

Hence: LGTM – if you update 'gfc_restore_backend_locus'
by inlining the previous version of 'gfc_set_backend_locus'.

Thanks,

Tobias

-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter


More information about the Gcc-patches mailing list