From faa396c4eee228108802135f9aa0986254aca8e4 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 31 Jul 2021 11:02:47 -0400 Subject: [PATCH] [Ada] Add N_Has_Bounds and N_Is_Index gcc/ada/ * einfo-utils.adb (Next_Index): Verify input and output are N_Is_Index. * gen_il-gen-gen_nodes.adb (N_Has_Bounds, N_Is_Index): Add. * gen_il-types.ads (N_Has_Bounds, N_Is_Index): Likewise. * sem_ch3.adb (Array_Type_Declaration): Use Next, not Next_Index. * sem_ch12.adb (Formal_Dimensions): Likewise. * sem_util.adb (Is_Valid_Renaming): Likewise. --- gcc/ada/einfo-utils.adb | 2 ++ gcc/ada/gen_il-gen-gen_nodes.adb | 13 +++++++++++++ gcc/ada/gen_il-types.ads | 4 +++- gcc/ada/sem_ch12.adb | 2 +- gcc/ada/sem_ch3.adb | 2 +- gcc/ada/sem_util.adb | 2 +- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb index 23e93c989d02..c6c3277b3469 100644 --- a/gcc/ada/einfo-utils.adb +++ b/gcc/ada/einfo-utils.adb @@ -1976,6 +1976,8 @@ package body Einfo.Utils is function Next_Index (Id : Node_Id) return Node_Id is begin + pragma Assert (Nkind (Id) in N_Is_Index); + pragma Assert (No (Next (Id)) or else Nkind (Next (Id)) in N_Is_Index); return Next (Id); end Next_Index; diff --git a/gcc/ada/gen_il-gen-gen_nodes.adb b/gcc/ada/gen_il-gen-gen_nodes.adb index 55ba71d7efb1..43d77f2032f5 100644 --- a/gcc/ada/gen_il-gen-gen_nodes.adb +++ b/gcc/ada/gen_il-gen-gen_nodes.adb @@ -1649,4 +1649,17 @@ begin -- Gen_IL.Gen.Gen_Nodes N_Terminate_Alternative)); -- Nodes with condition fields (does not include N_Raise_xxx_Error) + Union (N_Has_Bounds, + Children => + (N_Range, + N_Real_Range_Specification, + N_Signed_Integer_Type_Definition)); + -- Nodes that have Low_Bound and High_Bound defined + + Union (N_Is_Index, + Children => + (N_Has_Bounds, + N_Has_Entity, + N_Subtype_Indication)); + -- Nodes that can be an index of an array end Gen_IL.Gen.Gen_Nodes; diff --git a/gcc/ada/gen_il-types.ads b/gcc/ada/gen_il-types.ads index 321eec6504c6..3df185de2b37 100644 --- a/gcc/ada/gen_il-types.ads +++ b/gcc/ada/gen_il-types.ads @@ -88,9 +88,12 @@ package Gen_IL.Types is N_Generic_Declaration, N_Generic_Instantiation, N_Generic_Renaming_Declaration, + N_Has_Bounds, N_Has_Chars, + N_Has_Condition, N_Has_Entity, N_Has_Etype, + N_Is_Index, N_Multiplying_Operator, N_Later_Decl_Item, N_Membership_Test, @@ -111,7 +114,6 @@ package Gen_IL.Types is N_Statement_Other_Than_Procedure_Call, N_Subprogram_Call, N_Subprogram_Instantiation, - N_Has_Condition, N_Subexpr, N_Subprogram_Specification, N_Unary_Op, diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index eca2abf3d939..e4cb7e3229c3 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -13047,7 +13047,7 @@ package body Sem_Ch12 is while Present (Index) loop Num := Num + 1; - Next_Index (Index); + Next (Index); end loop; return Num; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 677a9f595135..bf81f763faae 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -6254,7 +6254,7 @@ package body Sem_Ch3 is -- Move to next index - Next_Index (Index); + Next (Index); Nb_Index := Nb_Index + 1; end loop; diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index f5cf8342c1a1..de18f75f0215 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -7445,7 +7445,7 @@ package body Sem_Util is return False; end if; - Next_Index (Indx); + Next (Indx); end loop; end; -- 2.47.2