From 1a3680ffe365ee5bf3cf8faf77ca79dca24c8634 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Sun, 5 Apr 2020 17:07:00 +0200 Subject: [PATCH] [Ada] Force evaluation of qualified aggregates 2020-06-16 Piotr Trojanek gcc/ada/ * exp_util.adb (Evaluate_Name): Force evaluation of aggregates; recursively evaluate expression of a qualified expression; fix location of the comment for an attribute referenced and an indexed component. --- gcc/ada/exp_util.adb | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 47b4354a41a..d48db565b07 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -4918,11 +4918,16 @@ package body Exp_Util is procedure Evaluate_Name (Nam : Node_Id) is begin - -- For an attribute reference or an indexed component, evaluate the - -- prefix, which is itself a name, recursively, and then force the - -- evaluation of all the subscripts (or attribute expressions). - case Nkind (Nam) is + -- For an aggregate, force its evaluation + + when N_Aggregate => + Force_Evaluation (Nam); + + -- For an attribute reference or an indexed component, evaluate the + -- prefix, which is itself a name, recursively, and then force the + -- evaluation of all the subscripts (or attribute expressions). + when N_Attribute_Reference | N_Indexed_Component => @@ -4960,16 +4965,10 @@ package body Exp_Util is => Force_Evaluation (Nam); - -- For a qualified expression, we evaluate the underlying object - -- name if any, otherwise we force the evaluation of the underlying - -- expression. + -- For a qualified expression, we evaluate the expression when N_Qualified_Expression => - if Is_Object_Reference (Expression (Nam)) then - Evaluate_Name (Expression (Nam)); - else - Force_Evaluation (Expression (Nam)); - end if; + Evaluate_Name (Expression (Nam)); -- For a selected component, we simply evaluate the prefix -- 2.30.2