exp_util.ads
36.7 KB
-
exp_ch9.ads, [...] (Build_Protected_Entry, [...]): Generate debug info for… · 65df5b71
exp_ch9.ads, [...] (Build_Protected_Entry, [...]): Generate debug info for declarations related to the handling of private data in... 2008-04-08 Hristian Kirtchev <kirtchev@adacore.com> Ed Schonberg <schonberg@adacore.com> Robert Dewar <dewar@adacore.com> Gary Dismukes <dismukes@adacore.com> * exp_ch9.ads, exp_ch9.adb (Build_Protected_Entry, Build_Unprotected_Subprogram_Body): Generate debug info for declarations related to the handling of private data in task and protected types. (Debug_Private_Data_Declarations): New subprogram. (Install_Private_Data_Declarations): Remove all debug info flagging. This is now done by Debug_Private_Data_Declarations at the correct stage of expansion. (Build_Simple_Entry_Call): If the task name is a function call, expand the prefix into an object declaration, and make the surrounding block a task master. (Build_Master_Entity): An internal block is a master if it wraps a call. Code reformatting, update comments. Code clean up. (Make_Task_Create_Call): Use 'Unrestricted_Access instead of 'Address. (Replicate_Entry_Formals): If the formal is an access parameter or anonymous access to subprogram, copy the original tree to create new entities for the formals of the subprogram. (Expand_N_Task_Type_Declaration): Create a Relative_Deadline variable for tasks to store the value passed using pragma Relative_Deadline. (Make_Task_Create_Call): Add the Relative_Deadline argument to the run-time call to create a task. (Build_Wrapper_Spec): If the controlling argument of the interface operation is an access parameter with a non-null indicator, use the non-null indicator on the wrapper. * sem_ch9.adb (Analyze_Protected_Type): Only retrieve the full view when present, which it may not be in the case where the type entity is an incomplete view brought in by a limited with. (Analyze_Task_Type): Only retrieve the full view when present, which it may not be in the case where the type entity is an incomplete view brought in by a limited with. (Analyze_Protected_Definition): Set Is_Frozen on all itypes generated for private components of a protected type, to prevent the generation of freeze nodes for which there is no proper scope of elaboration. * exp_util.ads, exp_util.adb (Remove_Side_Effects): If the expression is a function call that returns a task, expand into a declaration to invoke the build_in_place machinery. (Find_Protection_Object): New routine. (Remove_Side_Effects): Also make a copy of the value for attributes whose result is of an elementary type. (Silly_Boolean_Array_Not_Test): New procedure (Silly_Boolean_Array_Xor_Test): New procedure (Is_Volatile_Reference): New function (Remove_Side_Effects): Use Is_Volatile_Reference (Possible_Bit_Aligned_Component): Handle slice case properly * exp_pakd.adb (Expand_Packed_Not): Move silly true/true or false/false case test to Exp_Util (Expand_Packed_Xor): Move silly true/true case test to Exp_Util From-SVN: r134030
Hristian Kirtchev committed