From 97710dc73178bb3a45712d69c9dcefc66bc3fb5f Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Mon, 16 Jul 2018 14:10:08 +0000 Subject: [PATCH] [Ada] Fix expansion of 'Count in protected types 2018-07-16 Javier Miranda 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 | 6 ++++++ gcc/ada/exp_attr.adb | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index bcf226282c1..5e2ae1f23e0 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-07-16 Javier Miranda + + * 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 * sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 30d66057962..45c12bfa2fa 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -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); -- 2.30.2