mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
6b1d241377
commit
58d27da930
|
|
@ -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>
|
2017-01-19 Pierre-Marie de Rodat <derodat@adacore.com>
|
||||||
|
|
||||||
* exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.
|
* exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.
|
||||||
|
|
|
||||||
|
|
@ -6025,6 +6025,25 @@ package body Exp_Ch9 is
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
function Is_Pure_Barrier (N : Node_Id) return Traverse_Result 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
|
begin
|
||||||
case Nkind (N) is
|
case Nkind (N) is
|
||||||
when N_Expanded_Name
|
when N_Expanded_Name
|
||||||
|
|
@ -6034,6 +6053,12 @@ package body Exp_Ch9 is
|
||||||
return Abandon;
|
return Abandon;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
if Present (Parent (N))
|
||||||
|
and then Is_Count_Attribute (Parent (N))
|
||||||
|
then
|
||||||
|
return OK;
|
||||||
|
end if;
|
||||||
|
|
||||||
case Ekind (Entity (N)) is
|
case Ekind (Entity (N)) is
|
||||||
when E_Constant
|
when E_Constant
|
||||||
| E_Discriminant
|
| E_Discriminant
|
||||||
|
|
@ -6057,6 +6082,11 @@ package body Exp_Ch9 is
|
||||||
null;
|
null;
|
||||||
end case;
|
end case;
|
||||||
|
|
||||||
|
when N_Function_Call =>
|
||||||
|
if Is_Count_Attribute (N) then
|
||||||
|
return OK;
|
||||||
|
end if;
|
||||||
|
|
||||||
when N_Character_Literal
|
when N_Character_Literal
|
||||||
| N_Integer_Literal
|
| N_Integer_Literal
|
||||||
| N_Real_Literal
|
| N_Real_Literal
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue