aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2020-04-30 15:19:16 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-19 04:17:21 -0400
commita6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61 (patch)
treeede33d8a381941cab334e8a6d76b54e004ff87d6 /gcc
parent74d09f3ee936c7e08539beba6f5bb2547b4640b9 (diff)
downloadgcc-a6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61.zip
gcc-a6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61.tar.gz
gcc-a6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61.tar.bz2
[Ada] Spurious error on private type in ghost expression function
2020-06-19 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Expression_Function): Do not indicate that the function has a completion if it appears within a Ghost generic package.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_ch6.adb7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 59cbccd..69e21bb 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -499,9 +499,14 @@ package body Sem_Ch6 is
-- Within a generic preanalyze the original expression for name
-- capture. The body is also generated but plays no role in
-- this because it is not part of the original source.
+ -- If this is an ignored Ghost entity, analysis of the generated
+ -- body is needed to hide external references (as is done in
+ -- Analyze_Subprogram_Body) after which the the subprogram profile
+ -- can be frozen, which is needed to expand calls to such an ignored
+ -- Ghost subprogram.
if Inside_A_Generic then
- Set_Has_Completion (Def_Id);
+ Set_Has_Completion (Def_Id, not Is_Ignored_Ghost_Entity (Def_Id));
Push_Scope (Def_Id);
Install_Formals (Def_Id);
Preanalyze_Spec_Expression (Expr, Etype (Def_Id));