public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-2129] [Ada] Assertion errors on concurrent types with -gnatc and extensions enabled
@ 2021-07-07 16:26 Pierre-Marie de Rodat
  0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2021-07-07 16:26 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:2c03e97c5a50acc10fcb3545385fac4c1a9fa543

commit r12-2129-g2c03e97c5a50acc10fcb3545385fac4c1a9fa543
Author: Gary Dismukes <dismukes@adacore.com>
Date:   Fri May 21 13:59:30 2021 -0400

    [Ada] Assertion errors on concurrent types with -gnatc and extensions enabled
    
    gcc/ada/
    
            * einfo-utils.adb (Primitive_Operations): Default to returning
            Direct_Primitive_Operations in the case of concurrent types
            (when Corresponding_Record_Type not present).
            * sem_ch9.adb (Analyze_Protected_Type_Declaration): Initialize
            Direct_Primitive_Operations to an empty element list.
            (Analyze_Task_Type_Declaration): Initialize
            Direct_Primitive_Operations to an empty element list.

Diff:
---
 gcc/ada/einfo-utils.adb | 12 ++++++------
 gcc/ada/sem_ch9.adb     | 12 ++++++++++++
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb
index 22143d62aaa..b2d8a845022 100644
--- a/gcc/ada/einfo-utils.adb
+++ b/gcc/ada/einfo-utils.adb
@@ -2493,15 +2493,15 @@ package body Einfo.Utils is
             return Direct_Primitive_Operations
               (Corresponding_Record_Type (Id));
 
-         --  If expansion is disabled the corresponding record type is absent,
-         --  but if the type has ancestors it may have primitive operations.
-
-         elsif Is_Tagged_Type (Id) then
-            return Direct_Primitive_Operations (Id);
+         --  When expansion is disabled, the corresponding record type is
+         --  absent, but if this is a tagged type with ancestors, or if the
+         --  extension of prefixed calls for untagged types is enabled, then
+         --  it may have associated primitive operations.
 
          else
-            return No_Elist;
+            return Direct_Primitive_Operations (Id);
          end if;
+
       else
          return Direct_Primitive_Operations (Id);
       end if;
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index 969eff56e73..65f48a71b08 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -2031,6 +2031,12 @@ package body Sem_Ch9 is
       Set_Has_Delayed_Freeze (T);
       Set_Stored_Constraint  (T, No_Elist);
 
+      --  Initialize type's primitive operations list, for possible use when
+      --  the extension of prefixed call notation for untagged types is enabled
+      --  (such as by use of -gnatX).
+
+      Set_Direct_Primitive_Operations (T, New_Elmt_List);
+
       --  Mark this type as a protected type for the sake of restrictions,
       --  unless the protected type is declared in a private part of a package
       --  of the runtime. With this exception, the Suspension_Object from
@@ -3152,6 +3158,12 @@ package body Sem_Ch9 is
       Set_Has_Delayed_Freeze (T, True);
       Set_Stored_Constraint  (T, No_Elist);
 
+      --  Initialize type's primitive operations list, for possible use when
+      --  the extension of prefixed call notation for untagged types is enabled
+      --  (such as by use of -gnatX).
+
+      Set_Direct_Primitive_Operations (T, New_Elmt_List);
+
       --  Set the SPARK_Mode from the current context (may be overwritten later
       --  with an explicit pragma).


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-07 16:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-07 16:26 [gcc r12-2129] [Ada] Assertion errors on concurrent types with -gnatc and extensions enabled Pierre-Marie de Rodat

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).