[Ada] Fix expansion of 'Count in protected types
authorJavier Miranda <miranda@adacore.com>
Mon, 16 Jul 2018 14:10:08 +0000 (14:10 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 16 Jul 2018 14:10:08 +0000 (14:10 +0000)
2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not
transform 'Count into a function call if the current scope has been
eliminated.

From-SVN: r262703

gcc/ada/ChangeLog
gcc/ada/exp_attr.adb

index bcf2262..5e2ae1f 100644 (file)
@@ -1,5 +1,11 @@
 2018-07-16  Javier Miranda  <miranda@adacore.com>
 
+       * exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not
+       transform 'Count into a function call if the current scope has been
+       eliminated.
+
+2018-07-16  Javier Miranda  <miranda@adacore.com>
+
        * sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the
        public part of this package.
 
index 30d6605..45c12bf 100644 (file)
@@ -3049,6 +3049,16 @@ package body Exp_Attr is
          --  Protected case
 
          if Is_Protected_Type (Conctyp) then
+
+            --  No need to transform 'Count into a function call if the current
+            --  scope has been eliminated. In this case such transformation is
+            --  also not viable because the enclosing protected object is not
+            --  available.
+
+            if Is_Eliminated (Current_Scope) then
+               return;
+            end if;
+
             case Corresponding_Runtime_Package (Conctyp) is
                when System_Tasking_Protected_Objects_Entries =>
                   Name := New_Occurrence_Of (RTE (RE_Protected_Count), Loc);