exp_ch9.adb (Is_Pure_Barrier): Create function Is_Count_Attribute to identify an expansion of the 'Count attribute.

2017-01-19  Justin Squirek  <squirek@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Create function
	Is_Count_Attribute to identify an expansion of the 'Count
	attribute.

From-SVN: r244631
This commit is contained in:
Justin Squirek 2017-01-19 13:10:58 +00:00 committed by Arnaud Charlet
parent 6b1d241377
commit 58d27da930
2 changed files with 36 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-01-19 Justin Squirek <squirek@adacore.com>
* exp_ch9.adb (Is_Pure_Barrier): Create function
Is_Count_Attribute to identify an expansion of the 'Count
attribute.
2017-01-19 Pierre-Marie de Rodat <derodat@adacore.com>
* exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.

View File

@ -6025,6 +6025,25 @@ package body Exp_Ch9 is
---------------------
function Is_Pure_Barrier (N : Node_Id) return Traverse_Result is
function Is_Count_Attribute (N : Node_Id) return Boolean;
-- Check whether N is part of an expansion of the Count attribute.
-- Return True if N represents the expanded function call.
------------------------
-- Is_Count_Attribute --
------------------------
function Is_Count_Attribute (N : Node_Id) return Boolean is
begin
return
Nkind (N) = N_Function_Call
and then Present (Original_Node (N))
and then Nkind (Original_Node (N)) = N_Attribute_Reference
and then Attribute_Name (Original_Node (N)) = Name_Count;
end Is_Count_Attribute;
-- Start of processing for Is_Pure_Barrier
begin
case Nkind (N) is
when N_Expanded_Name
@ -6034,6 +6053,12 @@ package body Exp_Ch9 is
return Abandon;
end if;
if Present (Parent (N))
and then Is_Count_Attribute (Parent (N))
then
return OK;
end if;
case Ekind (Entity (N)) is
when E_Constant
| E_Discriminant
@ -6057,6 +6082,11 @@ package body Exp_Ch9 is
null;
end case;
when N_Function_Call =>
if Is_Count_Attribute (N) then
return OK;
end if;
when N_Character_Literal
| N_Integer_Literal
| N_Real_Literal