diff mbox series

[v4] PR preprocessor/83173: Enhance -fdump-internal-locations output

Message ID 20181113195431.119454-1-mgulick@mathworks.com
State New
Headers show
Series [v4] PR preprocessor/83173: Enhance -fdump-internal-locations output | expand

Commit Message

Mike Gulick Nov. 13, 2018, 7:54 p.m. UTC
2018-11-13  Mike Gulick  <mgulick@mathworks.com>

	PR preprocessor/83173
	* gcc/input.c (dump_location_info): Dump reason and
	included_from fields from line_map_ordinary struct.  Fix
	indentation when location > 5 digits.
	* libcpp/location-example.txt: Update example
	-fdump-internal-locations output.
	* gcc/diagnostic-show-locus.c (num_digits, test_num_digits):
	Move to gcc/diagnostic.c to allow it to be utilized by
	gcc/input.c.
	* gcc/diagnostic.c (num_digits, test_num_digits): Moved here.
	(diagnostic_c_tests): Run test_num_digits.
	* gcc/diagnostic-core.h (num_digits): Add extern definition.
---
 gcc/diagnostic-show-locus.c |  51 ------
 gcc/diagnostic.c            |  46 +++++
 gcc/diagnostic.h            |   2 +
 gcc/input.c                 |  41 ++++-
 libcpp/location-example.txt | 333 +++++++++++++++++++++---------------
 5 files changed, 281 insertions(+), 192 deletions(-)

Comments

David Malcolm Nov. 13, 2018, 8:12 p.m. UTC | #1
On Tue, 2018-11-13 at 14:54 -0500, Mike Gulick wrote:
> 2018-11-13  Mike Gulick  <mgulick@mathworks.com>

[...]

> 	* gcc/diagnostic-core.h (num_digits): Add extern definition.

FWIW you moved the decl to diagnostic.h, but didn't update the above
ChangeLog entry.

[...]

> diff --git a/libcpp/location-example.txt b/libcpp/location-
> example.txt
> index 14b5c2e284a..dc448b0493e 100644
> --- a/libcpp/location-example.txt
> +++ b/libcpp/location-example.txt

You're going to need to regenerate this file again; I touched many of
the same lines as your patch does, in r266085 (sorry).

Other than the nits above, this looks good to me (once you have your
contribution paperwork in place).

Thanks
Dave
Mike Gulick Nov. 26, 2018, 10:17 p.m. UTC | #2
On 11/13/18 3:12 PM, David Malcolm wrote:
> On Tue, 2018-11-13 at 14:54 -0500, Mike Gulick wrote:
>> 2018-11-13  Mike Gulick  <mgulick@mathworks.com>
> 
> [...]
> 
>> 	* gcc/diagnostic-core.h (num_digits): Add extern definition.
> 
> FWIW you moved the decl to diagnostic.h, but didn't update the above
> ChangeLog entry.
> 
> [...]
> 
>> diff --git a/libcpp/location-example.txt b/libcpp/location-
>> example.txt
>> index 14b5c2e284a..dc448b0493e 100644
>> --- a/libcpp/location-example.txt
>> +++ b/libcpp/location-example.txt
> 
> You're going to need to regenerate this file again; I touched many of
> the same lines as your patch does, in r266085 (sorry).
> 

Thanks.  I updated this file and fixed the changelog.  I will send an
updated patch after this email.  The contents of this file were a little
stale, so many of the locations in the file have changed in addition to
the fields I added.  I verified that the changed locations aren't due to
any of these patches.

> Other than the nits above, this looks good to me (once you have your
> contribution paperwork in place).

The contribution paperwork is now in place.  There are no other changes
to the previous patches (other than updating the changelog date).
Please let me know if there is anything else I need to do.

