[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 bcf226282c102dddde97d8873e81b2a7390f1a26..5e2ae1f23e0565f65c18c3b48ee8bd6566ac737b 100644 (file)
@@ -1,3 +1,9 @@
+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
index 30d66057962858d730da5619d8f670f1c8ee5c94..45c12bfa2faa354a09acbc41a334caa71b73a87f 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);