]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Add Entry_Cancel_Parameter to E_Label
authorBob Duff <duff@adacore.com>
Thu, 2 Mar 2023 15:12:29 +0000 (10:12 -0500)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 25 May 2023 07:44:15 +0000 (09:44 +0200)
...and other (minor) changes.

gcc/ada/

* gen_il-gen-gen_entities.adb (E_Label): Add
Entry_Cancel_Parameter. This is necessary because
Analyze_Implicit_Label_Declaration set the Ekind to E_Label.
Without this change, this field would fail the vanishing-fields
check in Atree (which is currently commented out).
* einfo.ads (Entry_Cancel_Parameter): Document for E_Label.
* sem_eval.adb (Why_Not_Static): Protect against previous errors
(no need to explain why something is not static if it's already
illegal for other reasons).
* sem_util.ads (Enter_Name): Fix misleading comment.

gcc/ada/einfo.ads
gcc/ada/gen_il-gen-gen_entities.adb
gcc/ada/sem_eval.adb
gcc/ada/sem_util.ads

index b39cffd172c64a43e263ff9fec8184bc0f7a3e19..7dc2bd178ccc01b28ec32022bc3643bb308de617 100644 (file)
@@ -1131,6 +1131,8 @@ package Einfo is
 --       object for task entry calls and a Communications_Block object
 --       in the case of protected entry calls. In both cases the objects
 --       are declared in outer scopes to this block.
+--       This is also defined in labels, because we temporarily set the
+--       Ekind of an E_Block to E_Label in Analyze_Implicit_Label_Declaration.
 
 --    Entry_Component
 --       Defined in formal parameters (in, in out and out parameters). Used
@@ -5660,6 +5662,7 @@ package Einfo is
    --  E_Label
    --    Renamed_Object $$$
    --    Renamed_Entity $$$
+   --    Entry_Cancel_Parameter
    --    Enclosing_Scope
    --    Reachable
 
index ebc0f204b0372f16b077f9b3b02fdc463ed4acf6..67efc5d0f9a7c1788e603b5408e30d0734e40963 100644 (file)
@@ -1224,6 +1224,7 @@ begin -- Gen_IL.Gen.Gen_Entities
        --  implicit label declaration, not the occurrence of the label itself,
        --  which is simply a direct name referring to the label.
        (Sm (Enclosing_Scope, Node_Id),
+        Sm (Entry_Cancel_Parameter, Node_Id),
         Sm (Reachable, Flag),
         Sm (Renamed_Or_Alias, Node_Id)));
 
index e54f4a637e23a924b07482790bfd051453b8d77d..905e7ff55b7c50b17e4f83fd54f09bc7e0ba7715 100644 (file)
@@ -7611,7 +7611,7 @@ package body Sem_Eval is
                Error_Msg_NE
                  ("!& is not a static subtype (RM 4.9(26))", N, E);
 
-            else
+            elsif E /= Any_Id then
                Error_Msg_NE
                  ("!& is not static constant or named number "
                   & "(RM 4.9(5))", N, E);
index 4028d370823c90818b4f89b05615428d24539260..4962c62fa7d722b2a91ee1b7f36d63b2b299abc2 100644 (file)
@@ -809,8 +809,10 @@ package Sem_Util is
    procedure Enter_Name (Def_Id : Entity_Id);
    --  Insert new name in symbol table of current scope with check for
    --  duplications (error message is issued if a conflict is found).
-   --  Note: Enter_Name is not used for overloadable entities, instead these
-   --  are entered using Sem_Ch6.Enter_Overloaded_Entity.
+   --  Note: Enter_Name is not used for most overloadable entities, instead
+   --  they are entered using Sem_Ch6.Enter_Overloaded_Entity. However,
+   --  this is used for SOME overloadable entities, such as enumeration
+   --  literals and certain operator symbols.
 
    function Entity_Of (N : Node_Id) return Entity_Id;
    --  Obtain the entity of arbitrary node N. If N is a renaming, return the