aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@adacore.com>2020-02-17 18:17:58 -0500
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-08 03:51:06 -0400
commit8b0ec65d852c11fde3937629d10c6b24083b5737 (patch)
tree35f6e345c6a749a054e97696911c58c11b24a843 /gcc
parent24eda9e701253cc482c0c70a102fcad103aa1591 (diff)
downloadgcc-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.adb27
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;