aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-05-29 09:42:16 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-29 09:42:16 +0000
commit944e24a31a9b3b3c4494853a8e2a2d589f65519f (patch)
tree32d0a4ddf43bc8f544bea46b9d63e629baa3c54e /gcc
parent3747db827dfedd0f91e08f74b4082da8c0b2df5e (diff)
downloadgcc-944e24a31a9b3b3c4494853a8e2a2d589f65519f.zip
gcc-944e24a31a9b3b3c4494853a8e2a2d589f65519f.tar.gz
gcc-944e24a31a9b3b3c4494853a8e2a2d589f65519f.tar.bz2
[Ada] Plug small hole in -gnatR output
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/repinfo.adb7
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index fecd0f1..0d478b0 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index 1a85c8f..a88a3f2 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -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))))