Thanks,
Mike
David Malcolm Nov. 27, 2018, 1:29 a.m. UTC | #3
On Mon, 2018-11-26 at 22:17 +0000, Mike Gulick wrote:
> On 11/13/18 3:12 PM, David Malcolm wrote:
> > On Tue, 2018-11-13 at 14:54 -0500, Mike Gulick wrote:
> > > 2018-11-13  Mike Gulick  <mgulick@mathworks.com>
> > 
> > [...]
> > 
> > > 	* gcc/diagnostic-core.h (num_digits): Add extern definition.
> > 
> > FWIW you moved the decl to diagnostic.h, but didn't update the
> > above
> > ChangeLog entry.
> > 
> > [...]
> > 
> > > diff --git a/libcpp/location-example.txt b/libcpp/location-
> > > example.txt
> > > index 14b5c2e284a..dc448b0493e 100644
> > > --- a/libcpp/location-example.txt
> > > +++ b/libcpp/location-example.txt
> > 
> > You're going to need to regenerate this file again; I touched many
> > of
> > the same lines as your patch does, in r266085 (sorry).
> > 
> 
> Thanks.  I updated this file and fixed the changelog.  I will send an
> updated patch after this email.  The contents of this file were a
> little
> stale, so many of the locations in the file have changed in addition
> to
> the fields I added.  I verified that the changed locations aren't due
> to
> any of these patches.

Excellent; thanks.

Did the latest patch go through a bootstrap and regression testing?

> > Other than the nits above, this looks good to me (once you have
> > your
> > contribution paperwork in place).
> 
> The contribution paperwork is now in place.  There are no other
> changes
> to the previous patches (other than updating the changelog date).
> Please let me know if there is anything else I need to do.

Do you have an account with commit rights to the repository?

Dave
Mike Gulick Nov. 27, 2018, 2:10 p.m. UTC | #4
On 11/26/18 8:29 PM, David Malcolm wrote:
> On Mon, 2018-11-26 at 22:17 +0000, Mike Gulick wrote:
>> On 11/13/18 3:12 PM, David Malcolm wrote:
>>> On Tue, 2018-11-13 at 14:54 -0500, Mike Gulick wrote:
>>>> 2018-11-13  Mike Gulick  <mgulick@mathworks.com>
>>>
>>> [...]
>>>
>>>> 	* gcc/diagnostic-core.h (num_digits): Add extern definition.
>>>
>>> FWIW you moved the decl to diagnostic.h, but didn't update the
>>> above
>>> ChangeLog entry.
>>>
>>> [...]
>>>
>>>> diff --git a/libcpp/location-example.txt b/libcpp/location-
>>>> example.txt
>>>> index 14b5c2e284a..dc448b0493e 100644
>>>> --- a/libcpp/location-example.txt
>>>> +++ b/libcpp/location-example.txt
>>>
>>> You're going to need to regenerate this file again; I touched many
>>> of
>>> the same lines as your patch does, in r266085 (sorry).
>>>
>>
>> Thanks.  I updated this file and fixed the changelog.  I will send an
>> updated patch after this email.  The contents of this file were a
>> little
>> stale, so many of the locations in the file have changed in addition
>> to
>> the fields I added.  I verified that the changed locations aren't due
>> to
>> any of these patches.
> 
> Excellent; thanks.
> 
> Did the latest patch go through a bootstrap and regression testing?
> 

I built gcc with and without the patches and tested using

 ../gcc/configure --enable-languages=c,c++ --disable-multilib
 make 
 make -k check

I compared the test results using contrib/compare_tests, and the only
difference between the two was the new test that was added.

>>> Other than the nits above, this looks good to me (once you have
>>> your
>>> contribution paperwork in place).
>>
>> The contribution paperwork is now in place.  There are no other
>> changes
>> to the previous patches (other than updating the changelog date).
>> Please let me know if there is anything else I need to do.
> 
> Do you have an account with commit rights to the repository?

I do not.  If you or someone else wants to commit these for me, that is
obviously easier for me, but if you prefer me to do it just let me know
where to start.  I've been using the git mirror to create these patches,
and haven't used subversion for a quite a few years.

