From: Ed Schonberg Date: Wed, 6 Aug 2008 08:52:36 +0000 (+0200) Subject: sem_res.adb (Resolve_Call): Use base type to determine whether a dereference is neede... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c9b9957118ebcb122ffeef1b73184e5b8736b2ef;p=gcc.git sem_res.adb (Resolve_Call): Use base type to determine whether a dereference is needed because a subtype of... 2008-08-06 Ed Schonberg * sem_res.adb (Resolve_Call): Use base type to determine whether a dereference is needed because a subtype of an access_to_subprogram is simply an access-subtype From-SVN: r138779 --- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index b0d46ae72b0..d2e74c27dd6 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -4696,14 +4696,15 @@ package body Sem_Res is end loop; end if; - if Ekind (Etype (Nam)) = E_Access_Subprogram_Type - and then Ekind (Typ) /= E_Access_Subprogram_Type + if Is_Access_Subprogram_Type (Base_Type (Etype (Nam))) + and then not Is_Access_Subprogram_Type (Base_Type (Typ)) and then Nkind (Subp) /= N_Explicit_Dereference and then Present (Parameter_Associations (N)) then -- The prefix is a parameterless function call that returns an -- access to subprogram. If parameters are present in the current - -- call add an explicit dereference. + -- call add an explicit dereference. We use the base type here + -- because within an instance these may be subtypes. -- The dereference is added either in Analyze_Call or here. Should -- be consolidated ???