Mercurial > hg > CbC > CbC_gcc
diff gcc/ada/exp_ch3.ads @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/ada/exp_ch3.ads Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/ada/exp_ch3.ads Thu Oct 25 07:37:49 2018 +0900 @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2017, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2018, 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- -- @@ -84,6 +84,13 @@ -- Constructor_Ref is a call to a constructor subprogram. It is currently -- used only to support C++ constructors. + function Build_Variant_Record_Equality + (Typ : Entity_Id; + Body_Id : Entity_Id; + Param_Specs : List_Id) return Node_Id; + -- Build the body of the equality function Body_Id for the untagged variant + -- record Typ with the given parameters specification list. + function Freeze_Type (N : Node_Id) return Boolean; -- This function executes the freezing actions associated with the given -- freeze type node N and returns True if the node is to be deleted. We @@ -91,6 +98,26 @@ -- want Gigi to see the node. This function can't delete the node itself -- since it would confuse any remaining processing of the freeze node. + function Get_Simple_Init_Val + (Typ : Entity_Id; + N : Node_Id; + Size : Uint := No_Uint) return Node_Id; + -- Build an expression which represents the required initial value of type + -- Typ for which predicate Needs_Simple_Initialization is True. N is a node + -- whose source location used in the construction of the expression. Size + -- is utilized as follows: + -- + -- * If the size of the object to be initialized it is known, it should + -- be passed to the routine. + -- + -- * If the size is unknown or is zero, then the Esize of Typ is used as + -- an estimate of the size. + -- + -- The object size is needed to prepare a known invalid value for use by + -- Normalize_Scalars. A call to this routine where Typ denotes a scalar + -- type is only valid when Normalize_Scalars or Initialize_Scalars is + -- active, or if N is the node for a 'Invalid_Value attribute node. + procedure Init_Secondary_Tags (Typ : Entity_Id; Target : Node_Id; @@ -114,33 +141,4 @@ -- clause the assignment is handled as part of the freezing of the object, -- see Check_Address_Clause. - function Needs_Simple_Initialization - (T : Entity_Id; - Consider_IS : Boolean := True) return Boolean; - -- Certain types need initialization even though there is no specific - -- initialization routine: - -- Access types (which need initializing to null) - -- All scalar types if Normalize_Scalars mode set - -- Descendants of standard string types if Normalize_Scalars mode set - -- Scalar types having a Default_Value attribute - -- Regarding Initialize_Scalars mode, this is ignored if Consider_IS is - -- set to False, but if Consider_IS is set to True, then the cases above - -- mentioning Normalize_Scalars also apply for Initialize_Scalars mode. - - function Get_Simple_Init_Val - (T : Entity_Id; - N : Node_Id; - Size : Uint := No_Uint) return Node_Id; - -- For a type which Needs_Simple_Initialization (see above), prepares the - -- tree for an expression representing the required initial value. N is a - -- node whose source location used in constructing this tree which is - -- returned as the result of the call. The Size parameter indicates the - -- target size of the object if it is known (indicated by a value that is - -- not No_Uint and is greater than zero). If Size is not given (Size set to - -- No_Uint, or non-positive), then the Esize of T is used as an estimate of - -- the Size. The object size is needed to prepare a known invalid value for - -- use by Normalize_Scalars. A call to this routine where T is a scalar - -- type is only valid if we are in Normalize_Scalars or Initialize_Scalars - -- mode, or if N is the node for a 'Invalid_Value attribute node. - end Exp_Ch3;