aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2014-08-01 13:35:22 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 15:35:22 +0200
commitecda544d41f26433d80a0632c09dec07fd2a8dfd (patch)
tree3360a0e17b2a6d4ffedf6b663736d7e8701f53fe
parent10671e7affbf700ea0b10baa77901f0cf2b8e9ad (diff)
downloadgcc-ecda544d41f26433d80a0632c09dec07fd2a8dfd.zip
gcc-ecda544d41f26433d80a0632c09dec07fd2a8dfd.tar.gz
gcc-ecda544d41f26433d80a0632c09dec07fd2a8dfd.tar.bz2
sem_res.adb (Resolve_Entry_Call): When an entry has preconditions...
2014-08-01 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Entry_Call): When an entry has preconditions, the entry call is wrapped in a procedure call that incorporates the precondition checks. To prevent a double expansion, with possible duplication of extra formals, that procedure call must only be pre-analyzed and resolved. Expansion takes place upon return to the caller Resolve_Call. From-SVN: r213461
-rw-r--r--gcc/ada/ChangeLog9
-rw-r--r--gcc/ada/sem_res.adb6
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f829f84..e4a89b1 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,12 @@
+2014-08-01 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_res.adb (Resolve_Entry_Call): When an entry has
+ preconditions, the entry call is wrapped in a procedure call
+ that incorporates the precondition checks. To prevent a double
+ expansion, with possible duplication of extra formals, that
+ procedure call must only be pre-analyzed and resolved. Expansion
+ takes place upon return to the caller Resolve_Call.
+
2014-08-01 Hristian Kirtchev <kirtchev@adacore.com>
* sem_res.adb (Resolve_Call): Do not perform
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 034ca58..92c8bfa 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -7176,7 +7176,11 @@ package body Sem_Res is
New_Occurrence_Of (PPC_Wrapper (Nam), Loc),
Parameter_Associations => New_Actuals);
Rewrite (N, New_Call);
- Analyze_And_Resolve (N);
+
+ -- Preanalyze and resolve new call. Current procedure is called
+ -- from Resolve_Call, after which expansion will take place.
+
+ Preanalyze_And_Resolve (N);
return;
end;
end if;