This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Fix irregular output with -gnatRm


The information displayed by -gnatRm was using slightly different naming
and formatting conventions than the rest of the -gnatR information with
no justification, so this adjusts it for the sake of consistency.

For the following package:

package P is

  function F (I : Integer) return Integer;

  type Rec is limited record
    I : Integer;
  end record;

  procedure P1 (R : Rec; I : out Integer);

  procedure P2 (R : Rec; I : out Integer);
  pragma Linker_Section (P2, ".my_section");

  package Inner is

    procedure P3;

  end Inner;

end P;

package body P is

  function F (I : Integer) return Integer is
  begin
    return I;
  end;

  procedure P1 (R : Rec; I : out Integer) is
  begin
    I := R.I;
  end;

  procedure P2 (R : Rec; I : out Integer) is
  begin
    I := R.I;
  end;

  package body Inner is

     procedure P3 is
     begin
       null;
     end;

  end Inner;

end P;

the output of -gnatRm must be:

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

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

function F declared at p7.ads:3:12
convention : Ada
   I : passed by copy
returns by copy

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

procedure P1 declared at p7.ads:9:13
convention : Ada
   R : passed by reference
   I : passed by copy

procedure P2 declared at p7.ads:11:13
convention : Ada
   R : passed by reference
   I : passed by copy
pragma Linker_Section (P2, ".my_section");

procedure Inner.P3 declared at p7.ads:16:15
convention : Ada

Tested on x86_64-pc-linux-gnu, committed on trunk

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

gcc/ada/

	* repinfo.adb (List_Entities): Do not list the Linker_Section for
	subprograms here...
	(List_Mechanisms): ...but here instead.  Use consistent name output
	and formatting conventions.
--- gcc/ada/repinfo.adb
+++ gcc/ada/repinfo.adb
@@ -393,8 +393,6 @@ package body Repinfo is
               or else Debug_Flag_AA
             then
                if Is_Subprogram (E) then
-                  List_Linker_Section (E);
-
                   if List_Representation_Info_Mechanisms then
                      List_Mechanisms (E);
                   end if;
@@ -746,13 +744,12 @@ package body Repinfo is
             raise Program_Error;
       end case;
 
-      Get_Unqualified_Decoded_Name_String (Chars (Ent));
-      Write_Str (Name_Buffer (1 .. Name_Len));
+      List_Name (Ent);
       Write_Str (" declared at ");
       Write_Location (Sloc (Ent));
       Write_Eol;
 
-      Write_Str ("  convention : ");
+      Write_Str ("convention : ");
 
       case Convention (Ent) is
          when Convention_Ada =>
@@ -814,12 +811,13 @@ package body Repinfo is
       Form := First_Formal (Ent);
       while Present (Form) loop
          Get_Unqualified_Decoded_Name_String (Chars (Form));
+         Set_Casing (Unit_Casing);
          while Name_Len <= Plen loop
             Name_Len := Name_Len + 1;
             Name_Buffer (Name_Len) := ' ';
          end loop;
 
-         Write_Str ("  ");
+         Write_Str ("   ");
          Write_Str (Name_Buffer (1 .. Plen + 1));
          Write_Str (": passed by ");
 
@@ -829,10 +827,14 @@ package body Repinfo is
       end loop;
 
       if Etype (Ent) /= Standard_Void_Type then
-         Write_Str ("  returns by ");
+         Write_Str ("returns by ");
          Write_Mechanism (Mechanism (Ent));
          Write_Eol;
       end if;
+
+      if not Is_Entry (Ent) then
+         List_Linker_Section (Ent);
+      end if;
    end List_Mechanisms;
 
    ---------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]