From: Bob Duff Date: Mon, 17 May 2021 16:42:20 +0000 (-0400) Subject: [Ada] Transient scope cleanup X-Git-Tag: basepoints/gcc-13~6211 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=738a0e8dd447409a960c84cf14d05e5bdc985ea6;p=thirdparty%2Fgcc.git [Ada] Transient scope cleanup gcc/ada/ * checks.adb, exp_attr.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb, exp_disp.adb, exp_util.adb, inline.adb, sem_res.adb: Change all calls to Make_Unchecked_Type_Conversion to call Unchecked_Convert_To instead. This involves removing New_Occurrence_Of on the first parameter, because Unchecked_Convert_To expects a type entity, rather than the name of one. Also, removed calls to Relocate_Node, because Unchecked_Convert_To takes care of that. * sinfo.ads: Change comment to be worded more firmly. --- diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb index d3d785249698..76fd9b037fb2 100644 --- a/gcc/ada/checks.adb +++ b/gcc/ada/checks.adb @@ -7831,10 +7831,8 @@ package body Checks is New_Occurrence_Of (Target_Base_Type, Loc), Constant_Present => True, Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (Target_Base_Type, Loc), - Expression => Duplicate_Subexpr (N))), + Unchecked_Convert_To + (Target_Base_Type, Duplicate_Subexpr (N))), Make_Raise_Constraint_Error (Loc, Condition => diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index e33a36ef8a3a..f074521e5f7c 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -2799,10 +2799,9 @@ package body Exp_Attr is Name => New_Occurrence_Of (RTE (RE_Callable), Loc), Parameter_Associations => New_List ( - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc), - Expression => Build_Disp_Get_Task_Id_Call (Pref))))); + Unchecked_Convert_To + (RTE (RO_ST_Task_Id), + Build_Disp_Get_Task_Id_Call (Pref))))); else Rewrite (N, Build_Call_With_Task (Pref, RTE (RE_Callable))); @@ -6746,10 +6745,9 @@ package body Exp_Attr is Name => New_Occurrence_Of (RTE (RE_Terminated), Loc), Parameter_Associations => New_List ( - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc), - Expression => Build_Disp_Get_Task_Id_Call (Pref))))); + Unchecked_Convert_To + (RTE (RO_ST_Task_Id), + Build_Disp_Get_Task_Id_Call (Pref))))); elsif Restricted_Profile then Rewrite (N, diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 7e8a741d399b..0c5b3a244532 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -11992,9 +11992,8 @@ package body Exp_Ch4 is -- unchecked conversion to the target fixed-point type. Conv := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Target_Type, Loc), - Expression => New_Occurrence_Of (Expr_Id, Loc)); + Unchecked_Convert_To + (Target_Type, New_Occurrence_Of (Expr_Id, Loc)); end; -- All other conversions @@ -12515,10 +12514,7 @@ package body Exp_Ch4 is Conv : Node_Id; begin Make_Tag_Check (Class_Wide_Type (Actual_Targ_Typ)); - Conv := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Target_Type, Loc), - Expression => Relocate_Node (Expression (N))); + Conv := Unchecked_Convert_To (Target_Type, Expression (N)); Rewrite (N, Conv); Analyze_And_Resolve (N, Target_Type); end; diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index 80ed21b59724..c1409bf6ebe6 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -5852,11 +5852,9 @@ package body Exp_Ch6 is Name => New_Occurrence_Of (Alloc_Obj_Id, Loc), Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (Ref_Type, Loc), - Expression => - New_Occurrence_Of (Obj_Acc_Formal, Loc)))), + Unchecked_Convert_To + (Ref_Type, + New_Occurrence_Of (Obj_Acc_Formal, Loc)))), Elsif_Parts => New_List ( Make_Elsif_Part (Loc, @@ -5997,11 +5995,9 @@ package body Exp_Ch6 is Object_Definition => New_Occurrence_Of (Ref_Type, Loc), Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (Ref_Type, Loc), - Expression => - New_Occurrence_Of (Obj_Acc_Formal, Loc))); + Unchecked_Convert_To + (Ref_Type, + New_Occurrence_Of (Obj_Acc_Formal, Loc))); Insert_Before (Ret_Obj_Decl, Alloc_Obj_Decl); @@ -8514,12 +8510,10 @@ package body Exp_Ch6 is Alloc_Form := Caller_Allocation; Pool := Make_Null (No_Location); - Return_Obj_Actual := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Result_Subt, Loc), - Expression => - Make_Explicit_Dereference (Loc, - Prefix => New_Occurrence_Of (Return_Obj_Access, Loc))); + Return_Obj_Actual := Unchecked_Convert_To + (Result_Subt, + Make_Explicit_Dereference (Loc, + Prefix => New_Occurrence_Of (Return_Obj_Access, Loc))); -- When the result subtype is unconstrained, the function itself must -- perform the allocation of the return object, so we pass parameters @@ -8833,11 +8827,7 @@ package body Exp_Ch6 is -- the caller's return object. Add_Access_Actual_To_Build_In_Place_Call - (Func_Call, - Func_Id, - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Result_Subt, Loc), - Expression => Relocate_Node (Lhs))); + (Func_Call, Func_Id, Unchecked_Convert_To (Result_Subt, Lhs)); -- Create an access type designating the function's result subtype @@ -8861,11 +8851,7 @@ package body Exp_Ch6 is -- Add a conversion if it's the wrong type - if Etype (New_Expr) /= Ptr_Typ then - New_Expr := - Make_Unchecked_Type_Conversion (Loc, - New_Occurrence_Of (Ptr_Typ, Loc), New_Expr); - end if; + New_Expr := Unchecked_Convert_To (Ptr_Typ, New_Expr); Obj_Id := Make_Temporary (Loc, 'R', New_Expr); Set_Etype (Obj_Id, Ptr_Typ); @@ -9124,16 +9110,10 @@ package body Exp_Ch6 is -- it to the access type of the callee's BIP_Object_Access formal. Caller_Object := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of - (Etype (Build_In_Place_Formal - (Function_Id, BIP_Object_Access)), - Loc), - Expression => - New_Occurrence_Of - (Build_In_Place_Formal (Encl_Func, BIP_Object_Access), - Loc)); + Unchecked_Convert_To + (Etype (Build_In_Place_Formal (Function_Id, BIP_Object_Access)), + New_Occurrence_Of + (Build_In_Place_Formal (Encl_Func, BIP_Object_Access), Loc)); -- In the definite case, add an implicit actual to the function call -- that provides access to the declared object. An unchecked conversion @@ -9141,10 +9121,8 @@ package body Exp_Ch6 is -- the case where the object is declared with a class-wide type. elsif Definite then - Caller_Object := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Result_Subt, Loc), - Expression => New_Occurrence_Of (Obj_Def_Id, Loc)); + Caller_Object := Unchecked_Convert_To + (Result_Subt, New_Occurrence_Of (Obj_Def_Id, Loc)); -- When the function has a controlling result, an allocation-form -- parameter must be passed indicating that the caller is allocating @@ -9252,9 +9230,8 @@ package body Exp_Ch6 is Constant_Present => True, Object_Definition => New_Occurrence_Of (Ptr_Typ, Loc), Expression => - Make_Unchecked_Type_Conversion (Loc, - New_Occurrence_Of (Ptr_Typ, Loc), - Make_Reference (Loc, Relocate_Node (Func_Call)))); + Unchecked_Convert_To + (Ptr_Typ, Make_Reference (Loc, Relocate_Node (Func_Call)))); else Res_Decl := Make_Object_Declaration (Loc, diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 6b1e284f3fbb..427b43015144 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -6510,14 +6510,12 @@ package body Exp_Ch9 is -- Task_Id (Tasknm._disp_get_task_id) - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (RTE (RO_ST_Task_Id), Loc), - Expression => - Make_Selected_Component (Loc, - Prefix => New_Copy_Tree (Tasknm), - Selector_Name => - Make_Identifier (Loc, Name_uDisp_Get_Task_Id))))); + Unchecked_Convert_To + (RTE (RO_ST_Task_Id), + Make_Selected_Component (Loc, + Prefix => New_Copy_Tree (Tasknm), + Selector_Name => + Make_Identifier (Loc, Name_uDisp_Get_Task_Id))))); else Append_To (Component_Associations (Aggr), @@ -7242,10 +7240,9 @@ package body Exp_Ch9 is Make_Assignment_Statement (Loc, Name => New_Occurrence_Of (Bnn, Loc), Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Communication_Block), Loc), - Expression => Make_Identifier (Loc, Name_uD)))); + Unchecked_Convert_To + (RTE (RE_Communication_Block), + Make_Identifier (Loc, Name_uD)))); -- Generate: -- _Disp_Asynchronous_Select (, S, P'Address, D, B); @@ -7361,10 +7358,9 @@ package body Exp_Ch9 is Name => New_Occurrence_Of (Bnn, Loc), Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Communication_Block), Loc), - Expression => Make_Identifier (Loc, Name_uD)))); + Unchecked_Convert_To + (RTE (RE_Communication_Block), + Make_Identifier (Loc, Name_uD)))); -- Generate: -- _Disp_Asynchronous_Select (, S, P'Address, D, B); diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index a2ea7c6e88ac..a44af6a126e7 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -2575,11 +2575,9 @@ package body Exp_Disp is New_List ( Obj_Ref, - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protected_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Protected_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block New_Occurrence_Of -- Asynchronous_Call @@ -2598,11 +2596,9 @@ package body Exp_Disp is Make_Assignment_Statement (Loc, Name => Make_Identifier (Loc, Name_uB), Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Dummy_Communication_Block), Loc), - Expression => New_Occurrence_Of (Com_Block, Loc)))); + Unchecked_Convert_To + (RTE (RE_Dummy_Communication_Block), + New_Occurrence_Of (Com_Block, Loc)))); -- Generate: -- F := False; @@ -2636,10 +2632,9 @@ package body Exp_Disp is Prefix => Make_Identifier (Loc, Name_uT), Selector_Name => Make_Identifier (Loc, Name_uTask_Id)), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Task_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Task_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block New_Occurrence_Of -- Asynchronous_Call @@ -2929,11 +2924,9 @@ package body Exp_Disp is Parameter_Associations => New_List ( Obj_Ref, - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protected_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Protected_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block @@ -3006,10 +2999,9 @@ package body Exp_Disp is Prefix => Make_Identifier (Loc, Name_uT), Selector_Name => Make_Identifier (Loc, Name_uTask_Id)), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Task_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Task_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block New_Occurrence_Of -- Conditional_Call @@ -3219,12 +3211,11 @@ package body Exp_Disp is Ret := Make_Simple_Return_Statement (Loc, Expression => - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (RTE (RE_Address), Loc), - Expression => - Make_Selected_Component (Loc, - Prefix => Make_Identifier (Loc, Name_uT), - Selector_Name => Make_Identifier (Loc, Name_uTask_Id)))); + Unchecked_Convert_To + (RTE (RE_Address), + Make_Selected_Component (Loc, + Prefix => Make_Identifier (Loc, Name_uT), + Selector_Name => Make_Identifier (Loc, Name_uTask_Id)))); -- A null body is constructed for non-task types @@ -3337,12 +3328,9 @@ package body Exp_Disp is Parameter_Associations => New_List ( - Make_Unchecked_Type_Conversion (Loc, -- PEA (P) - Subtype_Mark => - New_Occurrence_Of ( - RTE (RE_Protection_Entries_Access), Loc), - Expression => - Make_Identifier (Loc, Name_uP)), + Unchecked_Convert_To ( -- PEA (P) + RTE (RE_Protection_Entries_Access), + Make_Identifier (Loc, Name_uP)), Make_Attribute_Reference (Loc, -- O._object'Acc Attribute_Name => @@ -3354,11 +3342,9 @@ package body Exp_Disp is Selector_Name => Make_Identifier (Loc, Name_uObject))), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protected_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Protected_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uA)))), -- abort status @@ -3383,11 +3369,9 @@ package body Exp_Disp is Selector_Name => Make_Identifier (Loc, Name_uObject))), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protected_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Protected_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uA)))))); -- abort status end if; @@ -3424,20 +3408,17 @@ package body Exp_Disp is Parameter_Associations => New_List ( - Make_Unchecked_Type_Conversion (Loc, -- PEA (P) - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protection_Entries_Access), Loc), - Expression => Make_Identifier (Loc, Name_uP)), + Unchecked_Convert_To ( -- PEA (P) + RTE (RE_Protection_Entries_Access), + Make_Identifier (Loc, Name_uP)), Make_Selected_Component (Loc, -- O._task_id Prefix => Make_Identifier (Loc, Name_uO), Selector_Name => Make_Identifier (Loc, Name_uTask_Id)), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Task_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Task_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uA)))), -- abort status @@ -3455,10 +3436,9 @@ package body Exp_Disp is Prefix => Make_Identifier (Loc, Name_uO), Selector_Name => Make_Identifier (Loc, Name_uTask_Id)), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Task_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Task_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uA)))))); -- abort status end if; @@ -3743,11 +3723,9 @@ package body Exp_Disp is Parameter_Associations => New_List ( Obj_Ref, - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of - (RTE (RE_Protected_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Protected_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block Make_Identifier (Loc, Name_uD), -- delay @@ -3786,10 +3764,9 @@ package body Exp_Disp is Prefix => Make_Identifier (Loc, Name_uT), Selector_Name => Make_Identifier (Loc, Name_uTask_Id)), - Make_Unchecked_Type_Conversion (Loc, -- entry index - Subtype_Mark => - New_Occurrence_Of (RTE (RE_Task_Entry_Index), Loc), - Expression => Make_Identifier (Loc, Name_uI)), + Unchecked_Convert_To ( -- entry index + RTE (RE_Task_Entry_Index), + Make_Identifier (Loc, Name_uI)), Make_Identifier (Loc, Name_uP), -- parameter block Make_Identifier (Loc, Name_uD), -- delay diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 270242d8ff91..2ff11446abc1 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -1467,9 +1467,7 @@ package body Exp_Util is Make_Procedure_Call_Statement (Loc, Name => New_Occurrence_Of (Proc_Id, Loc), Parameter_Associations => New_List ( - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Formal_Typ, Loc), - Expression => Obj_Name))); + Unchecked_Convert_To (Formal_Typ, Obj_Name))); end Build_DIC_Call; ------------------------------ diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index fc704e6ba2f5..589c0f3f16e4 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -3008,10 +3008,7 @@ package body Inline is if Nkind (A) = N_Type_Conversion and then Ekind (F) /= E_In_Parameter then - New_A := - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Etype (F), Loc), - Expression => Relocate_Node (Expression (A))); + New_A := Unchecked_Convert_To (Etype (F), Expression (A)); -- In GNATprove mode, keep the most precise type of the actual for -- the temporary variable, when the formal type is unconstrained. diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 3ebf93ae080a..54d476ef590c 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -8825,18 +8825,12 @@ package body Sem_Res is or else Is_Private_Type (T)) then if Etype (L) /= T then - Rewrite (L, - Make_Unchecked_Type_Conversion (Sloc (L), - Subtype_Mark => New_Occurrence_Of (T, Sloc (L)), - Expression => Relocate_Node (L))); + Rewrite (L, Unchecked_Convert_To (T, L)); Analyze_And_Resolve (L, T); end if; if (Etype (R)) /= T then - Rewrite (R, - Make_Unchecked_Type_Conversion (Sloc (R), - Subtype_Mark => New_Occurrence_Of (Etype (L), Sloc (R)), - Expression => Relocate_Node (R))); + Rewrite (R, Unchecked_Convert_To (Etype (L), R)); Analyze_And_Resolve (R, T); end if; end if; @@ -12740,10 +12734,7 @@ package body Sem_Res is Set_Etype (Array_Subtype, Base_Type (Typ)); Set_Is_Constrained (Array_Subtype, True); - Rewrite (N, - Make_Unchecked_Type_Conversion (Loc, - Subtype_Mark => New_Occurrence_Of (Array_Subtype, Loc), - Expression => Relocate_Node (N))); + Rewrite (N, Unchecked_Convert_To (Array_Subtype, N)); Set_Etype (N, Array_Subtype); end; end if; diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index f6c5e0dcc59f..25a61ad56659 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -8422,7 +8422,7 @@ package Sinfo is -- It is generated as a result of actual use of Unchecked_Conversion -- and also by the expander. - -- Unchecked type conversion nodes should normally be created by calling + -- Unchecked type conversion nodes should be created by calling -- Tbuild.Unchecked_Convert_To, rather than by directly calling -- Nmake.Make_Unchecked_Type_Conversion.