[Ada] More complete information level for -gnatR output
This adds a 4th information level for the -gnatR output, where relevant
compiler-generated types are listed in addition to the information
already output by -gnatR3.
For the following package P:
package P is
type Arr0 is array (Positive range <>) of Boolean;
type Rec (D1 : Positive; D2 : Boolean) is record
C1 : Integer;
C2 : Arr0 (1 .. D1);
case D2 is
when False =>
C3 : Character;
when True =>
C4 : String (1 .. 3);
C5 : Float;
end case;
end record;
type Arr1 is array (1 .. 8) of Rec (1, True);
end P;
the output generated by -gnatR4 must be:
Representation information for unit P (spec)
--------------------------------------------
for Arr0'Alignment use 1;
for Arr0'Component_Size use 8;
for Rec'Object_Size use
17179869344;
for Rec'Value_Size use (if (#2 != 0) then ((((#1 + 15) & -4) + 8) * 8)
else ((((#1 + 15) & -4) + 1) * 8) end);
for Rec'Alignment use 4;
for Rec use record
D1 at 0 range 0 .. 31;
D2 at 4 range 0 .. 7;
C1 at 8 range 0 .. 31;
C2 at 12 range 0 .. ((#1 * 8)) - 1;
C3 at ((#1 + 15) & -4) range 0 .. 7;
C4 at ((#1 + 15) & -4) range 0 .. 23;
C5 at (((#1 + 15) & -4) + 4) range 0 .. 31;
end record;
for Arr1'Size use 1536;
for Arr1'Alignment use 4;
for Arr1'Component_Size use 192;
for Tarr1c'Size use 192;
for Tarr1c'Alignment use 4;
for Tarr1c use record
D1 at 0 range 0 .. 31;
D2 at 4 range 0 .. 7;
C1 at 8 range 0 .. 31;
C2 at 12 range 0 .. 7;
C4 at 16 range 0 .. 23;
C5 at 20 range 0 .. 31;
end record;
2018-11-14 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* doc/gnat_ugn/building_executable_programs_with_gnat.rst
(-gnatR): Document new -gnatR4 level.
* gnat_ugn.texi: Regenerate.
* opt.ads (List_Representation_Info): Bump upper bound to 4.
* repinfo.adb: Add with clause for GNAT.HTable.
(Relevant_Entities_Size): New constant.
(Entity_Header_Num): New type.
(Entity_Hash): New function.
(Relevant_Entities): New set implemented with GNAT.HTable.
(List_Entities): Also list compiled-generated entities present
in the Relevant_Entities set. Consider that the Component_Type
of an array type is relevant.
(List_Rep_Info): Reset Relevant_Entities for each unit.
* switch-c.adb (Scan_Front_End_Switches): Add support for -gnatR4.
* switch-m.adb (Normalize_Compiler_Switches): Likewise
* usage.adb (Usage): Likewise.
From-SVN: r266131