aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_util.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-05-21 12:48:37 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2014-05-21 12:48:37 +0200
commit2735b82d096137ab53517510fd3669e60a663915 (patch)
tree2b61dc53cf097856ce13cbea844e143b7a52001a /gcc/ada/sem_util.adb
parent149604e46a31c3f1a22194e61ba3a0f01903de03 (diff)
downloadgcc-2735b82d096137ab53517510fd3669e60a663915.zip
gcc-2735b82d096137ab53517510fd3669e60a663915.tar.gz
gcc-2735b82d096137ab53517510fd3669e60a663915.tar.bz2
[multiple changes]
2014-05-21 Robert Dewar <dewar@adacore.com> * einfo.ads: Minor reformatting. * ceinfo.adb: Deal with slight format change of einfo.ads. 2014-05-21 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Analyze_Part_Of): Further work on the proper implementation of the SPARK 2014 rule concerning private child units (LRM 7.2.6). 2014-05-21 Vincent Celier <celier@adacore.com> * makeusg.adb: Add switch -d to usage. 2014-05-21 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Find_Actual): If an actual that is the prefix of an enclosing prefixed call has been rewritten, use Nkind and Sloc to identify the corresponding formal, when handling deferred references. 2014-05-21 Robert Dewar <dewar@adacore.com> * debug.adb: Document -gnatd.z switch. * sem_eval.adb (Why_Non_Static): Test -gnatd.z switch. From-SVN: r210689
Diffstat (limited to 'gcc/ada/sem_util.adb')
-rw-r--r--gcc/ada/sem_util.adb10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 6894a3a..a981960 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -5518,6 +5518,16 @@ package body Sem_Util is
while Present (Formal) and then Present (Actual) loop
if Actual = N then
return;
+
+ -- An actual that is the prefix in a prefixed call may have
+ -- been rewritten in the call, after the deferred reference
+ -- was collected. Check if sloc and kinds match.
+
+ elsif Sloc (Actual) = Sloc (N)
+ and then Nkind (Actual) = Nkind (N)
+ then
+ return;
+
else
Actual := Next_Actual (Actual);
Formal := Next_Formal (Formal);