]> gcc.gnu.org Git - gcc.git/blob - gcc/README.gnat
Fix typo.
[gcc.git] / gcc / README.gnat
1 The following patches are needed in order to build GNAT with EGCS.
2
3 These patches were tested with egcs-980308 and gnat-3.10p on a mips-sgi-irix6.3
4 system. The gnat build succeeded as per the instructions in the gnat
5 README.BUILD file for building one library, except that CFLAGS="-O -g" and
6 GNATLIBCFLAGS="-O -g" were substituted for the recommended "-O2" so that the
7 build could be debugged. There was no attempt to run the resulting build
8 against any testsuite or validation suite.
9
10 --
11
12 Developers Notes:
13
14 Every use of sizetype in the Ada front end should be checked to see if perhaps
15 it should be using bitsizetype instead. The change to maybe_pad_type is just
16 a hack to work around this problem, and may not be desirable in the long term.
17
18 There are many places in the Ada front end where it calls operand_equal_p to
19 see if two type sizes are the same. operand_equal_p fails if the two
20 arguments have different TYPE_MODEs. sizetype and bitsizetype can have
21 different TYPE_MODEs. Thus this code can fail if one type size is based
22 on sizetype, and the other is based on bitsizetype. The change to
23 maybe_pad_type fixes one very critical place where this happens. There may
24 be others.
25
26 --
27
28 Mon Mar 16 11:00:25 1998 Jim Wilson <wilson@cygnus.com>
29
30 * a-gtran3.c (maybe_pad_type): Convert both size and orig_size to
31 sizetype if they have differing modes.
32 * a-misc.c (gnat_tree_code_type): Change from string to char array.
33 (init_lex): Delete realloc calls for tree_code_* globals. Adjust
34 bcopy call for gnat_tree_code_type change.
35 * a-tree.def: Adjust for tree_code_* type changes.
36
37 * a-misc.c (init_lex): Rename to init_parse.
38
39 diff -c ada/a-gtran3.c /home/brolley/comp/egcs/tmp/ada/a-gtran3.c
40 *** ada/a-gtran3.c Mon Mar 30 16:29:04 1998
41 --- /home/brolley/comp/egcs/tmp/ada/a-gtran3.c Thu Apr 2 17:16:15 1998
42 ***************
43 *** 3329,3334 ****
44 --- 3329,3341 ----
45 isn't changing. Likewise, clear the alignment if it isn't being
46 changed. Then return if we aren't doing anything. */
47
48 + if (size != 0
49 + && TYPE_MODE (TREE_TYPE (size)) != TYPE_MODE (TREE_TYPE (orig_size)))
50 + {
51 + size = convert (sizetype, size);
52 + orig_size = convert (sizetype, orig_size);
53 + }
54 +
55 if (size != 0
56 && (operand_equal_p (size, orig_size, 0)
57 || (TREE_CODE (orig_size) == INTEGER_CST
58 diff -c ada/a-misc.c /home/brolley/comp/egcs/tmp/ada/a-misc.c
59 *** ada/a-misc.c Mon Mar 30 16:29:05 1998
60 --- /home/brolley/comp/egcs/tmp/ada/a-misc.c Thu Apr 2 17:36:19 1998
61 ***************
62 *** 70,77 ****
63
64 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
65
66 ! char *gnat_tree_code_type[] = {
67 ! "x",
68 #include "a-tree.def"
69 };
70 #undef DEFTREECODE
71 --- 70,77 ----
72
73 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
74
75 ! char gnat_tree_code_type[] = {
76 ! 'x',
77 #include "a-tree.def"
78 };
79 #undef DEFTREECODE
80 ***************
81 *** 254,259 ****
82 --- 254,268 ----
83 print_lang_statistics ()
84 {}
85
86 + void
87 + lang_print_xnode (file, node, indent)
88 + FILE *file;
89 + tree node;
90 + int indent;
91 + {
92 + }
93 +
94 +
95 /* integrate_decl_tree calls this function, but since we don't use the
96 DECL_LANG_SPECIFIC field, this is a no-op. */
97
98 ***************
99 *** 603,622 ****
100 it, but it's where g++ does it. */
101
102 void
103 ! init_lex ()
104 {
105 lang_expand_expr = gnat_expand_expr;
106
107 - tree_code_type
108 - = (char **) realloc (tree_code_type,
109 - sizeof (char *) * LAST_GNAT_TREE_CODE);
110 - tree_code_length
111 - = (int *) realloc (tree_code_length,
112 - sizeof (int) * LAST_GNAT_TREE_CODE);
113 - tree_code_name
114 - = (char **) realloc (tree_code_name,
115 - sizeof (char *) * LAST_GNAT_TREE_CODE);
116 -
117 bcopy ((char *) gnat_tree_code_type,
118 (char *) (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE),
119 ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
120 --- 612,622 ----
121 it, but it's where g++ does it. */
122
123 void
124 ! init_parse (filename)
125 ! char *filename;
126 {
127 lang_expand_expr = gnat_expand_expr;
128
129 bcopy ((char *) gnat_tree_code_type,
130 (char *) (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE),
131 ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
132 ***************
133 *** 629,636 ****
134
135 bcopy ((char *) gnat_tree_code_name,
136 (char *) (tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE),
137 ! ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
138 ! * sizeof (char *)));
139 }
140
141 /* Sets some debug flags for the parsed. It does nothing here. */
142 --- 629,640 ----
143
144 bcopy ((char *) gnat_tree_code_name,
145 (char *) (tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE),
146 ! LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE);
147 ! }
148 !
149 ! void
150 ! finish_parse ()
151 ! {
152 }
153
154 /* Sets some debug flags for the parsed. It does nothing here. */
155 diff -c ada/a-tree.def /home/brolley/comp/egcs/tmp/ada/a-tree.def
156 *** ada/a-tree.def Mon Mar 30 16:29:09 1998
157 --- /home/brolley/comp/egcs/tmp/ada/a-tree.def Thu Apr 2 17:20:38 1998
158 ***************
159 *** 31,69 ****
160 The only field used if TREE_COMPLEXITY, which contains the GNAT node
161 number. */
162
163 ! DEFTREECODE (TRANSFORM_EXPR, "transform_expr", "e", 0)
164
165 /* Perform an unchecked conversion between the input and the output.
166 if TREE_ADDRESSABLE is set, it means this is in an LHS; in that case,
167 we can only use techniques, such as pointer punning, that leave the
168 expression a "name". */
169
170 ! DEFTREECODE (UNCHECKED_CONVERT_EXPR, "unchecked_convert_expr", "1", 1)
171
172 /* A type that is an unconstrained array itself. This node is never passed
173 to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE
174 is the type of a record containing the template and data. */
175
176 ! DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", "t", 0)
177
178 /* A reference to an unconstrained array. This node only exists as an
179 intermediate node during the translation of a GNAT tree to a GCC tree;
180 it is never passed to GCC. The only field used is operand 0, which
181 is the fat pointer object. */
182
183 ! DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref", "r", 1)
184
185 /* An expression that returns an RTL suitable for its type. Operand 0
186 is an expression to be evaluated for side effects only. */
187
188 ! DEFTREECODE (NULL_EXPR, "null_expr", "e", 1)
189
190 /* An expression that emits a USE for its single operand. */
191
192 ! DEFTREECODE (USE_EXPR, "use_expr", "e", 1)
193
194 /* An expression that is treated as a conversion while generating code, but is
195 used to prevent infinite recursion when conversions of biased types are
196 involved. */
197
198 ! DEFTREECODE (GNAT_NOP_EXPR, "gnat_nop_expr", "1", 1)
199 --- 31,69 ----
200 The only field used if TREE_COMPLEXITY, which contains the GNAT node
201 number. */
202
203 ! DEFTREECODE (TRANSFORM_EXPR, "transform_expr", 'e', 0)
204
205 /* Perform an unchecked conversion between the input and the output.
206 if TREE_ADDRESSABLE is set, it means this is in an LHS; in that case,
207 we can only use techniques, such as pointer punning, that leave the
208 expression a "name". */
209
210 ! DEFTREECODE (UNCHECKED_CONVERT_EXPR, "unchecked_convert_expr", '1', 1)
211
212 /* A type that is an unconstrained array itself. This node is never passed
213 to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE
214 is the type of a record containing the template and data. */
215
216 ! DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", 't', 0)
217
218 /* A reference to an unconstrained array. This node only exists as an
219 intermediate node during the translation of a GNAT tree to a GCC tree;
220 it is never passed to GCC. The only field used is operand 0, which
221 is the fat pointer object. */
222
223 ! DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref", 'r', 1)
224
225 /* An expression that returns an RTL suitable for its type. Operand 0
226 is an expression to be evaluated for side effects only. */
227
228 ! DEFTREECODE (NULL_EXPR, "null_expr", 'e', 1)
229
230 /* An expression that emits a USE for its single operand. */
231
232 ! DEFTREECODE (USE_EXPR, "use_expr", 'e', 1)
233
234 /* An expression that is treated as a conversion while generating code, but is
235 used to prevent infinite recursion when conversions of biased types are
236 involved. */
237
238 ! DEFTREECODE (GNAT_NOP_EXPR, "gnat_nop_expr", '1', 1)
239
This page took 0.05208 seconds and 6 git commands to generate.