aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2020-04-16 13:59:53 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-18 05:08:22 -0400
commita9fb2055f3a7a05e493bbb614aca5ed3a19b80d2 (patch)
tree641287ae9c3aeb36807ed923b6b158f3e6344364 /gcc/ada
parentc94bbfbe57de7eccec1f3b2fe0da594014ac6088 (diff)
downloadgcc-a9fb2055f3a7a05e493bbb614aca5ed3a19b80d2.zip
gcc-a9fb2055f3a7a05e493bbb614aca5ed3a19b80d2.tar.gz
gcc-a9fb2055f3a7a05e493bbb614aca5ed3a19b80d2.tar.bz2
[Ada] Fix failed assertion on a slice indexed by a subtype_indication
2020-06-18 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb (Generate_Index_Checks): Handle N_Subtype_Indication returned from Scalar_Range.
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/checks.adb4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 51b73f9..7b8ca97 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -6842,6 +6842,10 @@ package body Checks is
elsif Nkind_In (A_Idx, N_Identifier, N_Expanded_Name) then
A_Range := Scalar_Range (Entity (A_Idx));
+ if Nkind (A_Range) = N_Subtype_Indication then
+ A_Range := Range_Expression (Constraint (A_Range));
+ end if;
+
else pragma Assert (Nkind (A_Idx) = N_Subtype_Indication);
A_Range := Range_Expression (Constraint (A_Idx));
end if;