diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2018-05-21 14:52:11 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-05-21 14:52:11 +0000 |
commit | 7a500fd767dd9f7afff999dd1d9c8bbb6dbef268 (patch) | |
tree | 2c1e0db9a2c40a807091e17cfed381bea58ab551 /gcc/ada/exp_cg.adb | |
parent | 516057d379930306bc240b7b2b4eedb2c9bb1aeb (diff) | |
download | gcc-7a500fd767dd9f7afff999dd1d9c8bbb6dbef268.tar.gz |
[Ada] Spurious error on early call region of tagged type
This patch corrects the part of the access-before-elaboration mechanism which
ensures that the freeze node of a tagged type is within the early call region
of all its overriding bodies to ignore predefined primitives.
------------
-- Source --
------------
-- pack.ads
package Pack with SPARK_Mode is
type Parent_Typ is tagged null record;
procedure Prim (Obj : Parent_Typ);
type Deriv_Typ is new Parent_Typ with private;
overriding procedure Prim (Obj : Deriv_Typ);
private
type Deriv_Typ is new Parent_Typ with null record;
end Pack;
-----------------
-- Compilation --
-----------------
$ gcc -c pack.ads
2018-05-21 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* exp_cg.adb: Remove with and use clause for Exp_Disp.
* exp_ch9.adb: Remove with and use clause for Exp_Disp.
* exp_disp.adb (Is_Predefined_Dispatching_Operation): Moved to Sem_Util.
(Is_Predefined_Interface_Primitive): Moved to Sem_Util.
(Is_Predefined_Internal_Operation): Moved to Sem_Util.
* exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved to Sem_Util.
(Is_Predefined_Interface_Primitive): Moved to Sem_Util.
(Is_Predefined_Internal_Operation): Moved to Sem_Util.
* exp_dist.adb: Remove with and use clause for Exp_Disp.
* freeze.adb: Remove with and use clause for Exp_Disp.
* sem_cat.adb: Remove with and use clause for Exp_Disp.
* sem_ch6.adb: Remove with and use clause for Exp_Disp.
* sem_ch12.adb: Remove with and use clause for Exp_Disp.
* sem_elab.adb (Check_Overriding_Primitive): Do not process predefined
primitives.
* sem_util.adb: Remove with and use clause for Exp_Disp.
(Is_Predefined_Dispatching_Operation): Moved from Exp_Disp.
(Is_Predefined_Interface_Primitive): Moved from Exp_Disp.
(Is_Predefined_Internal_Operation): Moved from Exp_Disp.
* sem_util.ads (Is_Predefined_Dispatching_Operation): Moved from
Exp_Disp.
(Is_Predefined_Interface_Primitive): Moved from Exp_Disp.
(Is_Predefined_Internal_Operation): Moved from Exp_Disp.
From-SVN: r260467
Diffstat (limited to 'gcc/ada/exp_cg.adb')
-rw-r--r-- | gcc/ada/exp_cg.adb | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/gcc/ada/exp_cg.adb b/gcc/ada/exp_cg.adb index 883b7a07201..00f029b10fd 100644 --- a/gcc/ada/exp_cg.adb +++ b/gcc/ada/exp_cg.adb @@ -26,7 +26,6 @@ with Atree; use Atree; with Einfo; use Einfo; with Elists; use Elists; -with Exp_Disp; use Exp_Disp; with Exp_Dbug; use Exp_Dbug; with Exp_Tss; use Exp_Tss; with Lib; use Lib; |