> 
> Dave
>
David Malcolm Nov. 27, 2018, 2:27 p.m. UTC | #5
On Tue, 2018-11-27 at 14:10 +0000, Mike Gulick wrote:
> On 11/26/18 8:29 PM, David Malcolm wrote:
> > On Mon, 2018-11-26 at 22:17 +0000, Mike Gulick wrote:
> > > On 11/13/18 3:12 PM, David Malcolm wrote:
> > > > On Tue, 2018-11-13 at 14:54 -0500, Mike Gulick wrote:
> > > > > 2018-11-13  Mike Gulick  <mgulick@mathworks.com>
> > > > 
> > > > [...]
> > > > 
> > > > > 	* gcc/diagnostic-core.h (num_digits): Add extern
> > > > > definition.
> > > > 
> > > > FWIW you moved the decl to diagnostic.h, but didn't update the
> > > > above
> > > > ChangeLog entry.
> > > > 
> > > > [...]
> > > > 
> > > > > diff --git a/libcpp/location-example.txt b/libcpp/location-
> > > > > example.txt
> > > > > index 14b5c2e284a..dc448b0493e 100644
> > > > > --- a/libcpp/location-example.txt
> > > > > +++ b/libcpp/location-example.txt
> > > > 
> > > > You're going to need to regenerate this file again; I touched
> > > > many
> > > > of
> > > > the same lines as your patch does, in r266085 (sorry).
> > > > 
> > > 
> > > Thanks.  I updated this file and fixed the changelog.  I will
> > > send an
> > > updated patch after this email.  The contents of this file were a
> > > little
> > > stale, so many of the locations in the file have changed in
> > > addition
> > > to
> > > the fields I added.  I verified that the changed locations aren't
> > > due
> > > to
> > > any of these patches.
> > 
> > Excellent; thanks.
> > 
> > Did the latest patch go through a bootstrap and regression testing?
> > 
> 
> I built gcc with and without the patches and tested using
> 
>  ../gcc/configure --enable-languages=c,c++ --disable-multilib
>  make 
>  make -k check
> 
> I compared the test results using contrib/compare_tests, and the only
> difference between the two was the new test that was added.

Thanks.

> > > > Other than the nits above, this looks good to me (once you have
> > > > your
> > > > contribution paperwork in place).
> > > 
> > > The contribution paperwork is now in place.  There are no other
> > > changes
> > > to the previous patches (other than updating the changelog date).
> > > Please let me know if there is anything else I need to do.
> > 
> > Do you have an account with commit rights to the repository?
> 
> I do not.  If you or someone else wants to commit these for me, that
> is
> obviously easier for me, but if you prefer me to do it just let me
> know
> where to start.  I've been using the git mirror to create these
> patches,
> and haven't used subversion for a quite a few years.

I can commit them for you if you like.  Please can you repost the
latest version of the patches as one kit, for clarity, so I can commit
them.

Thanks
Dave
Mike Gulick Nov. 27, 2018, 2:37 p.m. UTC | #6
On 11/27/18 9:27 AM, David Malcolm wrote:

[...]

> 
> I can commit them for you if you like.  Please can you repost the
> latest version of the patches as one kit, for clarity, so I can commit
> them.
> 

Do you want me to repost them as a patch series, or as a single patch?

> Thanks
> Dave
>
David Malcolm Nov. 27, 2018, 2:42 p.m. UTC | #7
On Tue, 2018-11-27 at 14:37 +0000, Mike Gulick wrote:
> On 11/27/18 9:27 AM, David Malcolm wrote:
> 
> [...]
> 
> > 
> > I can commit them for you if you like.  Please can you repost the
> > latest version of the patches as one kit, for clarity, so I can
> > commit
> > them.
> > 
> 
> Do you want me to repost them as a patch series, or as a single
> patch?

Whatever's most convenient for you.

Dave
diff mbox series

Patch

diff --git a/gcc/diagnostic-show-locus.c b/gcc/diagnostic-show-locus.c
index a42ff819512..08fe74a6136 100644
--- a/gcc/diagnostic-show-locus.c
+++ b/gcc/diagnostic-show-locus.c
@@ -819,56 +819,6 @@  fixit_cmp (const void *p_a, const void *p_b)
   return hint_a->get_start_loc () - hint_b->get_start_loc ();
 }
 
