]>
Commit | Line | Data |
---|---|---|
ba4ad400 DM |
1 | Consider compiling test.c, with this content: |
2 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV | |
3 | #include "test.h" | |
4 | ||
5 | int | |
6 | main (int argc, char **argv) | |
7 | { | |
8 | int a = PLUS (1,2); | |
9 | int b = PLUS (3,4); | |
10 | return 0; | |
11 | } | |
12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
13 | ||
14 | ...where test.h has this content: | |
15 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV | |
16 | extern int foo (); | |
17 | ||
18 | #define PLUS(A, B) A + B | |
19 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
20 | ||
21 | ||
22 | The undocumented -fdump-internal-locations option outputs this information | |
620e594b DM |
23 | to stderr, showing what each location_t value means. Source code |
24 | lines are quoted, showing both per-line location_t values and | |
25 | per-line&column location_t values (written vertically under the | |
ba4ad400 DM |
26 | corresponding character of source code). |
27 | ||
28 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV | |
29 | RESERVED LOCATIONS | |
620e594b | 30 | location_t interval: 0 <= loc < 2 |
ba4ad400 DM |
31 | |
32 | ORDINARY MAP: 0 | |
620e594b | 33 | location_t interval: 32 <= loc < 64 |
ba4ad400 DM |
34 | file: test.c |
35 | starting at line: 1 | |
bc65bad2 MG |
36 | column and range bits: 12 |
37 | column bits: 7 | |
ebedc9a3 | 38 | range bits: 5 |
bc65bad2 MG |
39 | reason: 0 (LC_ENTER) |
40 | included from location: 0 | |
ebedc9a3 DM |
41 | test.c: 1|loc: 32|#include "test.h" |
42 | |69269258258148147 | |
43 | |46802468024680246 | |
ba4ad400 DM |
44 | |
45 | ORDINARY MAP: 1 | |
620e594b | 46 | location_t interval: 64 <= loc < 96 |
ba4ad400 DM |
47 | file: <built-in> |
48 | starting at line: 0 | |
bc65bad2 | 49 | column and range bits: 0 |
ba4ad400 | 50 | column bits: 0 |
ebedc9a3 | 51 | range bits: 0 |
bc65bad2 MG |
52 | reason: 2 (LC_RENAME) |
53 | included from location: 0 | |
ba4ad400 DM |
54 | |
55 | ORDINARY MAP: 2 | |
620e594b | 56 | location_t interval: 96 <= loc < 128 |
ba4ad400 DM |
57 | file: <command-line> |
58 | starting at line: 0 | |
bc65bad2 | 59 | column and range bits: 0 |
ba4ad400 | 60 | column bits: 0 |
ebedc9a3 | 61 | range bits: 0 |
bc65bad2 MG |
62 | reason: 2 (LC_RENAME) |
63 | included from location: 0 | |
ba4ad400 DM |
64 | |
65 | ORDINARY MAP: 3 | |
bc65bad2 | 66 | location_t interval: 128 <= loc < 250240 |
ba4ad400 DM |
67 | file: /usr/include/stdc-predef.h |
68 | starting at line: 1 | |
bc65bad2 MG |
69 | column and range bits: 12 |
70 | column bits: 7 | |
ebedc9a3 | 71 | range bits: 5 |
bc65bad2 MG |
72 | reason: 0 (LC_ENTER) |
73 | included from location: 127 (in ordinary map 2) | |
ba4ad400 DM |
74 | (contents of /usr/include/stdc-predef.h snipped for brevity) |
75 | ||
76 | ORDINARY MAP: 4 | |
bc65bad2 | 77 | location_t interval: 250240 <= loc < 250272 |
ba4ad400 | 78 | file: <command-line> |
ebedc9a3 | 79 | starting at line: 32 |
bc65bad2 MG |
80 | column and range bits: 12 |
81 | column bits: 7 | |
ebedc9a3 | 82 | range bits: 5 |
bc65bad2 MG |
83 | reason: 1 (LC_LEAVE) |
84 | included from location: 0 | |
ba4ad400 DM |
85 | |
86 | ORDINARY MAP: 5 | |
bc65bad2 | 87 | location_t interval: 250272 <= loc < 254368 |
ba4ad400 DM |
88 | file: test.c |
89 | starting at line: 1 | |
bc65bad2 MG |
90 | column and range bits: 12 |
91 | column bits: 7 | |
ebedc9a3 | 92 | range bits: 5 |
bc65bad2 MG |
93 | reason: 2 (LC_RENAME) |
94 | included from location: 0 | |
95 | test.c: 1|loc:250272|#include "test.h" | |
96 | |00000000000000000 | |
97 | |33344445556667778 | |
98 | |03603692692582581 | |
99 | |46802468024680246 | |
ba4ad400 DM |
100 | |
101 | ORDINARY MAP: 6 | |
bc65bad2 | 102 | location_t interval: 254368 <= loc < 266720 |
ba4ad400 DM |
103 | file: test.h |
104 | starting at line: 1 | |
bc65bad2 MG |
105 | column and range bits: 12 |
106 | column bits: 7 | |
ebedc9a3 | 107 | range bits: 5 |
bc65bad2 MG |
108 | reason: 0 (LC_ENTER) |
109 | included from location: 250272 (in ordinary map 5) | |
110 | test.h: 1|loc:254368|extern int foo (); | |
111 | |444444444444444444 | |
112 | |444455566677788899 | |
113 | |036926925825814814 | |
114 | |024680246802468024 | |
115 | test.h: 2|loc:258464| | |
116 | | | |
117 | | | |
118 | | | |
119 | | | |
120 | test.h: 3|loc:262560|#define PLUS(A, B) A + B | |
121 | |222222222222233333333333 | |
122 | |566677788899900011122223 | |
123 | |925825814814704703603692 | |
124 | |246802468024680246802468 | |
125 | test.h: 4|loc:266656| | |
126 | | | |
127 | | | |
128 | | | |
129 | | | |
ba4ad400 DM |
130 | |
131 | ORDINARY MAP: 7 | |
bc65bad2 | 132 | location_t interval: 266720 <= loc < 299520 |
ba4ad400 DM |
133 | file: test.c |
134 | starting at line: 2 | |
bc65bad2 MG |
135 | column and range bits: 12 |
136 | column bits: 7 | |
ebedc9a3 | 137 | range bits: 5 |
bc65bad2 MG |
138 | reason: 1 (LC_LEAVE) |
139 | included from location: 0 | |
140 | test.c: 2|loc:266720| | |
141 | | | |
142 | | | |
143 | | | |
144 | | | |
145 | test.c: 3|loc:270816|int | |
146 | |000 | |
147 | |889 | |
148 | |481 | |
149 | |802 | |
150 | test.c: 4|loc:274912|main (int argc, char **argv) | |
151 | |4455555555555555555555555555 | |
152 | |9900011122223334445556667778 | |
153 | |4704703603692692582581481470 | |
154 | |4680246802468024680246802468 | |
155 | test.c: 5|loc:279008|{ | |
156 | |9 | |
157 | |0 | |
158 | |4 | |
159 | |0 | |
160 | test.c: 6|loc:283104| int a = PLUS (1,2); | |
161 | |333333333333333333333 | |
162 | |112222333444555666777 | |
163 | |360369269258258148147 | |
164 | |680246802468024680246 | |
165 | test.c: 7|loc:287200| int b = PLUS (3,4); | |
166 | |777777777777777777777 | |
167 | |222333444555666777888 | |
168 | |369269258258148147047 | |
169 | |246802468024680246802 | |
170 | test.c: 8|loc:291296| return 0; | |
171 | |11111111111 | |
172 | |33344455566 | |
173 | |26925825814 | |
174 | |80246802468 | |
175 | test.c: 9|loc:295392|} | |
176 | |5 | |
177 | |4 | |
178 | |2 | |
179 | |4 | |
180 | test.c: 10|loc:299488| | |
181 | | | |
182 | | | |
183 | | | |
184 | | | |
ba4ad400 DM |
185 | |
186 | UNALLOCATED LOCATIONS | |
bc65bad2 | 187 | location_t interval: 299520 <= loc < 2147483632 |
ba4ad400 | 188 | |
bc65bad2 MG |
189 | MACRO 3: PLUS (7 tokens) |
190 | location_t interval: 2147483632 <= loc < 2147483639 | |
191 | test.c:7:11: note: expansion point is location 287555 | |
192 | 7 | int b = PLUS (3,4); | |
193 | | ^~~~ | |
194 | map->start_location: 2147483632 | |
195 | macro_locations: | |
196 | 0: 287744, 263200 | |
197 | test.c:7:17: note: token 0 has x-location == 287744 | |
198 | 7 | int b = PLUS (3,4); | |
199 | | ^ | |
200 | test.c:7:17: note: token 0 has y-location == 263200 | |
201 | 1: 263264, 263264 | |
202 | In file included from test.c:1: | |
203 | test.h:3:22: note: token 1 has x-location == y-location == 263264 | |
204 | 3 | #define PLUS(A, B) A + B | |
205 | | ^ | |
206 | 2: 287808, 263328 | |
207 | test.c:7:19: note: token 2 has x-location == 287808 | |
208 | 7 | int b = PLUS (3,4); | |
209 | | ^ | |
210 | test.c:7:19: note: token 2 has y-location == 263328 | |
211 | 3: 0, 0 | |
212 | cc1: note: token 3 has x-location == y-location == 0 | |
213 | 4: 0, 0 | |
214 | cc1: note: token 4 has x-location == y-location == 0 | |
215 | 5: 0, 0 | |
216 | cc1: note: token 5 has x-location == y-location == 0 | |
217 | 6: 0, 0 | |
218 | cc1: note: token 6 has x-location == y-location == 0 | |
219 | ||
220 | MACRO 2: PLUS (7 tokens) | |
221 | location_t interval: 2147483639 <= loc < 2147483646 | |
222 | test.c:6:11: note: expansion point is location 283459 | |
223 | 6 | int a = PLUS (1,2); | |
224 | | ^~~~ | |
225 | map->start_location: 2147483639 | |
226 | macro_locations: | |
227 | 0: 283648, 263200 | |
228 | test.c:6:17: note: token 0 has x-location == 283648 | |
229 | 6 | int a = PLUS (1,2); | |
230 | | ^ | |
231 | test.c:6:17: note: token 0 has y-location == 263200 | |
232 | 1: 263264, 263264 | |
233 | In file included from test.c:1: | |
234 | test.h:3:22: note: token 1 has x-location == y-location == 263264 | |
235 | 3 | #define PLUS(A, B) A + B | |
236 | | ^ | |
237 | 2: 283712, 263328 | |
238 | test.c:6:19: note: token 2 has x-location == 283712 | |
239 | 6 | int a = PLUS (1,2); | |
240 | | ^ | |
241 | test.c:6:19: note: token 2 has y-location == 263328 | |
242 | 3: 0, 0 | |
243 | cc1: note: token 3 has x-location == y-location == 0 | |
244 | 4: 0, 0 | |
245 | cc1: note: token 4 has x-location == y-location == 0 | |
246 | 5: 0, 0 | |
247 | cc1: note: token 5 has x-location == y-location == 0 | |
248 | 6: 0, 0 | |
249 | cc1: note: token 6 has x-location == y-location == 0 | |
ebedc9a3 | 250 | |
bc65bad2 MG |
251 | MACRO 1: __GCC_IEC_559_COMPLEX (1 tokens) |
252 | location_t interval: 2147483646 <= loc < 2147483647 | |
253 | In file included from <command-line>:31: | |
254 | /usr/include/stdc-predef.h:45:6: note: expansion point is location 180564 | |
255 | 45 | # if __GCC_IEC_559_COMPLEX > 0 | |
256 | | ^~~~~~~~~~~~~~~~~~~~~ | |
257 | map->start_location: 2147483646 | |
ba4ad400 | 258 | macro_locations: |
bc65bad2 MG |
259 | 0: 1, 1 |
260 | <built-in>: note: token 0 has x-location == y-location == 1 | |
261 | ||
262 | MACRO 0: __GCC_IEC_559 (1 tokens) | |
263 | location_t interval: 2147483647 <= loc < 2147483648 | |
264 | /usr/include/stdc-predef.h:37:6: note: expansion point is location 147788 | |
265 | 37 | # if __GCC_IEC_559 > 0 | |
266 | | ^~~~~~~~~~~~~ | |
267 | map->start_location: 2147483647 | |
ba4ad400 | 268 | macro_locations: |
bc65bad2 MG |
269 | 0: 1, 1 |
270 | <built-in>: note: token 0 has x-location == y-location == 1 | |
ba4ad400 | 271 | |
620e594b DM |
272 | MAX_LOCATION_T |
273 | location_t interval: 2147483647 <= loc < 2147483648 | |
ba4ad400 DM |
274 | |
275 | AD-HOC LOCATIONS | |
620e594b | 276 | location_t interval: 2147483648 <= loc < 4294967295 |
ba4ad400 | 277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |