diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2018-05-24 13:04:24 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-05-24 13:04:24 +0000 |
commit | 7dcac7d1468a3b5b69f5a04d2ca0919b515fddba (patch) | |
tree | c89008dcaf0bbb3973a888a86bc8f877ba4baf12 /gcc/ada/ChangeLog | |
parent | 443ee9566b50a59f4e1a057ffdda8fba4002dde3 (diff) | |
download | gcc-7dcac7d1468a3b5b69f5a04d2ca0919b515fddba.zip gcc-7dcac7d1468a3b5b69f5a04d2ca0919b515fddba.tar.gz gcc-7dcac7d1468a3b5b69f5a04d2ca0919b515fddba.tar.bz2 |
[Ada] Crash on compilation unit instance
Do not generate a variable marker for a reference which appears within the
formal part of an instantiation which acts as a compilation unit because
there is no suitable insertion context.
------------
-- Source --
------------
-- gnat.adc
pragma SPARK_Mode (On);
-- gen.ads
generic
Val_1 : Integer;
Val_2 : Integer;
package Gen is
end Gen;
-- pack.ads
package Pack is
Val : Integer := 123;
function Get_Val return Integer;
end Pack;
-- inst.ads
with Gen;
with Pack; use Pack;
package Inst is new Gen (Val, Get_Val);
-- proc.adb
with Pack; use Pack;
procedure Proc (Val_1 : Integer := Val; Val_2 : Integer := Get_Val) is
begin null; end Proc;
-----------------
-- Compilation --
-----------------
$ gcc -c inst.ads
$ gcc -c inst.ads -gnatd.F
$ gcc -c proc.adb
$ gcc -c proc.adb -gnatd.F
2018-05-24 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* sem_elab.adb (Build_Variable_Reference_Marker): Do not create a
variable marker when the reference appears in the formal part of a
compilation unit instance because there is no place to insert it.
(In_Compilation_Instance_Formal_Part): New routine.
From-SVN: r260643
Diffstat (limited to 'gcc/ada/ChangeLog')
-rw-r--r-- | gcc/ada/ChangeLog | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c6ff690..8d4b0fc 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2018-05-24 Hristian Kirtchev <kirtchev@adacore.com> + + * sem_elab.adb (Build_Variable_Reference_Marker): Do not create a + variable marker when the reference appears in the formal part of a + compilation unit instance because there is no place to insert it. + (In_Compilation_Instance_Formal_Part): New routine. + 2018-05-24 Piotr Trojanek <trojanek@adacore.com> * layout.ads, repinfo.ads: Fix references to renamed Backend_Layout |