-/* Get the number of digits in the decimal representation
-   of VALUE.  */
-
-static int
-num_digits (int value)
-{
-  /* Perhaps simpler to use log10 for this, but doing it this way avoids
-     using floating point.  */
-  gcc_assert (value >= 0);
-
-  if (value == 0)
-    return 1;
-
-  int digits = 0;
-  while (value > 0)
-    {
-      digits++;
-      value /= 10;
-    }
-  return digits;
-}
-
-
-#if CHECKING_P
-
-/* Selftest for num_digits.  */
-
-static void
-test_num_digits ()
-{
-  ASSERT_EQ (1, num_digits (0));
-  ASSERT_EQ (1, num_digits (9));
-  ASSERT_EQ (2, num_digits (10));
-  ASSERT_EQ (2, num_digits (99));
-  ASSERT_EQ (3, num_digits (100));
-  ASSERT_EQ (3, num_digits (999));
-  ASSERT_EQ (4, num_digits (1000));
-  ASSERT_EQ (4, num_digits (9999));
-  ASSERT_EQ (5, num_digits (10000));
-  ASSERT_EQ (5, num_digits (99999));
-  ASSERT_EQ (6, num_digits (100000));
-  ASSERT_EQ (6, num_digits (999999));
-  ASSERT_EQ (7, num_digits (1000000));
-  ASSERT_EQ (7, num_digits (9999999));
-  ASSERT_EQ (8, num_digits (10000000));
-  ASSERT_EQ (8, num_digits (99999999));
-}
-
-#endif /* #if CHECKING_P */
-
 /* Implementation of class layout.  */
 
 /* Constructor for class layout.
@@ -3761,7 +3711,6 @@  void
 diagnostic_show_locus_c_tests ()
 {
   test_line_span ();
-  test_num_digits ();
 
   test_layout_range_for_single_point ();
   test_layout_range_for_single_line ();
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index a572c084aac..08d40b87e2c 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -1024,6 +1024,27 @@  diagnostic_report_diagnostic (diagnostic_context *context,
   return true;
 }
 
+/* Get the number of digits in the decimal representation of VALUE.  */
+
+int
+num_digits (int value)
+{
+  /* Perhaps simpler to use log10 for this, but doing it this way avoids
+     using floating point.  */
+  gcc_assert (value >= 0);
+
+  if (value == 0)
+    return 1;
+
+  int digits = 0;
+  while (value > 0)
+    {
+      digits++;
+      value /= 10;
+    }
+  return digits;
+}
+
 /* Given a partial pathname as input, return another pathname that
    shares no directory elements with the pathname of __FILE__.  This
    is used by fancy_abort() to print `Internal compiler error in expr.c'
@@ -1774,6 +1795,29 @@  test_diagnostic_get_location_text ()
   progname = old_progname;
 }
 
+/* Selftest for num_digits.  */
+
+static void
+test_num_digits ()
+{
+  ASSERT_EQ (1, num_digits (0));
+  ASSERT_EQ (1, num_digits (9));
+  ASSERT_EQ (2, num_digits (10));
+  ASSERT_EQ (2, num_digits (99));
+  ASSERT_EQ (3, num_digits (100));
+  ASSERT_EQ (3, num_digits (999));
+  ASSERT_EQ (4, num_digits (1000));
+  ASSERT_EQ (4, num_digits (9999));
+  ASSERT_EQ (5, num_digits (10000));
+  ASSERT_EQ (5, num_digits (99999));
+  ASSERT_EQ (6, num_digits (100000));
+  ASSERT_EQ (6, num_digits (999999));
+  ASSERT_EQ (7, num_digits (1000000));
+  ASSERT_EQ (7, num_digits (9999999));
+  ASSERT_EQ (8, num_digits (10000000));
+  ASSERT_EQ (8, num_digits (99999999));
+}
+
 /* Run all of the selftests within this file.  */
 
 void
@@ -1785,6 +1829,8 @@  diagnostic_c_tests ()
   test_print_parseable_fixits_remove ();
   test_print_parseable_fixits_replace ();
   test_diagnostic_get_location_text ();
+  test_num_digits ();
+
 }
 
 } // namespace selftest
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 3498a9ba7bb..a48fe3f9a97 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -401,5 +401,7 @@  extern char *file_name_as_prefix (diagnostic_context *, const char *);
 
 extern char *build_message_string (const char *, ...) ATTRIBUTE_PRINTF_1;
 
+/* Compute the number of digits in the decimal representation of an integer.  */
+extern int num_digits (int);
 
 #endif /* ! GCC_DIAGNOSTIC_H */
diff --git a/gcc/input.c b/gcc/input.c
index 9fb6e72421f..d63b5572db4 100644
--- a/gcc/input.c
+++ b/gcc/input.c
@@ -21,6 +21,7 @@  along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "intl.h"
+#include "diagnostic.h"
 #include "diagnostic-core.h"
 #include "selftest.h"
 #include "cpplib.h"
@@ -1067,6 +1068,37 @@  dump_location_info (FILE *stream)
 	       map->m_column_and_range_bits - map->m_range_bits);
       fprintf (stream, "  range bits: %i\n",
 	       map->m_range_bits);
