diff options
author | Richard Kenner <kenner@adacore.com> | 2020-02-17 18:17:58 -0500 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-08 03:51:06 -0400 |
commit | 8b0ec65d852c11fde3937629d10c6b24083b5737 (patch) | |
tree | 35f6e345c6a749a054e97696911c58c11b24a843 /gcc | |
parent | 24eda9e701253cc482c0c70a102fcad103aa1591 (diff) | |
download | gcc-8b0ec65d852c11fde3937629d10c6b24083b5737.zip gcc-8b0ec65d852c11fde3937629d10c6b24083b5737.tar.gz gcc-8b0ec65d852c11fde3937629d10c6b24083b5737.tar.bz2 |
[Ada] Issue with unnesting of 'First/Last and renaming
2020-06-08 Richard Kenner <kenner@adacore.com>
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/exp_unst.adb | 27 |
1 files changed, 16 insertions, 11 deletions
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; |