annotate gcc/ada/repinfo.ads @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ------------------------------------------------------------------------------
kono
parents:
diff changeset
2 -- --
kono
parents:
diff changeset
3 -- GNAT COMPILER COMPONENTS --
kono
parents:
diff changeset
4 -- --
kono
parents:
diff changeset
5 -- R E P I N F O --
kono
parents:
diff changeset
6 -- --
kono
parents:
diff changeset
7 -- S p e c --
kono
parents:
diff changeset
8 -- --
kono
parents:
diff changeset
9 -- Copyright (C) 1999-2017, Free Software Foundation, Inc. --
kono
parents:
diff changeset
10 -- --
kono
parents:
diff changeset
11 -- GNAT is free software; you can redistribute it and/or modify it under --
kono
parents:
diff changeset
12 -- terms of the GNU General Public License as published by the Free Soft- --
kono
parents:
diff changeset
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
kono
parents:
diff changeset
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
kono
parents:
diff changeset
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
kono
parents:
diff changeset
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
kono
parents:
diff changeset
17 -- --
kono
parents:
diff changeset
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
kono
parents:
diff changeset
19 -- additional permissions described in the GCC Runtime Library Exception, --
kono
parents:
diff changeset
20 -- version 3.1, as published by the Free Software Foundation. --
kono
parents:
diff changeset
21 -- --
kono
parents:
diff changeset
22 -- You should have received a copy of the GNU General Public License and --
kono
parents:
diff changeset
23 -- a copy of the GCC Runtime Library Exception along with this program; --
kono
parents:
diff changeset
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
kono
parents:
diff changeset
25 -- <http://www.gnu.org/licenses/>. --
kono
parents:
diff changeset
26 -- --
kono
parents:
diff changeset
27 -- GNAT was originally developed by the GNAT team at New York University. --
kono
parents:
diff changeset
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
kono
parents:
diff changeset
29 -- --
kono
parents:
diff changeset
30 ------------------------------------------------------------------------------
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 -- This package contains the routines to handle back annotation of the
kono
parents:
diff changeset
33 -- tree to fill in representation information, and also the routine used
kono
parents:
diff changeset
34 -- by -gnatR to print this information. This unit is used both in the
kono
parents:
diff changeset
35 -- compiler and in ASIS (it is used in ASIS as part of the implementation
kono
parents:
diff changeset
36 -- of the data decomposition annex).
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 with Types; use Types;
kono
parents:
diff changeset
39 with Uintp; use Uintp;
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 package Repinfo is
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 --------------------------------
kono
parents:
diff changeset
44 -- Representation Information --
kono
parents:
diff changeset
45 --------------------------------
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 -- The representation information of interest here is size and
kono
parents:
diff changeset
48 -- component information for arrays and records. For primitive
kono
parents:
diff changeset
49 -- types, the front end computes the Esize and RM_Size fields of
kono
parents:
diff changeset
50 -- the corresponding entities as constant non-negative integers,
kono
parents:
diff changeset
51 -- and the Uint values are stored directly in these fields.
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 -- For composite types, there are three cases:
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 -- 1. In some cases the front end knows the values statically,
kono
parents:
diff changeset
56 -- for example in the case where representation clauses or
kono
parents:
diff changeset
57 -- pragmas specify the values.
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 -- 2. If Backend_Layout is True, then the backend is responsible
kono
parents:
diff changeset
60 -- for layout of all types and objects not laid out by the
kono
parents:
diff changeset
61 -- front end. This includes all dynamic values, and also
kono
parents:
diff changeset
62 -- static values (e.g. record sizes) when not set by the
kono
parents:
diff changeset
63 -- front end.
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 -- 3. If Backend_Layout is False, then the front end lays out
kono
parents:
diff changeset
66 -- all data, according to target dependent size and alignment
kono
parents:
diff changeset
67 -- information, creating dynamic inlinable functions where
kono
parents:
diff changeset
68 -- needed in the case of sizes not known till runtime.
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 -----------------------------
kono
parents:
diff changeset
71 -- Back-Annotation by Gigi --
kono
parents:
diff changeset
72 -----------------------------
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 -- The following interface is used by gigi if Backend_Layout is True
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 -- As part of the processing in gigi, the types are laid out and
kono
parents:
diff changeset
77 -- appropriate values computed for the sizes and component positions
kono
parents:
diff changeset
78 -- and sizes of records and arrays.
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 -- The back-annotation circuit in gigi is responsible for updating the
kono
parents:
diff changeset
81 -- relevant fields in the tree to reflect these computations, as follows:
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 -- For E_Array_Type entities, the Component_Size field
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 -- For all record and array types and subtypes, the Esize field,
kono
parents:
diff changeset
86 -- which contains the Size (more accurately the Object_Size) value
kono
parents:
diff changeset
87 -- for the type or subtype.
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 -- For E_Component and E_Discriminant entities, the Esize (size
kono
parents:
diff changeset
90 -- of component) and Component_Bit_Offset fields. Note that gigi
kono
parents:
diff changeset
91 -- does not back annotate Normalized_Position/First_Bit.
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 -- There are three cases to consider:
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 -- 1. The value is constant. In this case, the back annotation works
kono
parents:
diff changeset
96 -- by simply storing the non-negative universal integer value in
kono
parents:
diff changeset
97 -- the appropriate field corresponding to this constant size.
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 -- 2. The value depends on the discriminant values for the current
kono
parents:
diff changeset
100 -- record. In this case, gigi back annotates the field with a
kono
parents:
diff changeset
101 -- representation of the expression for computing the value in
kono
parents:
diff changeset
102 -- terms of the discriminants. A negative Uint value is used to
kono
parents:
diff changeset
103 -- represent the value of such an expression, as explained in
kono
parents:
diff changeset
104 -- the following section.
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 -- 3. The value depends on variables other than discriminants of the
kono
parents:
diff changeset
107 -- current record. In this case, gigi also back annotates the field
kono
parents:
diff changeset
108 -- with a representation of the expression for computing the value
kono
parents:
diff changeset
109 -- in terms of the variables represented symbolically.
kono
parents:
diff changeset
110
kono
parents:
diff changeset
111 -- Note: the extended back annotation for the dynamic case is needed only
kono
parents:
diff changeset
112 -- for -gnatR3 output, and for proper operation of the ASIS DDA. Since it
kono
parents:
diff changeset
113 -- can be expensive to do this back annotation (for discriminated records
kono
parents:
diff changeset
114 -- with many variable length arrays), we only do the full back annotation
kono
parents:
diff changeset
115 -- in -gnatR3 mode, or ASIS mode. In any other mode, the back-end just sets
kono
parents:
diff changeset
116 -- the value to Uint_Minus_1, indicating that the value of the attribute
kono
parents:
diff changeset
117 -- depends on discriminant information, but not giving further details.
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 -- GCC expressions are represented with a Uint value that is negative.
kono
parents:
diff changeset
120 -- See the body of this package for details on the representation used.
kono
parents:
diff changeset
121
kono
parents:
diff changeset
122 -- One other case in which gigi back annotates GCC expressions is in
kono
parents:
diff changeset
123 -- the Present_Expr field of an N_Variant node. This expression which
kono
parents:
diff changeset
124 -- will always depend on discriminants, and hence always be represented
kono
parents:
diff changeset
125 -- as a negative Uint value, provides an expression which, when evaluated
kono
parents:
diff changeset
126 -- with a given set of discriminant values, indicates whether the variant
kono
parents:
diff changeset
127 -- is present for that set of values (result is True, i.e. non-zero) or
kono
parents:
diff changeset
128 -- not present (result is False, i.e. zero). Again, the full annotation of
kono
parents:
diff changeset
129 -- this field is done only in -gnatR3 mode or in ASIS mode, and in other
kono
parents:
diff changeset
130 -- modes, the value is set to Uint_Minus_1.
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 subtype Node_Ref is Uint;
kono
parents:
diff changeset
133 -- Subtype used for negative Uint values used to represent nodes
kono
parents:
diff changeset
134
kono
parents:
diff changeset
135 subtype Node_Ref_Or_Val is Uint;
kono
parents:
diff changeset
136 -- Subtype used for values that can either be a Node_Ref (negative)
kono
parents:
diff changeset
137 -- or a value (non-negative)
kono
parents:
diff changeset
138
kono
parents:
diff changeset
139 type TCode is range 0 .. 29;
kono
parents:
diff changeset
140 -- Type used on Ada side to represent DEFTREECODE values defined in
kono
parents:
diff changeset
141 -- tree.def. Only a subset of these tree codes can actually appear.
kono
parents:
diff changeset
142 -- The names are the names from tree.def in Ada casing.
kono
parents:
diff changeset
143
kono
parents:
diff changeset
144 -- name code description operands
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 Cond_Expr : constant TCode := 1; -- conditional 3
kono
parents:
diff changeset
147 Plus_Expr : constant TCode := 2; -- addition 2
kono
parents:
diff changeset
148 Minus_Expr : constant TCode := 3; -- subtraction 2
kono
parents:
diff changeset
149 Mult_Expr : constant TCode := 4; -- multiplication 2
kono
parents:
diff changeset
150 Trunc_Div_Expr : constant TCode := 5; -- truncating division 2
kono
parents:
diff changeset
151 Ceil_Div_Expr : constant TCode := 6; -- division rounding up 2
kono
parents:
diff changeset
152 Floor_Div_Expr : constant TCode := 7; -- division rounding down 2
kono
parents:
diff changeset
153 Trunc_Mod_Expr : constant TCode := 8; -- mod for trunc_div 2
kono
parents:
diff changeset
154 Ceil_Mod_Expr : constant TCode := 9; -- mod for ceil_div 2
kono
parents:
diff changeset
155 Floor_Mod_Expr : constant TCode := 10; -- mod for floor_div 2
kono
parents:
diff changeset
156 Exact_Div_Expr : constant TCode := 11; -- exact div 2
kono
parents:
diff changeset
157 Negate_Expr : constant TCode := 12; -- negation 1
kono
parents:
diff changeset
158 Min_Expr : constant TCode := 13; -- minimum 2
kono
parents:
diff changeset
159 Max_Expr : constant TCode := 14; -- maximum 2
kono
parents:
diff changeset
160 Abs_Expr : constant TCode := 15; -- absolute value 1
kono
parents:
diff changeset
161 Truth_Andif_Expr : constant TCode := 16; -- Boolean and then 2
kono
parents:
diff changeset
162 Truth_Orif_Expr : constant TCode := 17; -- Boolean or else 2
kono
parents:
diff changeset
163 Truth_And_Expr : constant TCode := 18; -- Boolean and 2
kono
parents:
diff changeset
164 Truth_Or_Expr : constant TCode := 19; -- Boolean or 2
kono
parents:
diff changeset
165 Truth_Xor_Expr : constant TCode := 20; -- Boolean xor 2
kono
parents:
diff changeset
166 Truth_Not_Expr : constant TCode := 21; -- Boolean not 1
kono
parents:
diff changeset
167 Lt_Expr : constant TCode := 22; -- comparison < 2
kono
parents:
diff changeset
168 Le_Expr : constant TCode := 23; -- comparison <= 2
kono
parents:
diff changeset
169 Gt_Expr : constant TCode := 24; -- comparison > 2
kono
parents:
diff changeset
170 Ge_Expr : constant TCode := 25; -- comparison >= 2
kono
parents:
diff changeset
171 Eq_Expr : constant TCode := 26; -- comparison = 2
kono
parents:
diff changeset
172 Ne_Expr : constant TCode := 27; -- comparison /= 2
kono
parents:
diff changeset
173 Bit_And_Expr : constant TCode := 28; -- Binary and 2
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 -- The following entry is used to represent a discriminant value in
kono
parents:
diff changeset
176 -- the tree. It has a special tree code that does not correspond
kono
parents:
diff changeset
177 -- directly to a GCC node. The single operand is the index number
kono
parents:
diff changeset
178 -- of the discriminant in the record (1 = first discriminant).
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 Discrim_Val : constant TCode := 0; -- discriminant value 1
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 -- The following entry is used to represent a value not known at
kono
parents:
diff changeset
183 -- compile time in the tree, other than a discriminant value. It
kono
parents:
diff changeset
184 -- has a special tree code that does not correspond directly to
kono
parents:
diff changeset
185 -- a GCC node. The single operand is an arbitrary index number.
kono
parents:
diff changeset
186
kono
parents:
diff changeset
187 Dynamic_Val : constant TCode := 29; -- dynamic value 1
kono
parents:
diff changeset
188
kono
parents:
diff changeset
189 ------------------------
kono
parents:
diff changeset
190 -- The gigi Interface --
kono
parents:
diff changeset
191 ------------------------
kono
parents:
diff changeset
192
kono
parents:
diff changeset
193 -- The following declarations are for use by gigi for back annotation
kono
parents:
diff changeset
194
kono
parents:
diff changeset
195 function Create_Node
kono
parents:
diff changeset
196 (Expr : TCode;
kono
parents:
diff changeset
197 Op1 : Node_Ref_Or_Val;
kono
parents:
diff changeset
198 Op2 : Node_Ref_Or_Val := No_Uint;
kono
parents:
diff changeset
199 Op3 : Node_Ref_Or_Val := No_Uint) return Node_Ref;
kono
parents:
diff changeset
200 -- Creates a node using the tree code defined by Expr and from one to three
kono
parents:
diff changeset
201 -- operands as required (unused operands set as shown to No_Uint) Note that
kono
parents:
diff changeset
202 -- this call can be used to create a discriminant reference by using (Expr
kono
parents:
diff changeset
203 -- => Discrim_Val, Op1 => discriminant_number).
kono
parents:
diff changeset
204
kono
parents:
diff changeset
205 function Create_Discrim_Ref (Discr : Entity_Id) return Node_Ref;
kono
parents:
diff changeset
206 -- Creates a reference to the discriminant whose entity is Discr
kono
parents:
diff changeset
207
kono
parents:
diff changeset
208 --------------------------------------------------------
kono
parents:
diff changeset
209 -- Front-End Interface for Dynamic Size/Offset Values --
kono
parents:
diff changeset
210 --------------------------------------------------------
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 -- If Backend_Layout is False, then the front-end deals with all
kono
parents:
diff changeset
213 -- dynamic size and offset fields. There are two cases:
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 -- 1. The value can be computed at the time of type freezing, and
kono
parents:
diff changeset
216 -- is stored in a run-time constant. In this case, the field
kono
parents:
diff changeset
217 -- contains a reference to this entity. In the case of sizes
kono
parents:
diff changeset
218 -- the value stored is the size in storage units, since dynamic
kono
parents:
diff changeset
219 -- sizes are always a multiple of storage units.
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 -- 2. The size/offset depends on the value of discriminants at
kono
parents:
diff changeset
222 -- run-time. In this case, the front end builds a function to
kono
parents:
diff changeset
223 -- compute the value. This function has a single parameter
kono
parents:
diff changeset
224 -- which is the discriminated record object in question. Any
kono
parents:
diff changeset
225 -- references to discriminant values are simply references to
kono
parents:
diff changeset
226 -- the appropriate discriminant in this single argument, and
kono
parents:
diff changeset
227 -- to compute the required size/offset value at run time, the
kono
parents:
diff changeset
228 -- code generator simply constructs a call to the function
kono
parents:
diff changeset
229 -- with the appropriate argument. The size/offset field in
kono
parents:
diff changeset
230 -- this case contains a reference to the function entity.
kono
parents:
diff changeset
231 -- Note that as for case 1, if such a function is used to
kono
parents:
diff changeset
232 -- return a size, then the size in storage units is returned,
kono
parents:
diff changeset
233 -- not the size in bits.
kono
parents:
diff changeset
234
kono
parents:
diff changeset
235 -- The interface here allows these created entities to be referenced
kono
parents:
diff changeset
236 -- using negative Unit values, so that they can be stored in the
kono
parents:
diff changeset
237 -- appropriate size and offset fields in the tree.
kono
parents:
diff changeset
238
kono
parents:
diff changeset
239 -- In the case of components, if the location of the component is static,
kono
parents:
diff changeset
240 -- then all four fields (Component_Bit_Offset, Normalized_Position, Esize,
kono
parents:
diff changeset
241 -- and Normalized_First_Bit) are set to appropriate values. In the case of
kono
parents:
diff changeset
242 -- a non-static component location, Component_Bit_Offset is not used and
kono
parents:
diff changeset
243 -- is left set to Unknown. Normalized_Position and Normalized_First_Bit
kono
parents:
diff changeset
244 -- are set appropriately.
kono
parents:
diff changeset
245
kono
parents:
diff changeset
246 subtype SO_Ref is Uint;
kono
parents:
diff changeset
247 -- Type used to represent a Uint value that represents a static or
kono
parents:
diff changeset
248 -- dynamic size/offset value (non-negative if static, negative if
kono
parents:
diff changeset
249 -- the size value is dynamic).
kono
parents:
diff changeset
250
kono
parents:
diff changeset
251 subtype Dynamic_SO_Ref is Uint;
kono
parents:
diff changeset
252 -- Type used to represent a negative Uint value used to store
kono
parents:
diff changeset
253 -- a dynamic size/offset value.
kono
parents:
diff changeset
254
kono
parents:
diff changeset
255 function Is_Dynamic_SO_Ref (U : SO_Ref) return Boolean;
kono
parents:
diff changeset
256 pragma Inline (Is_Dynamic_SO_Ref);
kono
parents:
diff changeset
257 -- Given a SO_Ref (Uint) value, returns True iff the SO_Ref value
kono
parents:
diff changeset
258 -- represents a dynamic Size/Offset value (i.e. it is negative).
kono
parents:
diff changeset
259
kono
parents:
diff changeset
260 function Is_Static_SO_Ref (U : SO_Ref) return Boolean;
kono
parents:
diff changeset
261 pragma Inline (Is_Static_SO_Ref);
kono
parents:
diff changeset
262 -- Given a SO_Ref (Uint) value, returns True iff the SO_Ref value
kono
parents:
diff changeset
263 -- represents a static Size/Offset value (i.e. it is non-negative).
kono
parents:
diff changeset
264
kono
parents:
diff changeset
265 function Create_Dynamic_SO_Ref (E : Entity_Id) return Dynamic_SO_Ref;
kono
parents:
diff changeset
266 -- Given the Entity_Id for a constant (case 1), the Node_Id for an
kono
parents:
diff changeset
267 -- expression (case 2), or the Entity_Id for a function (case 3),
kono
parents:
diff changeset
268 -- this function returns a (negative) Uint value that can be used
kono
parents:
diff changeset
269 -- to retrieve the entity or expression for later use.
kono
parents:
diff changeset
270
kono
parents:
diff changeset
271 function Get_Dynamic_SO_Entity (U : Dynamic_SO_Ref) return Entity_Id;
kono
parents:
diff changeset
272 -- Retrieve the Node_Id or Entity_Id stored by a previous call to
kono
parents:
diff changeset
273 -- Create_Dynamic_SO_Ref. The approach is that the front end makes
kono
parents:
diff changeset
274 -- the necessary Create_Dynamic_SO_Ref calls to associate the node
kono
parents:
diff changeset
275 -- and entity id values and the back end makes Get_Dynamic_SO_Ref
kono
parents:
diff changeset
276 -- calls to retrieve them.
kono
parents:
diff changeset
277
kono
parents:
diff changeset
278 --------------------
kono
parents:
diff changeset
279 -- ASIS_Interface --
kono
parents:
diff changeset
280 --------------------
kono
parents:
diff changeset
281
kono
parents:
diff changeset
282 type Discrim_List is array (Pos range <>) of Uint;
kono
parents:
diff changeset
283 -- Type used to represent list of discriminant values
kono
parents:
diff changeset
284
kono
parents:
diff changeset
285 function Rep_Value
kono
parents:
diff changeset
286 (Val : Node_Ref_Or_Val;
kono
parents:
diff changeset
287 D : Discrim_List) return Uint;
kono
parents:
diff changeset
288 -- Given the contents of a First_Bit_Position or Esize field containing
kono
parents:
diff changeset
289 -- a node reference (i.e. a negative Uint value) and D, the list of
kono
parents:
diff changeset
290 -- discriminant values, returns the interpreted value of this field.
kono
parents:
diff changeset
291 -- For convenience, Rep_Value will take a non-negative Uint value
kono
parents:
diff changeset
292 -- as an argument value, and return it unmodified. A No_Uint value is
kono
parents:
diff changeset
293 -- also returned unmodified.
kono
parents:
diff changeset
294
kono
parents:
diff changeset
295 procedure Tree_Read;
kono
parents:
diff changeset
296 -- Initializes internal tables from current tree file using the relevant
kono
parents:
diff changeset
297 -- Table.Tree_Read routines.
kono
parents:
diff changeset
298
kono
parents:
diff changeset
299 ------------------------
kono
parents:
diff changeset
300 -- Compiler Interface --
kono
parents:
diff changeset
301 ------------------------
kono
parents:
diff changeset
302
kono
parents:
diff changeset
303 procedure List_Rep_Info (Bytes_Big_Endian : Boolean);
kono
parents:
diff changeset
304 -- Procedure to list representation information. Bytes_Big_Endian is the
kono
parents:
diff changeset
305 -- value from Ttypes (Repinfo cannot have a dependency on Ttypes).
kono
parents:
diff changeset
306
kono
parents:
diff changeset
307 procedure Tree_Write;
kono
parents:
diff changeset
308 -- Writes out internal tables to current tree file using the relevant
kono
parents:
diff changeset
309 -- Table.Tree_Write routines.
kono
parents:
diff changeset
310
kono
parents:
diff changeset
311 --------------------------
kono
parents:
diff changeset
312 -- Debugging Procedures --
kono
parents:
diff changeset
313 --------------------------
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 procedure List_GCC_Expression (U : Node_Ref_Or_Val);
kono
parents:
diff changeset
316 -- Prints out given expression in symbolic form. Constants are listed
kono
parents:
diff changeset
317 -- in decimal numeric form, Discriminants are listed with a # followed
kono
parents:
diff changeset
318 -- by the discriminant number, and operators are output in appropriate
kono
parents:
diff changeset
319 -- symbolic form No_Uint displays as two question marks. The output is
kono
parents:
diff changeset
320 -- on a single line but has no line return after it. This procedure is
kono
parents:
diff changeset
321 -- useful only if operating in backend layout mode.
kono
parents:
diff changeset
322
kono
parents:
diff changeset
323 procedure lgx (U : Node_Ref_Or_Val);
kono
parents:
diff changeset
324 -- In backend layout mode, this is like List_GCC_Expression, but
kono
parents:
diff changeset
325 -- includes a line return at the end. If operating in front end
kono
parents:
diff changeset
326 -- layout mode, then the name of the entity for the size (either
kono
parents:
diff changeset
327 -- a function of a variable) is listed followed by a line return.
kono
parents:
diff changeset
328
kono
parents:
diff changeset
329 end Repinfo;