[Ada] Fix irregular output with -gnatRm
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 29 May 2018 09:29:28 +0000 (09:29 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 29 May 2018 09:29:28 +0000 (09:29 +0000)
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

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.

From-SVN: r260861

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

index b0bf034dee03dab54338d9bacd40aa55e9733c17..809d468ebb74493b32e6b457524eca3273e7b922 100644 (file)
@@ -1,3 +1,10 @@
+2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * 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.
+
 2018-05-29  Bob Duff  <duff@adacore.com>
 
        * lib-writ.adb (Write_ALI): Cleanup: avoid use of global var; call new
index d19ab0f7233448a0e8bb195a01f7651ddbd74943..3b79aa139dbe398f9252830eb2ad8428c1fb7a43 100644 (file)
@@ -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;
 
    ---------------