From df7507a6373cf54b43b8884a54cbc8e4c4ea03bf Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Sun, 5 Apr 2020 23:37:18 +0200 Subject: [PATCH] [Ada] Force evaluation of operator calls in renamings 2020-06-16 Piotr Trojanek gcc/ada/ * exp_util.adb (Evaluate_Name): Force evaluation of operators. --- gcc/ada/exp_util.adb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 471790e73ee..47b4354a41a 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -4953,9 +4953,11 @@ package body Exp_Util is when N_Explicit_Dereference => Force_Evaluation (Prefix (Nam)); - -- For a function call, we evaluate the call + -- For a function call, we evaluate the call; same for an operator - when N_Function_Call => + when N_Function_Call + | N_Op + => Force_Evaluation (Nam); -- For a qualified expression, we evaluate the underlying object @@ -4989,9 +4991,11 @@ package body Exp_Util is when N_Type_Conversion => Evaluate_Name (Expression (Nam)); - -- The remaining cases are direct name, operator symbol and character - -- literal. In all these cases, we do nothing, since we want to - -- reevaluate each time the renamed object is used. + -- The remaining cases are direct name and character literal. In all + -- these cases, we do nothing, since we want to reevaluate each time + -- the renamed object is used. ??? There are more remaining cases, at + -- least in the GNATprove_Mode, where this routine is called in more + -- contexts than in GNAT. when others => null; -- 2.30.2