From: Ed Schonberg Date: Mon, 30 Mar 2020 12:26:27 +0000 (-0400) Subject: [Ada] Link failure with call to expression function in precondition X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9aa63bdded3b3aa7f4497cf5326e71fc03fda106;p=gcc.git [Ada] Link failure with call to expression function in precondition 2020-06-15 Ed Schonberg gcc/ada/ * freeze.adb (Freeze_Expression): When traversing the tree looking for the proper insertion point for the freeze node of an entity that is declared in an outer scope, set the candidate subprogram body node properly. Previous code has an off-by-one error. --- diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 760cf7c1d53..ea1274e7c77 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -7379,10 +7379,16 @@ package body Freeze is return; end if; - exit when - Nkind (Parent_P) = N_Subprogram_Body + -- If the parent is a subprogram body, the candidate insertion + -- point is just ahead of it. + + if Nkind (Parent_P) = N_Subprogram_Body and then Unique_Defining_Entity (Parent_P) = - Freeze_Outside_Subp; + Freeze_Outside_Subp + then + P := Parent_P; + exit; + end if; P := Parent_P; end loop;