https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99446
--- Comment #9 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- The last token is a CPP_PRAGMA_EOL, and has a line number 2, while the include file has only one line, so it is similar to an EOL position. I guess therefore this fails to add a column? 1002 location_t r = 1003 linemap_position_for_line_and_column (set, map, line, column); 1004 if (linemap_assert_fails (r <= set->highest_location) 1005 || linemap_assert_fails (map == linemap_lookup (set, r))) 1006 return loc; (gdb) p tok[0] $30 = {type = CPP_EOF, keyword = RID_MAX, flags = 64 '@', implicit_extern_c = false, error_reported = false, purged_p = false, tree_check_p = false, main_source_p = true, location = 255712, u = {tree_check_value = 0x0, value = 0x0}} (gdb) p tok[-1] $31 = {type = CPP_PRAGMA_EOL, keyword = RID_MAX, flags = 0 '\000', implicit_extern_c = false, error_reported = false, purged_p = false, tree_check_p = false, main_source_p = false, location = 251552, u = {tree_check_value = 0x0, value = 0x0}} location_t r = 1003 linemap_position_for_line_and_column (set, map, line, column); (gdb) p r $68 = 252480 (gdb) p *map $70 = {<line_map> = {start_location = 251584}, reason = LC_LEAVE, sysp = 0 '\000', m_column_and_range_bits = 12, m_range_bits = 5, to_file = 0x2ac9800 "pr99446-1.h", to_line = 2, included_from = 238400} (gdb) p *result $74 = {<line_map> = {start_location = 251616}, reason = LC_LEAVE, sysp = 0 '\000', m_column_and_range_bits = 12, m_range_bits = 5, to_file = 0x2b0a2d0 "pr99446.c", to_line = 2, included_from = 0} but line 2 does not exist in both files.