[Ada] Minor tweak to output of -gnatR
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 28 May 2018 08:53:13 +0000 (08:53 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 28 May 2018 08:53:13 +0000 (08:53 +0000)
This changes the output of -gnatR for extensions of tagged record types to
avoid displaying the internal _Parent component, which overlaps with other
components and is thus more confusing than helpful.

For the following hierarchy:

  type R1 is tagged record
    I : Integer;
  end record;

  type R2 is new R1 with record
    C : Character;
  end record;

the output -gnatR must now be:

for R1'Object_Size use 128;
for R1'Value_Size use 96;
for R1'Alignment use 8;
for R1 use record
   _Tag at 0 range  0 .. 63;
   I    at 8 range  0 .. 31;
end record;

for R2'Object_Size use 192;
for R2'Value_Size use 136;
for R2'Alignment use 8;
for R2 use record
   _Tag at  0 range  0 .. 63;
   I    at  8 range  0 .. 31;
   C    at 16 range  0 ..  7;
end record;

2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* repinfo.adb (Compute_Max_Length): Skip _Parent component.
(List_Record_Layout): Likewise.

From-SVN: r260819

gcc/ada/ChangeLog
gcc/ada/repinfo.adb

index 6f08ad2efff0ee57a5ef2d3414f06808bb9c886b..bea321400f35b386012595e26ec2dce26ce35646 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * repinfo.adb (Compute_Max_Length): Skip _Parent component.
+       (List_Record_Layout): Likewise.
+
 2018-05-28  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_util.adb (Is_Function_Result): Add a warning if a postcondition
index 07c034bf77c3f5373f1a2e1606c84e131feec3af..38b2334b3de984829e4b774431c42e19634a7bb6 100644 (file)
@@ -915,6 +915,12 @@ package body Repinfo is
                goto Continue;
             end if;
 
+            --  Skip _Parent component in extension (to avoid overlap)
+
+            if Chars (Comp) = Name_uParent then
+               goto Continue;
+            end if;
+
             --  All other cases
 
             declare
@@ -1010,6 +1016,12 @@ package body Repinfo is
                goto Continue;
             end if;
 
+            --  Skip _Parent component in extension (to avoid overlap)
+
+            if Chars (Comp) = Name_uParent then
+               goto Continue;
+            end if;
+
             --  All other cases
 
             declare