On Fri, 4 Apr 2025 at 12:37, Yash Shinde <yash.shi...@windriver.com> wrote: > > > On 29-03-2025 03:50, Jason Merrill wrote: > > CAUTION: This email comes from a non Wind River email account! > > Do not click links or open attachments unless you recognize the sender > > and know the content is safe. > > > > On 3/28/25 3:54 AM, yash.shi...@windriver.com wrote: > >> From: Jeremy Bettis <jbet...@google.com> > >> > >> This patch addresses an issue in the C preprocessor where incorrect > >> line number information is generated when processing files with a > >> large number of lines. The problem arises from improper handling > >> of location intervals in the line map, particularly when locations > >> exceed LINE_MAP_MAX_LOCATION_WITH_PACKED_RANGES. > >> > >> By ensuring that the highest location is not decremented if it > >> would move to a different ordinary map, this fix resolves > >> the line number discrepancies observed in certain test cases. > >> This change improves the accuracy of line number reporting, benefiting > >> users relying on precise code coverage and debugging information. > > > > Pushed, thanks. > > > Thanks for pushing the fix. > I believe this fix will be included in GCC-15 release. > Could you kindly confirm?
Yes, gcc-15 will branch from current master, so everything in master automatically goes into gcc-15. > > (PS: I have submitted a PR to backport the fix in gcc-14 release branch. > https://gcc.gnu.org/pipermail/gcc-patches/2025-April/680142.html) > > Regards, > Yash. > >> libcpp/ChangeLog: > >> > >> PR preprocessor/108900 > >> * files.cc (_cpp_stack_file): Do not decrement highest_location > >> across distinct maps. > >> > >> Signed-off-by: Jeremy Bettis <jbet...@google.com> > >> Signed-off-by: Yash Shinde <yash.shi...@windriver.com> > >> --- > >> libcpp/files.cc | 9 +++++++++ > >> 1 file changed, 9 insertions(+) > >> > >> diff --git a/libcpp/files.cc b/libcpp/files.cc > >> index 1ed19c5555a..c1abde6639f 100644 > >> --- a/libcpp/files.cc > >> +++ b/libcpp/files.cc > >> @@ -1046,6 +1046,15 @@ _cpp_stack_file (cpp_reader *pfile, _cpp_file > >> *file, include_type type, > >> && type < IT_DIRECTIVE_HWM > >> && (pfile->line_table->highest_location > >> != LINE_MAP_MAX_LOCATION - 1)); > >> + > >> + if (decrement && LINEMAPS_ORDINARY_USED (pfile->line_table)) > >> + { > >> + const line_map_ordinary *map > >> + = LINEMAPS_LAST_ORDINARY_MAP (pfile->line_table); > >> + if (map && map->start_location == > >> pfile->line_table->highest_location) > >> + decrement = false; > >> + } > >> + > >> if (decrement) > >> pfile->line_table->highest_location--; > >> > > >