+      const char * reason;
+      switch (map->reason) {
+      case LC_ENTER:
+	reason = "LC_ENTER";
+	break;
+      case LC_LEAVE:
+	reason = "LC_LEAVE";
+	break;
+      case LC_RENAME:
+	reason = "LC_RENAME";
+	break;
+      case LC_RENAME_VERBATIM:
+	reason = "LC_RENAME_VERBATIM";
+	break;
+      case LC_ENTER_MACRO:
+	reason = "LC_RENAME_MACRO";
+	break;
+      default:
+	reason = "Unknown";
+      }
+      fprintf (stream, "  reason: %d (%s)\n", map->reason, reason);
+
+      const line_map_ordinary *includer_map
+	= linemap_included_from_linemap (line_table, map);
+      fprintf (stream, "  included from location: %d",
+	       linemap_included_from (map));
+      if (includer_map) {
+	fprintf (stream, " (in ordinary map %d)",
+		 int (includer_map - line_table->info_ordinary.maps));
+      }
+      fprintf (stream, "\n");
 
       /* Render the span of source lines that this "map" covers.  */
       for (source_location loc = MAP_START_LOCATION (map);
@@ -1100,7 +1132,14 @@  dump_location_info (FILE *stream)
 	      if (max_col > line_text.length ())
 		max_col = line_text.length () + 1;
 
-	      int indent = 14 + strlen (exploc.file);
+	      int len_lnum = num_digits (exploc.line);
+	      if (len_lnum < 3)
+		len_lnum = 3;
+	      int len_loc = num_digits (loc);
+	      if (len_loc < 5)
+		len_loc = 5;
+
+	      int indent = 6 + strlen (exploc.file) + len_lnum + len_loc;
 
 	      /* Thousands.  */
 	      if (end_location > 999)
diff --git a/libcpp/location-example.txt b/libcpp/location-example.txt
index 14b5c2e284a..dc448b0493e 100644
--- a/libcpp/location-example.txt
+++ b/libcpp/location-example.txt
@@ -33,8 +33,12 @@  ORDINARY MAP: 0
   source_location interval: 32 <= loc < 64
   file: test.c
   starting at line: 1
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
+  reason: 0 (LC_ENTER)
+  included from map: -1
+  included from location: 0
 test.c:  1|loc:   32|#include "test.h"
                     |69269258258148147
                     |46802468024680246
@@ -43,186 +47,235 @@  ORDINARY MAP: 1
   source_location 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 map: -1
+  included from location: 0
 
 ORDINARY MAP: 2
   source_location 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 map: -1
+  included from location: 0
 
 ORDINARY MAP: 3
-  source_location interval: 128 <= loc < 160128
+  source_location interval: 128 <= loc < 250240
   file: /usr/include/stdc-predef.h
   starting at line: 1
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
+  reason: 0 (LC_ENTER)
+  included from map: 2
+  included from location: 127
 (contents of /usr/include/stdc-predef.h snipped for brevity)
 
 ORDINARY MAP: 4
-  source_location interval: 160128 <= loc < 160160
+  source_location interval: 250240 <= loc < 250272
   file: <command-line>
   starting at line: 32
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
+  reason: 1 (LC_LEAVE)
+  included from map: -1
+  included from location: 0
 
 ORDINARY MAP: 5
-  source_location interval: 160160 <= loc < 164256
+  source_location interval: 250272 <= loc < 254368
   file: test.c
   starting at line: 1
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
-test.c:  1|loc:160160|#include "test.h"
-                    |00000000000000000
-                    |12223334445556667
-                    |92582581481470470
-                    |24680246802468024
+  reason: 2 (LC_RENAME)
+  included from map: -1
+  included from location: 0
+test.c:  1|loc:250272|#include "test.h"
+                     |00000000000000000
+                     |33344445556667778
+                     |03603692692582581
+                     |46802468024680246
 
 ORDINARY MAP: 6
-  source_location interval: 164256 <= loc < 173280
+  source_location interval: 254368 <= loc < 266720
   file: test.h
   starting at line: 1
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
-test.h:  1|loc:164256|extern int foo ();
-                    |444444444444444444
-                    |233344455566677788
-                    |825814814704703603
-                    |802468024680246802
-test.h:  2|loc:168352|
-                    |
-                    |
-                    |
-                    |
-test.h:  3|loc:172448|#define PLUS(A, B) A + B
-                    |222222222222222223333333
-                    |455566677788889990001112
-                    |814704703603692692582581
-                    |024680246802468024680246
+  reason: 0 (LC_ENTER)
+  included from map: 5
+  included from location: 250272
+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
-  source_location interval: 173280 <= loc < 202016
+  source_location interval: 266720 <= loc < 299520
   file: test.c
   starting at line: 2
-  column bits: 12
+  column and range bits: 12
+  column bits: 7
   range bits: 5
-test.c:  2|loc:173280|
-                    |
-                    |
-                    |
-                    |
-test.c:  3|loc:177376|int
-                    |777
-                    |444
-                    |047
-                    |802
-test.c:  4|loc:181472|main (int argc, char **argv)
-                    |1111111111111111222222222222
-                    |5556666777888999000111222333
-                    |0360369269258258148147047036
-                    |4680246802468024680246802468
-test.c:  5|loc:185568|{
-                    |5
-                    |6
-                    |0
-                    |0
-test.c:  6|loc:189664|  int a = PLUS (1,2);
-                    |999999999900000000000
-                    |677788899900011122233
-                    |926925825814814704703
-                    |680246802468024680246
-test.c:  7|loc:193760|  int b = PLUS (3,4);
-                    |333333344444444444444
-                    |788899900011122233344
-                    |925825814814704703603
-                    |246802468024680246802
-test.c:  8|loc:197856|  return 0;
-                    |77778888888
-                    |89990001112
-                    |82581481470
-                    |80246802468
-test.c:  9|loc:201952|}
-                    |1
-                    |9
-                    |8
-                    |4
+  reason: 1 (LC_LEAVE)
+  included from map: -1
+  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
-  source_location interval: 202016 <= loc < 2147483633
+  source_location interval: 299520 <= loc < 2147483632
 
-MACRO 1: PLUS (7 tokens)
-  source_location interval: 2147483633 <= loc < 2147483640
-test.c:7:11: note: expansion point is location 194115
-   int b = PLUS (3,4);
-           ^~~~
+MACRO 3: PLUS (7 tokens)
+  source_location 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)
+  source_location 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
 
