This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
In some situations, we would like to point to a location which was not encoded when tokenizing. This happens, for example, in two prominent cases: 1) To get precise locations within strings (https://gcc.gnu.org/PR52952) for example, for Wformat warnings. 2) In the Fortran FE, which gives quite precise location information by tracking the characters that it wants to warn about instead of relying on the line-map machinery. The most straightforward way to implement this is by adding variants of diagnostic functions that take an explicit "offset" argument and pass this offset through the whole diagnostics machinery. This is what I implemented in the patch format_offset.diff attached. The downside is that we would need to add even more variants (with/without offset) of various diagnostic functions and track the offset/no-offset cases explicitly. The nicer/cleaner alternative is to somehow (re)compute a single location value from a given location plus the new offset. This is what I implemented in patch fortran-diagnostics-part3.diff in linemap_redo_position_for_column(). As far as I understand, this method only works reliably if the location+offset does not jump to a different line map, that is, if to_column < (1u << map->d.ordinary.column_bits). Otherwise, we may need to recompute all successive line-maps to accommodate the new location. The best way to do the latter (or to work-around that issue) is not clear to me at the moment. Thus, I am putting forward these two alternative implementations and seeking comments/advice/help in deciding what would be the best way to fix this key missing piece of GCC diagnostics. Related to this, perhaps I should make a more general call for help. Despite the heroic, constant torrent of diagnostic fixes by Paolo, Marek and others, I have not seen much progress on the key infrastructure issues in the roadmap (https://gcc.gnu.org/wiki/Better_Diagnostics). We have had at least one major item per release since GCC 4.5, but I don't see any particular item being tackled for GCC 5.0. Are you planning to tackle any of them? I have a simple patch to implement Fix-it hints but it needs more work. Unfortunately, I have very little free time to dedicate to GCC nowadays, so I'm afraid I might not even be able to finish this in time. Any item in that list would be a nice major feature for GCC 5.0. Perhaps we need to ask for help in gcc/gcc-help or some other forum. Cheers, Manuel.
Attachment:
format-offset.diff
Description: Text document
Attachment:
fortran-diagnostics-part3.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |