OSDN Git Service

2005-03-08 Ed Schonberg <schonberg@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / freeze.ads
index f782a5c..aaa7b00 100644 (file)
@@ -6,9 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                            $Revision: 1.14 $
---                                                                          --
---          Copyright (C) 1992-2000, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2003, 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- --
@@ -22,7 +20,7 @@
 -- MA 02111-1307, USA.                                                      --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
 --                                                                          --
 ------------------------------------------------------------------------------
 
@@ -102,7 +100,7 @@ package Freeze is
    --      These have a delayed freeze. Gigi will generate code to evaluate
    --      the initialization expression if present and store it in a temp.
    --      The actual object is created at the point of the freeze, and if
-   --      neccessary initialized by copying the value of this temporary.
+   --      necessary initialized by copying the value of this temporary.
 
    --    Formal Parameters
    --
@@ -129,8 +127,7 @@ package Freeze is
 
    function Build_Renamed_Body
      (Decl  : Node_Id;
-      New_S : Entity_Id)
-   return Node_Id;
+      New_S : Entity_Id) return Node_Id;
    --  Rewrite renaming declaration as a subprogram body, whose single
    --  statement is a call to the renamed entity. New_S is the entity that
    --  appears in the renaming declaration. If this is a Renaming_As_Body,
@@ -172,6 +169,13 @@ package Freeze is
    --  do not allow a size clause if the size would not otherwise be known at
    --  compile time in any case.
 
+   procedure Expand_Atomic_Aggregate (E : Entity_Id; Typ : Entity_Id);
+   --  If an atomic object is initialized with an aggregate or is assigned
+   --  an aggregate, we have to prevent a piecemeal access or assignment
+   --  to the object, even if the aggregate is to be expanded. we create
+   --  a temporary for the aggregate, and assign the temporary instead,
+   --  so that the back end can generate an atomic move for it.
+
    function Freeze_Entity (E : Entity_Id; Loc : Source_Ptr) return List_Id;
    --  Freeze an entity, and return Freeze nodes, to be inserted at the
    --  point of call. Loc is a source location which corresponds to the
@@ -205,6 +209,11 @@ package Freeze is
    --  so need to be similarly treated. Freeze_Expression takes care of
    --  determining the proper insertion point for generated freeze actions.
 
+   procedure Freeze_Fixed_Point_Type (Typ : Entity_Id);
+   --  Freeze fixed point type. For fixed-point types, we have to defer
+   --  setting the size and bounds till the freeze point, since they are
+   --  potentially affected by the presence of size and small clauses.
+
    procedure Freeze_Itype (T : Entity_Id; N : Node_Id);
    --  This routine is called when an Itype is created and must be frozen
    --  immediately at the point of creation (for the sake of the expansion