diff options
Diffstat (limited to 'gcc/ada/einfo.adb')
-rw-r--r-- | gcc/ada/einfo.adb | 84 |
1 files changed, 70 insertions, 14 deletions
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb index 9612408..8c58323 100644 --- a/gcc/ada/einfo.adb +++ b/gcc/ada/einfo.adb @@ -459,6 +459,7 @@ package body Einfo is -- Has_Pragma_Ordered Flag198 -- Is_Ada_2012_Only Flag199 + -- Has_Delayed_Aspects Flag200 -- Has_Anon_Block_Suffix Flag201 -- Itype_Printed Flag202 -- Has_Pragma_Pure Flag203 @@ -510,8 +511,6 @@ package body Einfo is -- Is_Underlying_Record_View Flag246 -- OK_To_Rename Flag247 - -- (unused) Flag3 - -- (unused) Flag200 -- (unused) Flag232 -- (unused) Flag248 @@ -580,18 +579,6 @@ package body Einfo is return Flag104 (Id); end Address_Taken; - function Aft_Value (Id : E) return U is - Result : Nat := 1; - Delta_Val : Ureal := Delta_Value (Id); - begin - while Delta_Val < Ureal_Tenth loop - Delta_Val := Delta_Val * Ureal_10; - Result := Result + 1; - end loop; - - return UI_From_Int (Result); - end Aft_Value; - function Alias (Id : E) return E is begin pragma Assert @@ -1220,6 +1207,12 @@ package body Einfo is return Flag119 (Id); end Has_Convention_Pragma; + function Has_Delayed_Aspects (Id : E) return B is + begin + pragma Assert (Nkind (Id) in N_Entity); + return Flag200 (Id); + end Has_Delayed_Aspects; + function Has_Delayed_Freeze (Id : E) return B is begin pragma Assert (Nkind (Id) in N_Entity); @@ -3628,6 +3621,12 @@ package body Einfo is Set_Flag119 (Id, V); end Set_Has_Convention_Pragma; + procedure Set_Has_Delayed_Aspects (Id : E; V : B := True) is + begin + pragma Assert (Nkind (Id) in N_Entity); + Set_Flag200 (Id, V); + end Set_Has_Delayed_Aspects; + procedure Set_Has_Delayed_Freeze (Id : E; V : B := True) is begin pragma Assert (Nkind (Id) in N_Entity); @@ -5476,6 +5475,22 @@ package body Einfo is return Rep_Clause (Id, Name_Address); end Address_Clause; + --------------- + -- Aft_Value -- + --------------- + + function Aft_Value (Id : E) return U is + Result : Nat := 1; + Delta_Val : Ureal := Delta_Value (Id); + begin + while Delta_Val < Ureal_Tenth loop + Delta_Val := Delta_Val * Ureal_10; + Result := Result + 1; + end loop; + + return UI_From_Int (Result); + end Aft_Value; + ---------------------- -- Alignment_Clause -- ---------------------- @@ -5802,6 +5817,46 @@ package body Einfo is return Empty; end Get_Record_Representation_Clause; + ----------------------------- + -- Get_Rep_Item_For_Entity -- + ----------------------------- + + function Get_Rep_Item_For_Entity + (E : Entity_Id; + Nam : Name_Id) return Node_Id + is + N : Node_Id; + Arg : Node_Id; + + begin + N := First_Rep_Item (E); + while Present (N) loop + if Nkind (N) = N_Pragma and then Pragma_Name (N) = Nam then + Arg := Get_Pragma_Arg (First (Pragma_Argument_Associations (N))); + + if Is_Entity_Name (Arg) and then Entity (Arg) = E then + return N; + end if; + + elsif Nkind (N) = N_Attribute_Definition_Clause + and then Chars (N) = Nam + and then Entity (N) = E + then + return N; + + elsif Nkind (N) = N_Aspect_Specification + and then Chars (Identifier (N)) = Nam + and then Entity (N) = E + then + return N; + end if; + + Next_Rep_Item (N); + end loop; + + return Empty; + end Get_Rep_Item_For_Entity; + -------------------- -- Get_Rep_Pragma -- -------------------- @@ -6899,6 +6954,7 @@ package body Einfo is W ("Has_Controlled_Component", Flag43 (Id)); W ("Has_Controlling_Result", Flag98 (Id)); W ("Has_Convention_Pragma", Flag119 (Id)); + W ("Has_Delayed_Aspects", Flag200 (Id)); W ("Has_Delayed_Freeze", Flag18 (Id)); W ("Has_Discriminants", Flag5 (Id)); W ("Has_Enumeration_Rep_Clause", Flag66 (Id)); |