[Ada] Plug small hole in -gnatR output
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 29 May 2018 09:42:16 +0000 (09:42 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 29 May 2018 09:42:16 +0000 (09:42 +0000)
The -gnatR switch outputs representation information for locally-defined
types but it was skipping those defined in blocks without label, unlike
those defined in named blocks.  This change plugs this small hole.

The following procedure:

procedure P is
begin
  declare
    type R is record
      I : Integer;
    end record;
  begin
    null;
  end;
end;

must now generate the following output with -gnatR:

Representation information for unit P (body)
--------------------------------------------

for B_1.R'Size use 32;
for B_1.R'Alignment use 4;
for B_1.R use record
   I at 0 range  0 .. 31;
end record;

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

gcc/ada/

* repinfo.adb (List_Entities): Also recurse into blocks without label.

From-SVN: r260884

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

index fecd0f16b48c564ed6694e1ed27564cc5e6412c0..0d478b01bb1d179295591eec278f7d7a8528315e 100644 (file)
@@ -1,3 +1,7 @@
+2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * repinfo.adb (List_Entities): Also recurse into blocks without label.
+
 2018-05-29  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_ch6.adb (Expand_N_Subprogram_Body): Do not generate push/pop for
index 1a85c8ff90eaba77e8b63da8c8ca7c1b45cec016..a88a3f248a3ddb0f61866f7597dc5b978d582d8e 100644 (file)
@@ -408,7 +408,12 @@ package body Repinfo is
             --  info for the full view). If debug flag A is set, then all
             --  entities are listed
 
-            if (Comes_From_Source (E)
+            if ((Comes_From_Source (E)
+                   or else (Ekind (E) = E_Block
+                              and then
+                            Nkind (Parent (E)) = N_Implicit_Label_Declaration
+                              and then
+                            Comes_From_Source (Label_Construct (Parent (E)))))
               and then not Is_Incomplete_Or_Private_Type (E)
               and then not (Ekind (E) = E_Constant
                               and then Present (Full_View (E))))