exp_aggr.ads, [...]:
2007-04-20 Javier Miranda <miranda@adacore.com> Ed Schonberg <schonberg@adacore.com> Bob Duff <duff@adacore.com> Hristian Kirtchev <kirtchev@adacore.com> * exp_aggr.ads, exp_aggr.adb: (Build_Record_Aggr_Code): Add missing initialization of secondary tags in extension aggregates. (Flatten): Other conditions being met, an aggregate is static if the low bound given by component associations is different from the low bound of the base index type. (Packed_Array_Aggregate_Handled): If the component type is itself a packed array or record, the front-end must expand into assignments. (Gen_Ctrl_Actions_For_Aggr): In call to Init_Controller, pass False to Init_Pr, instead of Ancestor_Is_Expression. (Gen_Ctrl_Actions_For_Aggr): When processing an aggregate of a coextension chain root, either generate a list controller or use the already existing one. (Static_Array_Aggregate): New procedure to construct a positional aggregate that can be handled by the backend, when all bounds and components are compile-time known constants. (Expand_Record_Aggregate): Force conversion of aggregates of tagged types covering interface types into assignments. (Replace_Type): move to Build_Record_Aggr_Code. (Expand_Record_Aggr_Code): if the target of the aggregate is an interface type, convert to the definite type of the aggregate itself, so that needed components are visible. (Convert_Aggr_In_Object_Decl): If the aggregate has controlled components and the context is an extended return statement do not create a transient block for it, to prevent premature finalization before the return is executed. (Gen_Assign): Do not generate a call to deep adjust routine if the component type is itself an array of controlled (sub)-components initialized with an inner aggregate. (Component_Check): New name for Static_Check. This name is now more appropriate, and documentation is added which was missing. (Component_Check): Add test for bit aligned component value (Component_Not_OK_For_Backend): Renames Has_Delayed_Nested_Aggregate_Or_ Tagged_Comps, name is more appropriate given added function below. (Component_Not_OK_For_Backend): Check for bit aligned component ref. From-SVN: r125392
This commit is contained in:
parent
1c28fe3afe
commit
0f95b17845
File diff suppressed because it is too large
Load Diff
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -47,6 +47,16 @@ package Exp_Aggr is
|
|||
-- assignment in the newly allocated object.
|
||||
|
||||
procedure Convert_Aggr_In_Assignment (N : Node_Id);
|
||||
-- ??? documentation needed
|
||||
-- If the right-hand side of an assignment is an aggregate, expand the
|
||||
-- statement into a series of individual component assignments. This is
|
||||
-- done if there are non-static values involved in either the bounds or
|
||||
-- the components, and the aggregate cannot be handled as a whole by the
|
||||
-- backend.
|
||||
|
||||
function Static_Array_Aggregate (N : Node_Id) return Boolean;
|
||||
-- N is an array aggregate that may have a component association with
|
||||
-- an others clause and a range. If bounds are static and the expressions
|
||||
-- are compile-time known constants, rewrite N as a purely positional
|
||||
-- aggregate, to be use to initialize variables and components of the type
|
||||
-- without generating elaboration code.
|
||||
end Exp_Aggr;
|
||||
|
|
Loading…
Reference in New Issue