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