aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-08-21 08:30:58 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-08-21 08:30:58 +0000
commit3c488e6c8675f069c94567107f777f693671f7ed (patch)
tree59df0d123d5e527c37e3c3a5cd6c253c2057b68f
parentabdeafa67a8ec7c99830fd5039d38168abba52a9 (diff)
downloadgcc-3c488e6c8675f069c94567107f777f693671f7ed.zip
gcc-3c488e6c8675f069c94567107f777f693671f7ed.tar.gz
gcc-3c488e6c8675f069c94567107f777f693671f7ed.tar.bz2
[Ada] More complete information level for -gnatR4 output
This instructs -gnatR4 to also list the Etype of components in user-declared record types if it is compiler-generated, for example in: package P3 is type idx is range 1 .. 100; type Arr is array (Idx range <>) of Character; type Rec is record C : Arr (1 .. 5); end record; end P3; 2019-08-21 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the relevant flag on the component type here instead of... (List_Object_Info): Likewise for the object type. (List_Entities): ...here. In -gnatR4 mode, recurse into entities local to a record type. (List_Component_Layout): In -gnatR4 mode, mark the type as relevant. From-SVN: r274786
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/repinfo.adb42
2 files changed, 36 insertions, 16 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 62a06d6..a6508ae 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,13 @@
+2019-08-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
+ relevant flag on the component type here instead of...
+ (List_Object_Info): Likewise for the object type.
+ (List_Entities): ...here. In -gnatR4 mode, recurse into
+ entities local to a record type.
+ (List_Component_Layout): In -gnatR4 mode, mark the type as
+ relevant.
+
2019-08-21 Bob Duff <duff@adacore.com>
* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index 6318682..219fa3b 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -357,6 +357,14 @@ package body Repinfo is
Write_Eol;
Write_Line ("}");
end if;
+
+ -- The component type is relevant for an array
+
+ if List_Representation_Info = 4
+ and then Is_Itype (Component_Type (Base_Type (Ent)))
+ then
+ Relevant_Entities.Set (Component_Type (Base_Type (Ent)), True);
+ end if;
end List_Array_Info;
---------------------------
@@ -539,20 +547,17 @@ package body Repinfo is
List_Record_Info (E, Bytes_Big_Endian);
end if;
+ -- Recurse into entities local to a record type
+
+ if List_Representation_Info = 4 then
+ List_Entities (E, Bytes_Big_Endian, False);
+ end if;
+
elsif Is_Array_Type (E) then
if List_Representation_Info >= 1 then
List_Array_Info (E, Bytes_Big_Endian);
end if;
- -- The component type is relevant for an array
-
- if List_Representation_Info = 4
- and then Is_Itype (Component_Type (Base_Type (E)))
- then
- Relevant_Entities.Set
- (Component_Type (Base_Type (E)), True);
- end if;
-
elsif Is_Type (E) then
if List_Representation_Info >= 2 then
List_Type_Info (E);
@@ -564,13 +569,6 @@ package body Repinfo is
E_Loop_Parameter,
E_Variable)
then
- -- The type is relevant for an object
-
- if List_Representation_Info = 4 and then Is_Itype (Etype (E))
- then
- Relevant_Entities.Set (Etype (E), True);
- end if;
-
if List_Representation_Info >= 2 then
List_Object_Info (E);
end if;
@@ -975,6 +973,12 @@ package body Repinfo is
List_Linker_Section (Ent);
end if;
+
+ -- The type is relevant for an object
+
+ if List_Representation_Info = 4 and then Is_Itype (Etype (Ent)) then
+ Relevant_Entities.Set (Etype (Ent), True);
+ end if;
end List_Object_Info;
----------------------
@@ -1283,6 +1287,12 @@ package body Repinfo is
else
Write_Line (";");
end if;
+
+ -- The type is relevant for a component
+
+ if List_Representation_Info = 4 and then Is_Itype (Etype (Ent)) then
+ Relevant_Entities.Set (Etype (Ent), True);
+ end if;
end List_Component_Layout;
------------------------