From: Richard Kenner Date: Mon, 17 Feb 2020 23:17:58 +0000 (-0500) Subject: [Ada] Issue with unnesting of 'First/Last and renaming X-Git-Tag: upstream/12.2.0~15906 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b0ec65d852c11fde3937629d10c6b24083b5737;p=platform%2Fupstream%2Fgcc.git [Ada] Issue with unnesting of 'First/Last and renaming 2020-06-08 Richard Kenner gcc/ada/ * exp_unst.adb (Visit_Node): When visiting array attribute nodes, in addition to checking the type of Get_Referenced_Object of the prefix, also check the actual type of the prefix. --- diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb index ade5fe0..953d449 100644 --- a/gcc/ada/exp_unst.adb +++ b/gcc/ada/exp_unst.adb @@ -1049,22 +1049,27 @@ package body Exp_Unst is -- from the (possibly) uplevel reference. We call -- Get_Referenced_Object to deal with prefixes that -- are object renamings (prefixes that are types - -- can be passed and will simply be returned). + -- can be passed and will simply be returned). But + -- it's also legal to get the bounds from the type + -- of the prefix, so we have to handle both cases. - if Is_Constrained + declare + DT : Boolean := False; + + begin + if Is_Constrained (Etype (Get_Referenced_Object (Prefix (N)))) - then - declare - DT : Boolean := False; - begin + then Check_Static_Type (Etype (Get_Referenced_Object (Prefix (N))), - Empty, - DT); - end; + Empty, DT); + end if; - return OK; - end if; + if Is_Constrained (Etype (Prefix (N))) then + Check_Static_Type + (Etype (Prefix (N)), Empty, DT); + end if; + end; when others => null;