bc65bad27f
gcc/ChangeLog: 2018-11-27 Mike Gulick <mgulick@mathworks.com> PR preprocessor/83173 * input.c (dump_location_info): Dump reason and included_from fields from line_map_ordinary struct. Fix indentation when location > 5 digits. * diagnostic-show-locus.c (num_digits, num_digits): Move to diagnostic.c to allow it to be utilized by input.c. * diagnostic.c (num_digits, selftest::test_num_digits): Moved here. (selftest::diagnostic_c_tests): Run selftest::test_num_digits. * diagnostic.h (num_digits): Add extern definition. libcpp/ChangeLog: 2018-11-27 Mike Gulick <mgulick@mathworks.com> PR preprocessor/83173 * location-example.txt: Update example -fdump-internal-locations output. From-SVN: r266520
278 lines
8.2 KiB
Plaintext
278 lines
8.2 KiB
Plaintext
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: <built-in>
|
|
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: <command-line>
|
|
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: <command-line>
|
|
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 <command-line>: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
|
|
<built-in>: 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
|
|
<built-in>: 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
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|