From ecda544d41f26433d80a0632c09dec07fd2a8dfd Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Fri, 1 Aug 2014 13:35:22 +0000 Subject: [PATCH] sem_res.adb (Resolve_Entry_Call): When an entry has preconditions... 2014-08-01 Ed Schonberg * 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 --- gcc/ada/ChangeLog | 9 +++++++++ gcc/ada/sem_res.adb | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f829f840596..e4a89b17dd3 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,12 @@ +2014-08-01 Ed Schonberg + + * 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 * sem_res.adb (Resolve_Call): Do not perform diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 034ca5865f4..92c8bfaa2ef 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; -- 2.30.2