]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Skip subprogram body entities inside scopes
authorYannick Moy <moy@adacore.com>
Fri, 26 Apr 2024 15:02:52 +0000 (17:02 +0200)
committerMarc Poulhiès <poulhies@adacore.com>
Fri, 14 Jun 2024 07:34:51 +0000 (09:34 +0200)
Entities of kind E_Subprogram_Body, used on bodies of subprograms for
which there is a separate declaration, have been added in the entities
linked from a scope in order to get the representation information on
their enclosed object and type declarations. Skip these entities in gigi.

gcc/ada/

* gcc-interface/trans.cc (elaborate_all_entities_for_package)
(process_freeze_entity): Skip entities of kind E_Subprogram_Body.

gcc/ada/gcc-interface/trans.cc

index 5256095dfeb6e5a288f86164351cfa423aaed598..e68fb3fd7769c0d7ff33b70bb73ee41596c457e3 100644 (file)
@@ -9321,6 +9321,10 @@ elaborate_all_entities_for_package (Entity_Id gnat_package)
       if (kind == E_Package_Body)
        continue;
 
+      /* Skip subprogram bodies.  */
+      if (kind == E_Subprogram_Body)
+       continue;
+
       /* Skip limited views that point back to the main unit.  */
       if (IN (kind, Incomplete_Kind)
          && From_Limited_With (gnat_entity)
@@ -9427,6 +9431,10 @@ process_freeze_entity (Node_Id gnat_node)
   if (Is_Subprogram (gnat_entity) && Present (Interface_Alias (gnat_entity)))
     return;
 
+  /* Skip subprogram bodies.  */
+  if (kind == E_Subprogram_Body)
+    return;
+
   /* Check for an old definition if this isn't an object with address clause,
      since the saved GCC tree is the address expression in that case.  */
   gnu_old