This is an internal clean up to factor some repeated coce, no external effect.
Tested on x86_64-pc-linux-gnu, committed on trunk 2011-08-02 Robert Dewar <de...@adacore.com> * freeze.adb (Add_To_Result): New procedure.
Index: freeze.adb =================================================================== --- freeze.adb (revision 177122) +++ freeze.adb (working copy) @@ -1502,14 +1502,19 @@ Test_E : Entity_Id := E; Comp : Entity_Id; F_Node : Node_Id; - Result : List_Id; Indx : Node_Id; Formal : Entity_Id; Atype : Entity_Id; + Result : List_Id := No_List; + -- List of freezing actions, left at No_List if none + Has_Default_Initialization : Boolean := False; -- This flag gets set to true for a variable with default initialization + procedure Add_To_Result (N : Node_Id); + -- N is a freezing action to be appended to the Result + procedure Check_Current_Instance (Comp_Decl : Node_Id); -- Check that an Access or Unchecked_Access attribute with a prefix -- which is the current instance type can only be applied when the type @@ -1528,6 +1533,19 @@ -- Freeze each component, handle some representation clauses, and freeze -- primitive operations if this is a tagged type. + ------------------- + -- Add_To_Result -- + ------------------- + + procedure Add_To_Result (N : Node_Id) is + begin + if No (Result) then + Result := New_List (N); + else + Append (N, Result); + end if; + end Add_To_Result; + ---------------------------- -- After_Last_Declaration -- ---------------------------- @@ -1769,12 +1787,7 @@ then IR := Make_Itype_Reference (Sloc (Comp)); Set_Itype (IR, Desig); - - if No (Result) then - Result := New_List (IR); - else - Append (IR, Result); - end if; + Add_To_Result (IR); end if; elsif Ekind (Typ) = E_Anonymous_Access_Subprogram_Type @@ -2421,7 +2434,6 @@ -- Here to freeze the entity - Result := No_List; Set_Is_Frozen (E); -- Case of entity being frozen is other than a type @@ -3602,11 +3614,7 @@ begin Set_Itype (Ref, E); - if No (Result) then - Result := New_List (Ref); - else - Append (Ref, Result); - end if; + Add_To_Result (Ref); end; end if; @@ -4052,13 +4060,8 @@ end if; Set_Entity (F_Node, E); + Add_To_Result (F_Node); - if Result = No_List then - Result := New_List (F_Node); - else - Append (F_Node, Result); - end if; - -- A final pass over record types with discriminants. If the type -- has an incomplete declaration, there may be constrained access -- subtypes declared elsewhere, which do not depend on the discrimi- @@ -4135,6 +4138,8 @@ -- subprogram in main unit, generate descriptor if we are in -- Propagate_Exceptions mode. + -- This is very odd code, it makes a null result, why ??? + elsif Propagate_Exceptions and then Is_Imported (E) and then not Is_Intrinsic_Subprogram (E)