Consider compiling test.c, with this content: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV #include "test.h" int main (int argc, char **argv) { int a = PLUS (1,2); int b = PLUS (3,4); return 0; } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...where test.h has this content: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV extern int foo (); #define PLUS(A, B) A + B ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The undocumented -fdump-internal-locations option outputs this information to stderr, showing what each location_t value means. Source code lines are quoted, showing both per-line location_t values and per-line&column location_t values (written vertically under the corresponding character of source code). VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV RESERVED LOCATIONS location_t interval: 0 <= loc < 2 ORDINARY MAP: 0 location_t interval: 32 <= loc < 64 file: test.c starting at line: 1 column and range bits: 12 column bits: 7 range bits: 5 reason: 0 (LC_ENTER) included from location: 0 test.c: 1|loc: 32|#include "test.h" |69269258258148147 |46802468024680246 ORDINARY MAP: 1 location_t interval: 64 <= loc < 96 file: starting at line: 0 column and range bits: 0 column bits: 0 range bits: 0 reason: 2 (LC_RENAME) included from location: 0 ORDINARY MAP: 2 location_t interval: 96 <= loc < 128 file: starting at line: 0 column and range bits: 0 column bits: 0 range bits: 0 reason: 2 (LC_RENAME) included from location: 0 ORDINARY MAP: 3 location_t interval: 128 <= loc < 250240 file: /usr/include/stdc-predef.h starting at line: 1 column and range bits: 12 column bits: 7 range bits: 5 reason: 0 (LC_ENTER) included from location: 127 (in ordinary map 2) (contents of /usr/include/stdc-predef.h snipped for brevity) ORDINARY MAP: 4 location_t interval: 250240 <= loc < 250272 file: starting at line: 32 column and range bits: 12 column bits: 7 range bits: 5 reason: 1 (LC_LEAVE) included from location: 0 ORDINARY MAP: 5 location_t interval: 250272 <= loc < 254368 file: test.c starting at line: 1 column and range bits: 12 column bits: 7 range bits: 5 reason: 2 (LC_RENAME) included from location: 0 test.c: 1|loc:250272|#include "test.h" |00000000000000000 |33344445556667778 |03603692692582581 |46802468024680246 ORDINARY MAP: 6 location_t interval: 254368 <= loc < 266720 file: test.h starting at line: 1 column and range bits: 12 column bits: 7 range bits: 5 reason: 0 (LC_ENTER) included from location: 250272 (in ordinary map 5) test.h: 1|loc:254368|extern int foo (); |444444444444444444 |444455566677788899 |036926925825814814 |024680246802468024 test.h: 2|loc:258464| | | | | test.h: 3|loc:262560|#define PLUS(A, B) A + B |222222222222233333333333 |566677788899900011122223 |925825814814704703603692 |246802468024680246802468 test.h: 4|loc:266656| | | | | ORDINARY MAP: 7 location_t interval: 266720 <= loc < 299520 file: test.c starting at line: 2 column and range bits: 12 column bits: 7 range bits: 5 reason: 1 (LC_LEAVE) included from location: 0 test.c: 2|loc:266720| | | | | test.c: 3|loc:270816|int |000 |889 |481 |802 test.c: 4|loc:274912|main (int argc, char **argv) |4455555555555555555555555555 |9900011122223334445556667778 |4704703603692692582581481470 |4680246802468024680246802468 test.c: 5|loc:279008|{ |9 |0 |4 |0 test.c: 6|loc:283104| int a = PLUS (1,2); |333333333333333333333 |112222333444555666777 |360369269258258148147 |680246802468024680246 test.c: 7|loc:287200| int b = PLUS (3,4); |777777777777777777777 |222333444555666777888 |369269258258148147047 |246802468024680246802 test.c: 8|loc:291296| return 0; |11111111111 |33344455566 |26925825814 |80246802468 test.c: 9|loc:295392|} |5 |4 |2 |4 test.c: 10|loc:299488| | | | | UNALLOCATED LOCATIONS location_t interval: 299520 <= loc < 2147483632 MACRO 3: PLUS (7 tokens) location_t interval: 2147483632 <= loc < 2147483639 test.c:7:11: note: expansion point is location 287555 7 | int b = PLUS (3,4); | ^~~~ map->start_location: 2147483632 macro_locations: 0: 287744, 263200 test.c:7:17: note: token 0 has x-location == 287744 7 | int b = PLUS (3,4); | ^ test.c:7:17: note: token 0 has y-location == 263200 1: 263264, 263264 In file included from test.c:1: test.h:3:22: note: token 1 has x-location == y-location == 263264 3 | #define PLUS(A, B) A + B | ^ 2: 287808, 263328 test.c:7:19: note: token 2 has x-location == 287808 7 | int b = PLUS (3,4); | ^ test.c:7:19: note: token 2 has y-location == 263328 3: 0, 0 cc1: note: token 3 has x-location == y-location == 0 4: 0, 0 cc1: note: token 4 has x-location == y-location == 0 5: 0, 0 cc1: note: token 5 has x-location == y-location == 0 6: 0, 0 cc1: note: token 6 has x-location == y-location == 0 MACRO 2: PLUS (7 tokens) location_t interval: 2147483639 <= loc < 2147483646 test.c:6:11: note: expansion point is location 283459 6 | int a = PLUS (1,2); | ^~~~ map->start_location: 2147483639 macro_locations: 0: 283648, 263200 test.c:6:17: note: token 0 has x-location == 283648 6 | int a = PLUS (1,2); | ^ test.c:6:17: note: token 0 has y-location == 263200 1: 263264, 263264 In file included from test.c:1: test.h:3:22: note: token 1 has x-location == y-location == 263264 3 | #define PLUS(A, B) A + B | ^ 2: 283712, 263328 test.c:6:19: note: token 2 has x-location == 283712 6 | int a = PLUS (1,2); | ^ test.c:6:19: note: token 2 has y-location == 263328 3: 0, 0 cc1: note: token 3 has x-location == y-location == 0 4: 0, 0 cc1: note: token 4 has x-location == y-location == 0 5: 0, 0 cc1: note: token 5 has x-location == y-location == 0 6: 0, 0 cc1: note: token 6 has x-location == y-location == 0 MACRO 1: __GCC_IEC_559_COMPLEX (1 tokens) location_t interval: 2147483646 <= loc < 2147483647 In file included from :31: /usr/include/stdc-predef.h:45:6: note: expansion point is location 180564 45 | # if __GCC_IEC_559_COMPLEX > 0 | ^~~~~~~~~~~~~~~~~~~~~ map->start_location: 2147483646 macro_locations: 0: 1, 1 : note: token 0 has x-location == y-location == 1 MACRO 0: __GCC_IEC_559 (1 tokens) location_t interval: 2147483647 <= loc < 2147483648 /usr/include/stdc-predef.h:37:6: note: expansion point is location 147788 37 | # if __GCC_IEC_559 > 0 | ^~~~~~~~~~~~~ map->start_location: 2147483647 macro_locations: 0: 1, 1 : note: token 0 has x-location == y-location == 1 MAX_LOCATION_T location_t interval: 2147483647 <= loc < 2147483648 AD-HOC LOCATIONS location_t interval: 2147483648 <= loc < 4294967295 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^