From: Hristian Kirtchev Date: Thu, 11 Jan 2018 08:50:18 +0000 (+0000) Subject: [Ada] Inconsistent scope chain due to quantified expression X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=51f3e4e157dae1cded8f340f12859b237151fe74;p=gcc.git [Ada] Inconsistent scope chain due to quantified expression This patch corrects the minor decoration performed on invariant procedures in case the procedure is not inserted into the tree and analyzed. The decoration now constructs a proper first/next/last entity chain containing the single formal parameter which represents the object of the related type. The chain then ensures that any other entities generated by the [pre]analysis of the invariant expression will be properly added to the chain. The issue was discovered during the development of the GNATprove tool and is not visible to end users. No simple test is available because this would require a debug session. 2018-01-11 Hristian Kirtchev gcc/ada/ * exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last entity of the generated invariant procedure in order to construct a proper entity chain. From-SVN: r256483 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 88e6ed58c77..88e2ee24737 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-01-11 Hristian Kirtchev + + * exp_util.adb (Build_Invariant_Procedure_Declaration): Set the last + entity of the generated invariant procedure in order to construct a + proper entity chain. + 2018-01-11 Piotr Trojanek * sem_ch13.adb (Build_Predicate_Functions): Fix minor issues in diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index f768e201e93..9ccaa78bc5d 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -3466,6 +3466,7 @@ package body Exp_Util is Set_Scope (Obj_Id, Proc_Id); Set_First_Entity (Proc_Id, Obj_Id); + Set_Last_Entity (Proc_Id, Obj_Id); -- Generate: -- procedure [Partial_]Invariant (_object : );