diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-12-11 11:09:41 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-12-11 11:09:41 +0000 |
commit | 56bad7dbfb28ef984d23ff9f69de5db431d02a15 (patch) | |
tree | 0ff7eb418285fe6af1d3921a51cbadc66c815f63 | |
parent | acbdd83d73ce56d1367581e1cbd78f85e9b4b0bf (diff) | |
download | gcc-56bad7dbfb28ef984d23ff9f69de5db431d02a15.zip gcc-56bad7dbfb28ef984d23ff9f69de5db431d02a15.tar.gz gcc-56bad7dbfb28ef984d23ff9f69de5db431d02a15.tar.bz2 |
[Ada] Fix an ICE on instantiated subprogram with -gnatc
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
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c162cac..5169d0a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -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 diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index db9223e..5caba99 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -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; |