-  map->start_location: 2147483633
+MACRO 1: __GCC_IEC_559_COMPLEX (1 tokens)
+  source_location 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: 194304, 173088
-test.c:7:17: note: token 0 has x-location == 194304
-   int b = PLUS (3,4);
-                 ^
-
-test.c:7:17: note: token 0 has y-location == 173088
-    1: 173152, 173152
-In file included from test.c:1:0:
-test.h:3:22: note: token 1 has x-location == y-location == 173152
- #define PLUS(A, B) A + B
-                      ^
-
-    2: 194368, 173216
-test.c:7:19: note: token 2 has x-location == 194368
-   int b = PLUS (3,4);
-                   ^
-
-test.c:7:19: note: token 2 has y-location == 173216
-    3: 0, 2947526575
-cc1: note: token 3 has x-location == 0
-cc1: note: token 3 has y-location == 2947526575
-    4: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042942
-    5: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042942
-    6: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042942
-
-MACRO 0: PLUS (7 tokens)
-  source_location interval: 2147483640 <= loc < 2147483647
-test.c:6:11: note: expansion point is location 190019
-   int a = PLUS (1,2);
-           ^~~~
-
-  map->start_location: 2147483640
+    0: 1, 1
+<built-in>: note: token 0 has x-location == y-location == 1
+
+MACRO 0: __GCC_IEC_559 (1 tokens)
+  source_location 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: 190208, 173088
-test.c:6:17: note: token 0 has x-location == 190208
-   int a = PLUS (1,2);
-                 ^
-
-test.c:6:17: note: token 0 has y-location == 173088
-    1: 173152, 173152
-In file included from test.c:1:0:
-test.h:3:22: note: token 1 has x-location == y-location == 173152
- #define PLUS(A, B) A + B
-                      ^
-
-    2: 190272, 173216
-test.c:6:19: note: token 2 has x-location == 190272
-   int a = PLUS (1,2);
-                   ^
-
-test.c:6:19: note: token 2 has y-location == 173216
-    3: 0, 2947526575
-cc1: note: token 3 has x-location == 0
-cc1: note: token 3 has y-location == 2947526575
-    4: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042935
-    5: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042935
-    6: 2947526575, 2947526575
-x-location == y-location == 2947526575 encodes token # 800042935
+    0: 1, 1
+<built-in>: note: token 0 has x-location == y-location == 1
 
 MAX_SOURCE_LOCATION
   source_location interval: 2147483647 <= loc < 2147483648