diff options
-rw-r--r-- | gcc/ada/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 6 |
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; |