GCC Wikia




38 /* Physical source file TO_FILE at line TO_LINE at column 0 is represented
39    by the logical START_LOCATION.  TO_LINE+L at column C is represented by
40    START_LOCATION+(L*(1<<column_bits))+C, as long as C<(1<<column_bits),
41    and the result_location is less than the next line_map's start_location.
42    (The top line is line 1 and the leftmost column is column 1; line/column 0
43    means "entire file/line" or "unknown line/column" or "not applicable".)
44    INCLUDED_FROM is an index into the set that gives the line mapping
45    at whose end the current one was included.  File(s) at the bottom
46    of the include stack have this set to -1.  REASON is the reason for
47    creation of this line map, SYSP is one for a system header, two for
48    a C system header file that therefore needs to be extern "C"
49    protected in C++, and zero otherwise.  */
50 struct line_map
51 {
52   const char *to_file;
53   unsigned int to_line;
54   source_location start_location;
55   int included_from;

56   ENUM_BITFIELD (lc_reason) reason : CHAR_BIT;
57   /* The sysp field isn't really needed now that it's in cpp_buffer.  */
58   unsigned char sysp;
59   /* Number of the low-order source_location bits used for a column number.  */
60   unsigned int column_bits : 8;
61 };