diff options
author | Richard Kenner <kenner@adacore.com> | 2021-07-31 11:02:47 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-09-23 13:06:16 +0000 |
commit | faa396c4eee228108802135f9aa0986254aca8e4 (patch) | |
tree | a723dad1c0d847ae4b411f4b2afb3ee591859760 | |
parent | ead89f5f1491c13025704d036223b257e00e89d3 (diff) | |
download | gcc-faa396c4eee228108802135f9aa0986254aca8e4.zip gcc-faa396c4eee228108802135f9aa0986254aca8e4.tar.gz gcc-faa396c4eee228108802135f9aa0986254aca8e4.tar.bz2 |
[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.
-rw-r--r-- | gcc/ada/einfo-utils.adb | 2 | ||||
-rw-r--r-- | gcc/ada/gen_il-gen-gen_nodes.adb | 13 | ||||
-rw-r--r-- | gcc/ada/gen_il-types.ads | 4 | ||||
-rw-r--r-- | gcc/ada/sem_ch12.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 2 | ||||
-rw-r--r-- | 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 23e93c9..c6c3277 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 55ba71d..43d77f2 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 321eec6..3df185d 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 eca2abf..e4cb7e3 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 677a9f5..bf81f76 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 f5cf834..de18f75 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; |