From 1eba07db66478e11b3bed77a0f416c4fabd26f0b Mon Sep 17 00:00:00 2001 From: charlet Date: Thu, 10 Oct 2013 10:50:15 +0000 Subject: [PATCH] 2013-10-10 Ed Schonberg * sem_ch4.adb (Analyze_Selected_Component, Has_Mode_Conformant_Spec): If selected component may be an indexing of a parameterless call to a protected function, and expansion is disabled, this is a valid candidate interpretation. 2013-10-10 Arnaud Charlet * gnat_ugn.texi: Minor editing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203345 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 11 +++++++++++ gcc/ada/gnat_ugn.texi | 2 +- gcc/ada/sem_ch4.adb | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6f24bc6..cd6a678 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2013-10-10 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component, + Has_Mode_Conformant_Spec): If selected component may be an + indexing of a parameterless call to a protected function, and + expansion is disabled, this is a valid candidate interpretation. + +2013-10-10 Arnaud Charlet + + * gnat_ugn.texi: Minor editing. + 2013-10-10 Robert Dewar * gnatlink.adb: Minor reformatting. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 40ffc35..eebd799 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -241,7 +241,7 @@ By default, @value{EDITION} assumes Ada 2012, but you can override with a compiler switch (@pxref{Compiling Different Versions of Ada}) to explicitly specify the language version. Throughout this manual, references to ``Ada'' without a year suffix -apply to both all Ada 95/2005/2012 versions of the language. +apply to all Ada 95/2005/2012 versions of the language. @ifclear FSFEDITION For ease of exposition, ``@value{EDITION}'' will be referred to simply as diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index c4247cd..9fcd6ac 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -3962,10 +3962,25 @@ package body Sem_Ch4 is Next (Param); end loop; - -- One of the specs has additional formals + -- One of the specs has additional formals, there is no match, + -- unless this may be an indexing of a parameterless call. + + -- Note that when expansion is disabled, the corresponding record + -- type of synchronized types is not constructed, so that there is + -- no point is attempting an interpretation as a prefixed call, as + -- this is bound to fail because the primitive operations will not + -- be properly located. if Present (Comp_Param) or else Present (Param) then - return False; + if Needs_No_Actuals (Comp) + and then Is_Array_Type (Etype (Comp)) + and then not Expander_Active + then + return True; + + else + return False; + end if; end if; return True; -- 2.7.4