[Ada] Fix an ICE on instantiated subprogram with -gnatc
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 11 Dec 2018 11:09:41 +0000 (11:09 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 11 Dec 2018 11:09:41 +0000 (11:09 +0000)
The following should compile quietly:

$ gcc -c p-proc.ads -gnatc

procedure P.Proc is new G;

with Q;

package P is

  generic procedure G;

end P;

with System;
with Unchecked_Conversion;

package Q is

  generic package Inner_G is

    type T is access all Integer;

    function Cnv is new Unchecked_Conversion (System.Address, T);

  end Inner_G;

end Q;

2018-12-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/trans.c (elaborate_all_entities_for_package):
Skip aliasing subprograms.

From-SVN: r266984

gcc/ada/ChangeLog
gcc/ada/gcc-interface/trans.c

index c162cac..5169d0a 100644 (file)
@@ -1,3 +1,8 @@
+2018-12-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (elaborate_all_entities_for_package):
+       Skip aliasing subprograms.
+
 2018-12-11  Bob Duff  <duff@adacore.com>
 
        * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric
index db9223e..5caba99 100644 (file)
@@ -9278,7 +9278,9 @@ elaborate_all_entities_for_package (Entity_Id gnat_package)
        continue;
       if (kind == E_Operator)
        continue;
-      if (IN (kind, Subprogram_Kind) && Is_Intrinsic_Subprogram (gnat_entity))
+      if (IN (kind, Subprogram_Kind)
+         && (Present (Alias (gnat_entity))
+             || Is_Intrinsic_Subprogram (gnat_entity)))
        continue;
       if (Is_Itype (gnat_entity))
        continue;