Commit | Line | Data |
---|---|---|
076eadac C |
1 | Fri Jul 19 18:56:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) |
2 | ||
3 | * cse.c (canon_reg): Allow for recursive call returning 0 (if we had | |
4 | an EXPR_LIST). | |
5 | * sched.c (init_aliases_analysis): Ignore REG_EQUAL note when its value | |
6 | is an EXPR_LIST. | |
7 | * unroll.c (loop_iterations): Likewise. | |
8 | ||
9 | * rs6000.md (andsi3): Fix typo in and-with-cc pattern. | |
10 | ||
11 | Fri Jul 19 11:23:22 1991 Tom Wood (wood at dg-rtp.dg.com) | |
12 | ||
13 | * toplev.c (set_target_switch): For TARGET_OPTIONS, set the | |
14 | variable to the variable part of the actual option. | |
15 | * tm-m88k.h, out-m88k.c: Change the use of m88k_short_data. | |
16 | ||
17 | * varasm.c (output_constant_def): Merge get_or_assign_label and | |
18 | delete it. Ensure that ENCODE_SEGMENT_INFO is evaluated before | |
19 | SELECT_SECTION. | |
20 | ||
21 | Thu Jul 18 19:57:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
22 | ||
23 | * expr.h (MUST_PASS_IN_STACK_BAD_PADDING): Definitions were backwards. | |
24 | ||
25 | Thu Jul 18 17:52:46 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
26 | ||
27 | * unroll.c: Fix typos in comments. | |
28 | (splittable_regs_updates): New static global variable. | |
29 | Indicates the number of instructions that modify a split biv | |
30 | remaining during the last iteration of a loop, so that the last one | |
31 | can be handled specially. | |
32 | (unroll_loop): Allocate and clear it. | |
33 | (copy_loop_body): Use it to determine how to rewrite an insn | |
34 | modifying a split iv. | |
35 | (find_splittable_regs): When a splittable biv is identified, set it | |
36 | equal to the number of insn modifying the biv. | |
37 | (find_splittable_givs): When a splittable giv is identified, set | |
38 | it to one if this giv is a reg. | |
39 | ||
40 | * unroll.c (copy_loop_body): Instead of trying to special case | |
41 | insns that use start_label, use the label_map to map the start | |
42 | label to the appropriate label for all insns except those that | |
43 | must be inverted and redirected. The former code did not handle | |
44 | tablejumps that used the start_label correctly. | |
45 | ||
46 | * integrate.c (copy_rtx_and_substitute): Don't legitimize an | |
47 | address inside of an ADDRESS rtx. This fails, because this need | |
48 | not be a validate address, but it is always valid in the context | |
49 | it appears in. | |
50 | ||
51 | Thu Jul 18 08:13:56 1991 Tom Wood (wood at dg-rtp.dg.com) | |
52 | ||
53 | * toplev.c (set_target_switch): Support TARGET_OPTIONS for command | |
54 | options with values. | |
55 | ||
56 | * varasm.c (output_constant_def): Set flags with | |
57 | ENCODE_SEGMENT_INFO for strings and constructors. | |
58 | * tm-mips.h (ENCODE_SEGMENT_INFO): Must be a VAR_DECL. | |
59 | ||
60 | * out-m88k.c, tm-m88k.h, m88k.md: Implement a global pool approach | |
61 | to short addressing. | |
62 | ||
63 | * m88k.md (extendsfdf2, truncdfsf2): Use fsub rather than fadd. | |
64 | This conforms to IEEE 754 in all rounding modes except round to | |
65 | negative infinity whereas fadd conforms only in that mode. | |
66 | ||
67 | Thu Jul 18 01:01:37 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) | |
68 | ||
69 | * make-cc1.com: Add command line to compile reg-stack.c, and add | |
70 | reg-stack.obj to the list of files passed to the VMS linker. | |
71 | ||
72 | Thu Jul 18 00:11:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
73 | ||
74 | * Makefile.in (enquire.o): Need not depend on gnulib. | |
75 | (gnulib2): Renamed from gnulib2.portable. | |
76 | Don't do ranlib. | |
77 | (gnulib2.portable): Just refers to gnulib2. | |
78 | (gnulib1.portable): Don't do ranlib. | |
79 | ||
80 | Wed Jul 17 11:19:09 1991 Michael Meissner (meissner at geech.gnu.ai.mit.edu) | |
81 | ||
82 | * Makefile.in (gcc): Do a -dumpspecs after building gcc so that -B./ | |
83 | will override any installed specs in /usr/local/lib. | |
84 | (mostlyclean): Delete *.cpp files which are left if you use | |
85 | -save-temps. | |
86 | ||
87 | Wed Jul 17 06:08:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
88 | ||
89 | * combine.c (try_combine): When putting I2 and/or I1 into NEWPAT, | |
90 | check for a PARALLEL; if so, just put in the relevant SET instead | |
91 | of making a PARALLEL containing a PARALLEL. | |
92 | ||
93 | Tue Jul 16 18:58:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
94 | ||
95 | * combine.c (record_value_for_reg): Show we haven't seen the death | |
96 | of a register once we have seen it modified. | |
97 | ||
98 | * reload1.c (reload): If we decide to put a pseudo which used to have | |
99 | a MEM equiv onto the stack, set SOMETHING_CHANGED and reprocess all | |
100 | eliminations and pseudos without scanning the insns. | |
101 | ||
102 | Tue Jul 16 13:17:14 1991 Michael Meissner (meissner at wookumz.gnu.ai.mit.edu) | |
103 | ||
104 | * cplus-decl.c (sigsegv): Make signal handler void for full | |
105 | prototyping systems. | |
106 | ||
107 | Tue Jul 16 12:25:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
108 | ||
109 | * dbxout.c (dbxout_symbol): Ignore types with no names of any kind. | |
110 | ||
111 | Tue Jul 16 07:12:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
112 | ||
113 | * stmt.c (pushcase, pushcase_range): Return label in *DUPLICATE, | |
114 | not integer value. | |
115 | ||
116 | * rtlanal.c (reg_referenced_p, reg_overlap_mentioned_p): Allow X to | |
117 | be (cc0) or (pc). | |
118 | ||
119 | * combine.c (subst, case SET): Delete code to remove "unnecessary" | |
120 | SUBREG; code was incorrect and this is done (corrected below) in | |
121 | simplify_comparison. | |
122 | (simplify_comparison): Can only remove SUBREG for equality comparisons. | |
123 | ||
124 | * expr.c (expand_expr, case COND_EXPR): If condition has side effects, | |
125 | ensure we evaluate it before evaluating an arm of the COND_EXPR. | |
126 | ||
127 | Mon Jul 15 21:59:36 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
128 | ||
129 | * rtl.h (FUNCTION_FLAGS_RETURNS_STRUCT): Fix typo in value. | |
130 | ||
131 | Mon Jul 15 22:18:40 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
132 | ||
133 | * cccp.c (main): Ignore CPATH if -nostdinc. | |
134 | ||
135 | Mon Jul 15 22:00:02 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) | |
136 | ||
137 | * reload.c (find_reloads): Fix typo (reg_sets_p instead of | |
138 | reg_set_p). | |
139 | ||
140 | Mon Jul 15 21:49:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
141 | ||
142 | * c-parse.y (stmt): Emit the nop for the start of a loop | |
143 | only after the line number. | |
144 | ||
145 | Mon Jul 15 16:50:51 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edn) | |
146 | ||
147 | * rtlanal.c (reg_set_p): If we are passed an insn, only pass the | |
148 | pattern to note_stores. | |
149 | ||
150 | * local-alloc.c (validate_equiv_mem): A CALL_INSN invalidates all | |
151 | memory. | |
152 | ||
153 | Sun Jul 14 06:34:47 1991 Richard Kenner (kenner at vlsi1.ultra.hyu.edu) | |
154 | ||
155 | * cse.c (last_jump_equiv_class): New variable. | |
156 | (record_jump_equiv): Set it. | |
157 | (cse_insn): Clear it. | |
158 | (cse_around_loop): Invalidate all entries in last_jump_equiv_class. | |
159 | (cse_set_around_loop): Ensure our replacement is cheaper. | |
160 | ||
161 | Sat Jul 13 17:15:30 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
162 | ||
163 | * cplus-decl.c (finish_enum): Fix typo in arguments for finish_decl. | |
164 | * cplus-class.c (finish_struct): Likewise. | |
165 | ||
166 | Fri Jul 12 16:45:02 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
167 | ||
168 | * dbxout.c (dbxout_symbol): Don't crash when DECL_NAME is 0. | |
169 | ||
170 | Fri Jul 12 15:38:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
171 | ||
172 | * expr.c (do_tablejump): Don't write BARRIER between jump and table | |
173 | if they must remain adjacent. | |
174 | ||
175 | * varasm.c (make_decl_rtl): Set REG_USERVAR_P when register name | |
176 | is specified. | |
177 | * integrate.c (subst_constants): Don't substitute for a user | |
178 | variable assigned to a hard register. | |
179 | ||
180 | * reload.c (find_reloads): Add new vars no_{input,output}_reloads to | |
181 | indicate when the corresponding reload type is not permitted; reject | |
182 | an alternative that would try such a reload. | |
183 | * rs6000.md (decrement-and-branch): No longer need kludges to | |
184 | avoid output reloads. | |
185 | Use '0' instead of 'c' for input 1 in alternative 0. | |
186 | Allow operand 0 to be in non-general register. | |
187 | ||
188 | Fri Jul 12 10:54:39 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
189 | ||
190 | * c-decl.c (finish_struct, finish_enum): Fix typo in arguments for | |
191 | finish_decl. | |
192 | ||
193 | * i386.md (bit test patterns): Delete bit tests using implicitly | |
194 | masked bit number operand: the hardware doesn't work like that. | |
195 | ||
196 | Fri Jul 12 09:50:43 1991 Michael Meissner (meissner at spiff.gnu.ai.mit.edu) | |
197 | ||
198 | * tm-hp9k2bsd.h (toplevel): Remove RCS HISTORY log. | |
199 | ||
200 | Thu Jul 11 00:46:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
201 | ||
202 | * c-parse.y (yylex): Do try signed int for ANSI nondecimal constants. | |
203 | ||
204 | * c-typeck.c (record_format_info): The first time, use xmalloc. | |
205 | ||
206 | Wed Jul 10 18:54:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
207 | ||
208 | * jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;" | |
209 | case: had temp3 instead of temp4. | |
210 | ||
211 | * cplus-lex.c (lineno, end_of_file): Move definition to before | |
212 | first use. | |
213 | (reinit_parse_for_block): Variable `c' must be int to ensure EOF fits. | |
214 | * cplus-input.c (getch): Remove extraneous declaration of end_of_file. | |
215 | ||
216 | * reload1.c: Include insn-flags.h. | |
217 | (emit_reload_insns): Handle the case where we reload an entire | |
218 | address; use "reload_load_address" pattern, if it exists. | |
219 | Remove explicit SImode reference; should have been Pmode, but | |
220 | IN can be used instead of rebuilding it. | |
221 | * Makefile.in (reload1.o): Includes insn-flags.h. | |
222 | ||
223 | * reload.c (find_reloads): If replacing an output REG with a MEM, | |
224 | write a CLOBBER for the REG after the insn. | |
225 | * reload1.c (eliminate_regs): Add new arg INSN; if nonzero, add a | |
226 | CLOBBER when replacing a REG in SET_DEST with a MEM. | |
227 | (reload, eliminate_regs_in_insn): Add new arg to eliminate_regs. | |
228 | * dwarfout.c (output_bound_representation, location_attribute): | |
229 | Likewise. | |
230 | ||
231 | * reload1.c (reload): If a reg_equiv_memory_loc isn't strictly valid | |
232 | and isn't sufficiently simple, use a stack slot instead. | |
233 | (alter_regs): Don't delete reg_equiv_init insns here. | |
234 | (reload_as_needed): Do it here. | |
235 | ||
236 | * stor-layout.c (get_best_mode): Correct test for alignment. | |
237 | ||
238 | * loop.c (move_movables): Don't get confused by NOTE insns in gnulib | |
239 | call sequence. | |
240 | ||
241 | Wed Jul 10 18:40:32 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) | |
242 | ||
243 | * cccp.c (enum node_type): Added T_WARNING. | |
244 | ||
245 | * cccp.c (directive_table): Added #warning. | |
246 | ||
247 | * cccp.c (do_warning): Print warning message and continue. | |
248 | ||
249 | Wed Jul 10 18:38:28 1991 Matthew Self (mself at geech.gnu.ai.mit.edu) | |
250 | ||
251 | * c-parse.y, objc-parse.y (attrib): Pass "format" attribute | |
252 | through. Takes one identifier and two constants as args. | |
253 | identifier must be either printf or scanf. | |
254 | ||
255 | * c-common.c (decl_attributes): Process "format" attributes. | |
256 | Call new routine record_format_info(). | |
257 | ||
258 | * c-typeck.c (struct function_info): Changed function_ident field; | |
259 | store identifier node rather than char * to speed lookup. | |
260 | Renamed arg_num field to format_num. Replaced is_varargs field | |
261 | with new first_arg_num field. | |
262 | ||
263 | * c-typeck.c (check_format): Modified to use new arg_num and | |
264 | first_arg_num fields. | |
265 | ||
266 | * c-typeck.c (record_format_info): New routine. Replaces static | |
267 | table of functions to check. | |
268 | ||
269 | * cplus-typeck.c (record_format_info): New stub routine so c++ | |
270 | will link. Someone should implement format checking for c++. | |
271 | ||
272 | * c-typeck.c (init_format_info_table): New routine to add | |
273 | entries for ANSI functions to table. | |
274 | ||
275 | * c-decl.c (init_decl_processing): Call init_format_info_table(). | |
276 | ||
277 | * c-typeck.c (build_function_call): Modified to use dynamic table | |
278 | rather than static one. Compare identifier nodes rather than | |
279 | using strcmp(). | |
280 | ||
281 | * gcc.texinfo (): Document "format" attribute. | |
282 | ||
283 | * c-typeck.c (check_format): Call warning() directly rather than | |
284 | returning the warning string. This way we can give multiple warnings | |
285 | by continuing. Several changes to make continuing safe. | |
286 | ||
287 | * c-typeck.c (build_function_call): Incorporated changed return | |
288 | value of check_format(). | |
289 | ||
290 | * c-typeck.c (check_format): Check for NULL format string. | |
291 | ||
292 | Wed Jul 10 16:40:54 1991 Tom Wood (wood at dg-rtp.dg.com) | |
293 | ||
294 | * sdbout.c (sdbout_tags): Delete this and use the TYPE_DECL | |
295 | representation of tagged types. Types are now output in their | |
296 | original lexical order. | |
297 | (sdbout_symbol): Return early (only using sdbout_one_type) when a | |
298 | tagged type is encountered. | |
299 | (sdbout_block, sdbout_symbol): Don't use sdbout_tags. | |
300 | * toplev.c (compile_file): Don't use sdbout_tags. | |
301 | * varasm.c (assemble_function): Don't use sdbout_tags. | |
302 | ||
303 | Wed Jul 10 15:13:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
304 | ||
305 | * dbxout.c (dbxout_tags): Function deleted. Calls deleted too. | |
306 | (dbxout_tagged_type): New function. | |
307 | (dbxout_symbol): Call that. | |
308 | * toplev.c (compile_file): Call to dbxout_tags deleted. | |
309 | ||
310 | * c-parse.y (yylex): Simplify choice of type for integers. | |
311 | When traditional, all integers are signed unless explicitly unsigned. | |
312 | ||
313 | Wed Jul 10 13:35:27 1991 Tom Wood (wood at dg-rtp.dg.com) | |
314 | ||
315 | * configure (m88k-svr4): Needs make-m88ksvr4. | |
316 | * make-m88ksvr4: New file. | |
317 | ||
318 | Wed Jul 10 13:18:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
319 | ||
320 | * c-decl.c (duplicate_decls): Warn if `inline' is not consistent. | |
321 | ||
322 | * cccp.c (hack_vms_include_specification): Fix typos. | |
323 | ||
324 | Tue Jul 9 22:21:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
325 | ||
326 | * loop.c (find_and_verify_loops): RETURN insns aren't listed in | |
327 | loop_number_exit_labels, so don't try to remove JUMP_LABEL of a | |
328 | RETURN from that list. | |
329 | ||
330 | * rtlanal.c (reg_referenced_between_p): New function. | |
331 | * jump.c (jump_optimize): Use it instead of reg_used_between_p when | |
332 | checking for "if (...) x = a; else x = b;" case. | |
333 | ||
334 | Tue Jul 9 13:03:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
335 | ||
336 | * expr.c (move_block_to_reg): Don't force_const_mem on non-constant. | |
337 | ||
338 | Tue Jul 9 09:13:32 1991 Tom Wood (wood at dg-rtp.dg.com) | |
339 | ||
340 | * c-decl.c (finish_struct): Record tagged types as a TYPE_DECL | |
341 | with a NULL DECL_NAME. | |
342 | (finish_enum): Ditto. | |
343 | * cplus-decl.c (finish_enum): Ditto. | |
344 | * cplus-class.c (finish_struct): Ditto. | |
345 | ||
346 | * dbxout.c (dbxout_symbol): Ignore TYPE_DECLs for tagged types. | |
347 | * cplus-dbxout.c (dbxout_symbol): Ditto. | |
348 | * sdbout.c (sdbout_symbol): Ditto. | |
349 | ||
350 | * toplev.c (compile_file): DECL_NAME may be null. | |
351 | ||
352 | * dwarfout.c (output_symbol): Use output_dies_for_tagged_type for | |
353 | TYPE_DECLs of tagged types. | |
354 | (dwarfout_output_tagged_type): Deleted. | |
355 | (output_dies_for_tagged_type): Mark TREE_ASM_WRITTEN early. | |
356 | ||
357 | Mon Jul 8 19:36:44 1991 Tom Wood (wood at dg-rtp.dg.com) | |
358 | ||
359 | * jump.c (jump_optimize): Check for extra labels when detecting | |
360 | "if (...) x = a; else x = b;". Include the insn for "x = a;" when | |
361 | testing for data conflict. | |
362 | ||
363 | Mon Jul 8 19:34:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
364 | ||
365 | * integrate.c (copy_for_inline, case MEM): Must copy a MEM even if | |
366 | it has a constant address if that address involves a LABEL_REF. | |
367 | ||
368 | * rtlanal.c (reg_set_p): Only check for REG_INC notes and a CALL_INSN | |
369 | if we are passed an insn. | |
370 | * local-alloc.c (optimize_reg_copy): Remove tests now done in | |
371 | reg_set_p. | |
372 | ||
373 | Mon Jul 8 16:38:49 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
374 | ||
375 | * c-parse.y (yylex): Pedantic warning here for `asm'. | |
376 | No warning for `__asm__'. | |
377 | (maybe_type_qual, maybeasm, extdef): No warning here. | |
378 | ||
379 | * objc-actions.c: Rename OBJC_SELS_R_INTS to OBJC_INT_SELECTORS. | |
380 | Rename OBJC_UNIQUE_SELS to OBJ_NONUNIQUE_SELECTORS, reversing sense. | |
381 | Eliminate OBJC_SELS_R_STRUCT_PTRS. | |
382 | ||
383 | Mon Jul 8 06:37:00 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
384 | ||
385 | * rtlanal.c (reg_{used,set}_between_p): Allow FROM_INSN == TO_INSN; | |
386 | return 0 in that case. | |
387 | ||
388 | * jump.c (mark_jump_label): Fix typo in use of GET_RTX_LENGTH. | |
389 | ||
390 | * reload.c (reload_strict_low): Change comment to say that this is | |
391 | always zero; we don't use it any more. | |
392 | ||
393 | Sun Jul 7 22:14:13 1991 Michael Meissner (meissner@churchy.gnu.ai.mit.edu) | |
394 | ||
395 | * tm-mips.h (FRAME_POINTER_REQUIRED): Fix typo that required a frame | |
396 | if alloca was not called, instead of the reverse. | |
397 | ||
398 | Sun Jul 7 17:14:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
399 | ||
400 | * cccp.c (struct file_buf): New field system_header_p. | |
401 | Everything that pushes on instack now initializes this field. | |
402 | (finclude): New arg to set that field. Callers changed. | |
403 | (do_include): Pass that arg as 1 for <...>, else 0. | |
404 | ||
405 | * cccp.c (do_include): Warn for first use of #import | |
406 | except in system header files. | |
407 | (handle_directive): Support #import if compiling for Next. | |
408 | ||
409 | * cccp.c (do_pragma): For #pragma once, warn it is obsolete. | |
410 | ||
411 | Sun Jul 7 14:29:04 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
412 | ||
413 | * tm-att386.h (NO_DOLLAR_IN_LABEL): Define this here, | |
414 | * tm-i386sco.h (NO_DOLLAR_IN_LABEL): not here. | |
415 | ||
416 | Sun Jul 7 06:20:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
417 | ||
418 | * rtlanal.c (reg_set_p): Return 1 if REG is found in a REG_INC | |
419 | note or if INSN is a CALL_INSN and REG is a hard reg. | |
420 | (reg_set_last): Only return a register or constant; if returning a | |
421 | register, ensure it isn't modified between the SET we found and INSN. | |
422 | ||
423 | * jump.c (jump_optimize): If SMALL_REGISTER_CLASSES, don't make a | |
424 | store-flag insn if any register involved is a hard reg. | |
425 | ||
426 | Sat Jul 6 14:51:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
427 | ||
428 | * expr.c (expand_assignment): Don't abort for volatile structure field | |
429 | even if the structure is in a register. | |
430 | NOTE: This leaves the problem of implementing whatever meaning | |
431 | a volatile field should actually have. | |
432 | ||
433 | * fold-const.c (div_and_round_double): Make lnum and lden unsigned. | |
434 | Use the small-denominator algorithm only for denom < 2**24. | |
435 | Fix backward conditionals in ?: operators in general case. | |
436 | Change i + j to i - 1 + j when indexing num. | |
437 | ||
438 | Fri Jul 5 21:36:57 1991 Ken Raeburn (raeburn at watch.com) | |
439 | ||
440 | * genpeep.c (match_rtx, case MATCH_OP_DUP): Output semicolon after | |
441 | "goto" statement. | |
442 | ||
443 | Fri Jul 5 09:45:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
444 | ||
445 | * rs6000.md (andsi3): Bias alternatives so we always prefer constants. | |
446 | (define_splits of DImode, SFmode, and DFmode): Don't split | |
447 | unless after reload. | |
448 | (ashldi3, lshrdi3): Fix bugs in instruction order; use & in | |
449 | output constraint so can't conflict with operand 2; use '0' | |
450 | constraint to allow operands 0 and 1 to be the same register. | |
451 | ||
452 | * regclass.c (reg_n_sets): Move definition before use. | |
453 | ||
454 | * reorg.c (fill_simple_delay_slots): Candidate for delay slot cannot | |
455 | set anything set between it and the delay insn. | |
456 | ||
457 | * jump.c (jump_optimize): In "if (...) x = a; else x = b;", correctly | |
458 | specify range to check if X is used or set. | |
459 | Use rtx_equal_p to check for matching X. | |
460 | ||
461 | Thu Jul 4 15:55:45 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) | |
462 | ||
463 | * cccp.c (default_include): Add /usr/mach/include for MACH systems. | |
464 | ||
465 | * configure (m88k-luna): Needs make-m88kluna. | |
466 | * make-m88kluna: New file. | |
467 | ||
468 | * dwarf.h: New file derived from the UNIX International | |
469 | Programming Languages Special Interest Group DWARF specification. | |
470 | * dwarfout.c (includes): Include "dwarf.h". | |
471 | (subscript_data_attribute): Use FMT_CODE to encode array subscripts. | |
472 | (languagribute): LANG type no longer provided by dwarf.h. | |
473 | (output_source_file_die): Determine proper language attribute. | |
474 | ||
475 | Thu Jul 4 12:14:16 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
476 | ||
477 | * cplus-xref.c: define rindex if USG | |
478 | ||
479 | Thu Jul 4 12:36:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
480 | ||
481 | * gcc.c (process_command): Correctly split -L from its arg. | |
482 | * SWITCHES_NEED_SPACES: New host machine option. | |
483 | This really ought to be defined now for certain hosts, | |
484 | but I don't know which ones they are. | |
485 | ||
486 | Wed Jul 3 23:31:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
487 | ||
488 | * tm-m68k.h (ASM_OUTPUT_FLOAT): Check CROSS_COMPILE (there was a typo). | |
489 | ||
490 | Wed Jul 3 22:05:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
491 | ||
492 | * cse.c (simplify_binary_operation, case MINUS): Fix typo in op number. | |
493 | ||
494 | * cse.c (cse_basic_block): Correctly handle the case where TO | |
495 | was a label with zero uses at the end of the function. | |
496 | ||
497 | * combine.c (significant_valid): New variable. | |
498 | (combine_instructions): Turn significant_valid off until after | |
499 | we finished computing reg_significant. | |
500 | (significant_bits): Ignore reg_significant when significant_valid | |
501 | is zero. | |
502 | ||
503 | * rtlanal.c (reg_set_last): Go past CALL_INSN as long as we are not | |
504 | looking for a hard register. | |
505 | ||
506 | Wed Jul 3 21:07:18 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
507 | ||
508 | * sched.c (schedule_block): When computing what registers are dead | |
509 | at the end of the current block, correctly handle REG_DEAD notes | |
510 | that refer to multi-word hard registers. | |
511 | ||
512 | * loop.c (mark_loop_jump): When invalidating loops with multiple | |
513 | entries, must invalidate every nested loop containing the target | |
514 | of a loop entry jump, except for those that also contain the jump | |
515 | itself. | |
516 | ||
517 | * loop.c (record_giv): When computing whether a giv is | |
518 | replaceable, check whether the biv update has a valid luid, and | |
519 | mark it as not replaceable if not. | |
520 | ||
521 | * combine.c (gen_rtx_combine): Call rtx_alloc instead of gen_rtx, | |
522 | because it is much faster, especially on some RISC machines. | |
523 | ||
524 | * fixincludes: Add optional argument which indicates where to put | |
525 | the fixed include files. Echo the directory name where the | |
526 | include files will be put. | |
527 | ||
528 | * cccp.c (struct default_include): Don't examine | |
529 | STANDARD_INCLUDE_DIR or /usr/local/include when | |
530 | NO_STANDARD_INCLUDE_DIR is defined. This is useful when building | |
531 | cross compilers. | |
532 | (main): Only send SIGPIPE signal if the SIGPIPE signal exists on | |
533 | the host. | |
534 | (rescan, handle_directive, skip_if_group, validate_else, | |
535 | skip_to_end_of_comment, macarg1, discard_comments): Accept '//' as | |
536 | a comment in Objective-C as well as C++. The Objective C language | |
537 | specifies that '//' starts a comment. | |
538 | ||
539 | * .gdbinit (ptn): Define new macro to print out the name of a type | |
540 | node. | |
541 | ||
542 | * stab.def: Correct errors in table for values of DSLINE and | |
543 | BSLINE. Document the conflict between BROWS and BSLINE. Document | |
544 | the value of the BROWS field. | |
545 | ||
546 | Tue Jul 2 23:26:20 1991 Michael Meissner (meissner at pogo.gnu.ai.mit.edu) | |
547 | ||
548 | * mips-tfile.c (toplevel): Add a comment explaining the MIPS ECOFF | |
549 | file format at the start of the file. | |
550 | ||
551 | Tue Jul 2 14:00:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
552 | ||
553 | * c-typeck.c (build_array_ref): Report error here if the "array" | |
554 | is not an array or pointer. Don't leave this for the PLUS_EXPR. | |
555 | ||
556 | * cccp.c: Inlcude containing file names/lines in error messages. | |
557 | (print_containing_files): New function. | |
558 | (error*, warning): Call it. | |
559 | (finclude): Increment input_file_stack_tick when file changes. | |
560 | ||
561 | * cccp.c: Include descrip.h. | |
562 | ||
563 | Tue Jul 2 07:44:19 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) | |
564 | ||
565 | * tm-m88k.h (ASM_OUTPUT_SOURCE_LINE): Define only for SDB. | |
566 | * tm-m88kdgux.h (AS_BUG_*): Support these for now. | |
567 | ||
568 | * c-decl.c (finish_struct): Invoke dwarfout_output_tagged_type | |
569 | only when producing DWARF debugging info. | |
570 | * cplus-class.c (finish_struct): Ditto. | |
571 | ||
572 | Mon Jul 1 23:03:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
573 | ||
574 | * toplev.c (compile_file): Close stack_reg_dump_file iff STACK_REGS. | |
575 | ||
576 | Mon Jul 1 15:17:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
577 | ||
578 | * combine.c (set_significant): Ignore CLOBBERs. | |
579 | (simplify_and_const_int, case SUBREG): Only ignore paradoxical SUBREGs | |
580 | if BYTE_LOADS_ZERO_EXTEND. | |
581 | (record_value_for_reg): Fix typo; had I for REGNO. | |
582 | ||
583 | Mon Jul 1 08:28:09 1991 Tom Wood (wood at dg-rtp.dg.com) | |
584 | ||
585 | * final.c (output_source_line): Output DWARF line numbers. | |
586 | ||
587 | * dwarfout.c (dwarfout_output_tagged_type): New function. | |
588 | * c-decl.c (finish_struct): Call it. | |
589 | * cplus-class.c (finish_struct): Call it. | |
590 | ||
591 | * dwarfout.c (includes): Need insn-config.h and reload.h. | |
592 | (location_attribute): Use eliminate_regs for correct expression. | |
593 | (output_bound_representation): Use SAVE_EXPR_RTL to get rtl and | |
594 | then use eliminate_regs. | |
595 | ||
596 | * reload1.c (reload): When finished, indicate reg_equiv_constant | |
597 | and reg_equiv_memory_loc are no longer valid. | |
598 | (eliminate_regs): Don't attempt use of reg_equiv_constant or | |
599 | reg_equiv_memory_loc if they aren't valid. No longer static. | |
600 | * reload.h: Declare eliminate_regs. | |
601 | ||
602 | * toplev.c (compile_file): Only call dwarfout_file_scope_symbol | |
603 | for VAR_DECLs. | |
604 | ||
605 | Sun Jun 30 15:49:39 1991 Ken Raeburn (raeburn at watch.com) | |
606 | ||
607 | * expr.c (expand_builtin, case BUILT_IN_MEMCPY): If alignment test | |
608 | fails, and function was really BUILT_IN_STRCPY, zero out length | |
609 | parameter before expanding call. | |
610 | ||
611 | Sun Jun 30 18:27:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu) | |
612 | ||
613 | * jump.c (jump_optimize): In "if (...) x = a; else x = b;", don't | |
614 | move the "x = b;" if the test modifies X or if X is a hard register | |
615 | and SMALL_REGISTER_CLASSES is defined. | |
616 | Turn "if (...) x = 1; else {...} if (x) ..." code on when we have cc0. | |
617 | ||
618 | Sun Jun 30 13:49:03 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
619 | ||
620 | * gnulib2.c (__builtin_saveregs): | |
621 | For i860, make data structure fit in with va-i860.h. | |
622 | ||
623 | * tree.c (gcc_obstack_init): | |
624 | Support OBSTACK_CHUNK_ALLOC and OBSTACK_CHUNK_FREE. | |
625 | ||
626 | * calls.c (prepare_call_address): 3rd arg now address of chain var. | |
627 | (expand_call): Call changed. | |
628 | * expr.c (emit_library_call): Call changed. | |
629 | ||
630 | * function.c (fix_lexical_addr): In recursive call, pass slot address. | |
631 | ||
632 | * Makefile.in (cse.o): Added deps. | |
633 | ||
634 | * Makefile.in (GNULIB2_CFLAGS): Use -O2. | |
635 | ||
636 | * gnulib1.c, gnulib2.c (abort): Undefine only if defined. | |
637 | ||
638 | * genattr.c (main): Fix typo in comment end. | |
639 | ||
640 | Sat Jun 29 21:57:28 1991 Torbjorn Granlund (tege at zevs.sics.se) | |
641 | ||
642 | * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay. | |
643 | * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.. | |
644 | * longlong.h (__sparc__): Don't call .umul; expand asm instead. | |
645 | Don't define __umulsidi3 (i.e. use default definition). | |
646 | ||
647 | Sat Jun 29 06:25:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
648 | ||
649 | * tm-vax.h (CPP_SPEC): New macro. | |
650 | (LIB_SPEC): Handle -mg. | |
651 | ||
652 | * cccp.c (install_builtins): Fix backward test of objc. | |
653 | ||
654 | * fold-const.c (size_int): No need to test sign of NUMBER. | |
655 | ||
656 | * gcc.c (process_command): Split -L from its arg. | |
657 | ||
658 | * gcc.c (S_ISREG): Define if not defined. | |
659 | (delete_temp_files): Use it. | |
660 | ||
661 | * limits.h (UCHAR_MAX, CHAR_MAX, USHRT_MAX): Delete `U'. | |
662 | (LONG_MAX, ULONG_MAX): Add `L'. | |
663 | ||
664 | Fri Jun 28 22:22:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
665 | ||
666 | * Makefile (realclean): Delete stage1, stage2, stage3. | |
667 | ||
668 | * gcc.c (fatal) [HAVE_VFPRINTF]: Do print program name. | |
669 | ||
670 | Fri Jun 28 15:34:08 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
671 | ||
672 | * out-sparc.c (output_block_move): Correctly handle the case where | |
673 | the size is not a CONST_INT, and has a value of 0. | |
674 | ||
675 | * flags.h (flag_no_inline): Modify comment to match the one in | |
676 | toplev.c. | |
677 | ||
678 | * integrate.c (copy_rtx_and_substitute): When creating new rtx, | |
679 | make sure all of the new bitfields are copied, e.g. | |
680 | REG_LOOP_TEST_P, LABEL_OUTPUT_LOOP_P, etc. | |
681 | ||
682 | * loop.c (loop_optimize): Call reg_scan after | |
683 | find_and_verify_loops, because it may change register lifetimes. | |
684 | (find_and_verify_loops): After moving a block of code outside the | |
685 | loop, must readjust the loop_number_exit_label and | |
686 | LABEL_OUTSIDE_LOOP_P data of the modified jump and the moved jump. | |
687 | toplev.c (rest_of_compilation): Delete reg_scan call before | |
688 | loop_optimize. | |
689 | ||
690 | Fri Jun 28 13:16:37 1991 Michael Meissner (meissner at osf.org) | |
691 | ||
692 | * tm-mips.h (toplevel): Add target_flags to externals declared. | |
693 | (toplevel): Add dslots_number_nops, mips_load_reg{,2}, | |
694 | mips_fill_delay_slot external declarations for delay slot reorg. | |
695 | (CC1PLUS_SPEC): By default, pass -fno-gnu-binutils to cc1plus. | |
696 | (TARGET_FLAGS): Add -mwc8, -mwc16, -mwc32 to set size of wchar_t, | |
697 | though the switches are not used right now. | |
698 | (TARGET_FLAGS): Add -msoft-float code from rfg@ncd.com to compile | |
699 | on systems w/o floating point. | |
700 | (TARGET_FLAGS): -mdebugf suppresses filling load delay slots. | |
701 | (HARD_REGNO_OK): Relax constraints, allow anything in GP | |
702 | registers, anything in even FP registers, int's only in multiply | |
703 | and divide registers, int/CC in the FPSW register. | |
704 | (FRAME_POINTER_REQUIRED): Require frame if alloca is called for | |
705 | now. | |
706 | (REG_CLASS_FROM_LETTER): Index from an array (mips_char_to_class) | |
707 | instead of having lots of ?:'s. Also, allow 'd' to signify GP | |
708 | registers. | |
709 | (ENCODE_SEGMENT_INFO): Only record things being in small data/bss | |
710 | if -mgpOPT (-O sets by default), -O, and -G xx where xx > 0. | |
711 | (FINAL_PRESCAN_INSN): Rework to automatically not fill the | |
712 | previous instruction's load delay slots with nop's if it is safe. | |
713 | (ASM_OUTPUT_LABEL): If compiling collect, don't use assemble_name. | |
714 | (ASM_GLOBALIZE_LABEL): If compiling collect, don't use | |
715 | assemble_name. | |
716 | (ASM_OUTPUT_LABELREF_AS_INT): Define this for collect. | |
717 | (ASM_OUTPUT_INT): If collect, don't use output_addr_const. | |
718 | ||
719 | * mips.md (all floating point): If -msoft-float, don't allow any | |
720 | floating point builtin operations. | |
721 | (all patterns): Use 'd' constraint to limit things to GP | |
722 | registers, rather than 'r'. This allows unions of | |
723 | float/int/double to occupy any registers. | |
724 | (*extend*): Call mips_move_1word to handle loads, which in turn | |
725 | sees if we can omit the load nop. | |
726 | (fix_trunc*): Redo, since register allocator can handle moving to | |
727 | the appropriate register set. | |
728 | (movdf_xfer*): Use explicit return's instead of falling through | |
729 | and having the appropriate value in a register from the previous | |
730 | call. | |
731 | (movsf_xfer*): New patterns to accomidate unions of floats and | |
732 | int's. | |
733 | (movsi_unaligned): New define_expand to call either movsi_ulw or | |
734 | movsi_usw. Also, if not a memory operation, use movsi. | |
735 | (movsi_ulw): Set up to omit load delay nop if we can. | |
736 | (movsi_usw): Use memory_operand instead of simple_memory_operand. | |
737 | Also, allow storing 0 to an unaligned location. | |
738 | (various move patterns): mips_move_1word now takes a third | |
739 | argument to specify whether a load should sign or zero extend. | |
740 | (call_value): Use register_operand on return value. | |
741 | (probe): Turn into define_expand, and set a register to the | |
742 | contents of memory pointed to by the stack pointer with volatil | |
743 | set. | |
744 | ||
745 | * out-mips.c (toplevel): Add new global variables: | |
746 | dslots_number_nops, mips_load_reg{,2}, mips_regno_to_class, | |
747 | mips_char_to_class. | |
748 | (simple_memory_operand): If not optimizing, no global memory | |
749 | reference is assumed to be in the GP area. | |
750 | (mips_fill_delay_slot): New function to tell FINAL_PRESCAN_INSN | |
751 | the current insn is a load and may need a nop. | |
752 | (mips_move_1word): Take a third argument to say whether load byte | |
753 | and load half-word sign extend or zero extend. Change all | |
754 | callers. If this is a load, call mips_fill_delay_slots to | |
755 | schedule the nops. Change all return's to setting a variable, and | |
756 | falling through to the end. | |
757 | (mips_move_2words): If this is a load, call mips_fill_delay_slots | |
758 | to schedule the nops. Change all return's to setting a variable, | |
759 | and falling through to the end. | |
760 | (function_arg): if -msoft-float, floating point is passed in GP | |
761 | registers. | |
762 | (override_options): Initialize mips_char_to_class. | |
763 | (print_operand): %( and %) no longer do .set nomacro. | |
764 | (print_operand): %# prints #nop if gas or -mstats. | |
765 | (print_operand): Check for too many %), %], and %>'s. | |
766 | (compute_frame_size): Allocate space in stack to hold FP, just in | |
767 | case we later need a FP and previously thought we could eliminate | |
768 | it. | |
769 | (save_restore): Take a string to indicate the 2word load/store to | |
770 | use, but don't use it at present. Change all callers. Home | |
771 | varargs registers with sd if we can. | |
772 | (function_epilogue): Deal with one or more outstanding nop's from | |
773 | FINAL_PRESCAN_INSN. | |
774 | (function_epilogue): Revamp -mstats output format. | |
775 | (function_epilogue): Zero new global variables. | |
776 | ||
777 | * make-decrose (toplevel): Sort make variables. | |
778 | (CLIB): Add -lld library. | |
779 | (LANGUAGES): Add build of collect-osf and g++. | |
780 | (ULTRIX_DIR): Change internal work directory location. | |
781 | (cplus-lex.o): Don't optimize to avoid problem with 1.39 compiler. | |
782 | (collect-osf): Add rules to build OSF/rose version of collect. | |
783 | ||
784 | * make-mips (LANGUAGES): Add build of g++. | |
785 | ||
786 | * tm-decrose.h (SIZE_TYPE): Specify to be long unsigned int. | |
787 | (PTRDIFF_TYPE): Specify to be long int. | |
788 | (WCHAR_TYPE): Specify to be long unsigned int. | |
789 | ||
790 | * sdbout.c (plain_type_1): Add support for unknown tags if | |
791 | SDB_ALLOW_UNKNOWN_REFERENCES is defined. The MIPS ECOFF support | |
792 | needs this, but standard COFF typically doesn't allow unknown | |
793 | references. | |
794 | ||
795 | * gcc.texinfo (Debugging Info): Document | |
796 | SDB_ALLOW_UNKNOWN_REFERENCES and SDB_ALLOW_FORWARD_REFERENCES. | |
797 | ||
798 | * collect-osf.c (whole file): New file to provide collect support | |
799 | on OSF/rose. | |
800 | ||
801 | Fri Jun 28 09:20:18 1991 Tom Wood (wood at dg-rtp.dg.com) | |
802 | ||
803 | * configure (m88k-luna): New target. | |
804 | * tm-m88kluna.h: New file for the Omron Luna/88k. | |
805 | * xm-m88k.h: Don't use USG for the luna88k. | |
806 | ||
807 | * tm-m88kdgux.h: DG/UX implements coff and elf. Currently elf is | |
808 | a strange variant of coff that's non-standard (it uses SDB | |
809 | debugging info for example). Soon, the DG/UX elf will support | |
810 | DWARF. These changes provide transitional support for all three. | |
811 | (DWARF_DEBUGGING_INFO, SDB_DEBUGGING_INFO): Define both. | |
812 | (VERSION_0300_SYNTAX): True when -msvr4 and -mversion-03.00. | |
813 | * tm-m88ksvr4.h (ASM_FILE_END, ASM_OUTPUT_DWARF_LINE): Move these | |
814 | to tm-m88k.h. They are dwarf specific. | |
815 | * tm-m88k.h (TARGET_SWITCHES): Add -mversion-03.00 and -mdwarf. | |
816 | (OVERRIDE_OPTIONS): If using version 03.00 syntax, assume DWARF_DEBUG. | |
817 | ||
818 | * tm-m88k.h (REG_ALLOC_ORDER): Adapt slightly for using r26-r29. | |
819 | ||
820 | * out-m88k.c (m88k_debugger_offset): Don't complain if the base | |
821 | register is optimized away. | |
822 | ||
823 | Thu Jun 27 21:43:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
824 | ||
825 | * local-alloc.c (memref_referenced_p, memref_used_between_p): | |
826 | New functions. | |
827 | (update_equiv_regs): Call memref_used_between_p. | |
828 | ||
829 | Thu Jun 27 19:59:36 1991 Ken Raeburn (raeburn at watch.com) | |
830 | ||
831 | * print-tree.c (print_node): Changed the various "lang_#" strings to | |
832 | indicate which of several possible fields are being examined; new | |
833 | strings are "tree_#", "decl_#", "type_#". | |
834 | ||
835 | Thu Jun 27 15:05:43 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) | |
836 | ||
837 | * xm-mips.h (ONLY_INT_FIELDS): Define if not compiling with GCC | |
838 | since the MIPS compiler treats enum bitfields as signed. | |
839 | ||
840 | Wed Jun 26 19:48:16 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
841 | ||
842 | * sched.c (memrefs_conflict_p): Explicitly handle case where both | |
843 | X and Y are CONST. | |
844 | (sched_analyze_2): Do create dependencies for insns with REG_EQUIV | |
845 | notes. | |
846 | (sched_note_set): Correctly handle the case where the destination | |
847 | register is a multi-word hard register. | |
848 | (attach_deaths): Don't add a REG_DEAD note to an insn with a | |
849 | REG_UNUSED note that mentions the same register. Correctly handle | |
850 | the case where the destination register is a multi-word hard | |
851 | register. | |
852 | (schedule_block): Also call sched_note_set for CLOBBERs when | |
853 | computing which registers are dead at the end of the basic block. | |
854 | Also call sched_note_set for USEs when computing what registers | |
855 | are still live after a just scheduled insn. | |
856 | (regno_use_in): New function, subroutine of split_hard_reg_notes. | |
857 | Searches an rtx for any reference to the given register, and | |
858 | returns the register rtx used if any. | |
859 | (split_hard_reg_notes): New function. Handles the case where a | |
860 | multi-word hard register with a REG_DEAD note gets split. Creates | |
861 | a new REG_DEAD note for each part of the original hard register | |
862 | used by the split insns. | |
863 | (new_insn_dead_notes): Don't add a REG_DEAD note to an insn with a | |
864 | REG_UNUSED note which mentions the same register. | |
865 | (update_links): Add call to new function split_hard_reg_notes. | |
866 | Correctly handle the case when the dest of the original insn was a | |
867 | multi-word register which was split in the split insns. In this | |
868 | case, the dest is no longer killed here, so must remove the | |
869 | REG_DEAD on the last previous insn in this basic block which used | |
870 | dest, if any such exists. | |
871 | ||
872 | * unroll.c (reg_dead_after_loop): Check that a CODE_LABEL which is | |
873 | the target of a JUMP_INSN has a non-zero PREV_INSN field before | |
874 | trying to derefence it. Fail if there is no previous insn. | |
875 | ||
876 | * loop.c (scan_loop): Fix typo. | |
877 | * local-alloc.c (optimize_reg_copy): Likewise. | |
878 | * global-alloc (hard_reg_copy_preferences): Likewise. | |
879 | * gcc.texinfo (REG_LOOP_TEST_P): Likewise. | |
880 | * optabs.c (expand_float): Likewise. | |
881 | * tm-vaxv.h (ASM_OUTPUT_ASCII): Likewise. | |
882 | ||
883 | * out-sparc.c (output_move_double): Sign extend CONST_INTs that | |
884 | feed DImode targets. | |
885 | * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a LABEL_REF | |
886 | as a legal address. Also, delete obsolete parts of preceeding | |
887 | comment. | |
888 | ||
889 | * reload1.c (alter_reg): Only try to delete the reg_equiv_init | |
890 | insn if it hasn't already been deleted by a previous call to | |
891 | delete_dead_insn. | |
892 | ||
893 | * toplev.c (main): Handle -gdbx in addition to -gsdb for | |
894 | orthogonality. | |
895 | * gcc.texinfo: Document -gdbx. | |
896 | ||
897 | Tue Jun 25 09:57:08 1991 Tom Wood (wood at dg-rtp.dg.com) | |
898 | ||
899 | * m88k.md (casesi): Don't emit a barrier; the dispatch code must | |
900 | adjoin the table. | |
901 | * tm-m88k.h (DONT_REDUCE_ADDR): Don't use this. | |
902 | (CONDITIONAL_REGISTER_USAGE): The PIC register is also call-used. | |
903 | * out-m88k.c (m88k_layout_frame): Save the PIC register. | |
904 | ||
905 | Tue Jun 25 07:40:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
906 | ||
907 | * function.c (expand_function_end): FNDECL should | |
908 | be CURRENT_FUNCTION_DECL. | |
909 | ||
910 | * combine.c (find_split_point): If we see an AND operation as the | |
911 | first operand of some non-AND operation, use it as a split point. | |
912 | (subst): Add counter to limit restarts, go to restart more often. | |
913 | (subst, case AND): If we get (ior (and (X C1) C2)) and can't | |
914 | restart more than once, rewrite with C1 as small as possible and exit. | |
915 | ||
916 | * cse.c (cse_end_of_basic_block): Don't put branch in our path more | |
917 | than once. | |
918 | (cse_main): Clear PATH_SIZE when skipping a block. | |
919 | (cse_basic_block): Use GET_RTX_CLASS. | |
920 | ||
921 | Tue Jun 25 07:39:29 1991 Matthew Self (mself at next.com) | |
922 | ||
923 | * varasm.c (const_hash, compare_constant_1, record_constant_1): | |
924 | For ADDR_EXPR's, don't hash address of SYMBOL_REF. Only use | |
925 | offset and name of symbol. This allows constructors which | |
926 | contain pointers to identical string literals to be uniqued. | |
927 | ||
928 | * loop.c (loop_optimize, init_loop): Moved call to | |
929 | gcc_obstack_init() from loop_optimize() to init_loop(). | |
930 | ||
931 | * reload1.c (reload, init_reload): Moved call to | |
932 | gcc_obstack_init() from reload() to new function init_reload(). | |
933 | ||
934 | * toplev.c (compile_file): Call new function init_reload(). | |
935 | ||
936 | Mon Jun 24 16:05:57 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
937 | ||
938 | * stmt.c (expand_end_stmt_expr): Fix typo in comment. | |
939 | ||
940 | * reload1.c (modes_equiv_for_class_p): Only fail if registers in | |
941 | CLASS that can hold ALLOCATE_MODE can't also hold OTHER_MODE. Do | |
942 | not fail for the reverse test. ALLOCATE_MODE is always a larger | |
943 | or same size mode as OTHER_MODE, and will be the mode that reload | |
944 | uses when allocating spill registers. Rewrite comments to explain | |
945 | new behaviour. | |
946 | (reload): Change call to modes_equiv_for_class_p to match new | |
947 | semantics. | |
948 | ||
949 | * combine.c (simplify_shift_const): When simplifying (ashiftrt | |
950 | (ashift inner_const_int) const_int), was checking the wrong number of | |
951 | high order bits of inner_const_int. Also correct typos in comments. | |
952 | ||
953 | * c-convert.c (convert_to_integer): Must also check ARG1 for | |
954 | unsignedness, because ARG0 could be a constant when EXPR is a | |
955 | MINUS_EXPR. | |
956 | ||
957 | * combine.c (try_combine): When splitting, it is not safe to use | |
958 | I2DEST if it is referenced by NEWPAT. | |
959 | ||
960 | * combine.c (distribute_notes): After converting REG_DEAD notes to | |
961 | REG_UNUSED notes, clear PLACE if it already has a REG_UNUSED note, | |
962 | to prevent adding a duplicate REG_UNUSED note. | |
963 | ||
964 | * gcc.texinfo (SIGNED_CHAR_SPEC): Document. | |
965 | ||
966 | Mon Jun 24 10:02:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
967 | ||
968 | * cse.c (cse_set_around_loop): Ensure the insn we find in front | |
969 | of the loop does the set in the proper mode. | |
970 | ||
971 | * optabs.c (expand_float): Always do conversions to FMODE in the | |
972 | signedness of the input. | |
973 | ||
974 | * reload.c (find_reloads, find_reloads_toplev): If reg_equiv_address | |
975 | is not a constant address, copy it in case it is shared. | |
976 | ||
977 | * reload1.c (eliminate_regs): Copy reg_equiv_memory_loc in case | |
978 | it is shared and we make a reload inside it. | |
979 | ||
980 | * stupid.c (stupid_mark_refs): Registers that aren't used must die | |
981 | in the insn after their birth so they conflict with other outputs. | |
982 | ||
983 | * vax.md: Replace patterns to convert (and (ashiftxx)) | |
984 | into (and (rotatexx)) with the patterns that are actually made | |
985 | by combine. | |
986 | We can allow offsettable addresses for operand 0 and it is not | |
987 | early-clobber. | |
988 | ||
989 | * out-rs6000.c (secondary_reload_class): Correctly interpret result of | |
990 | true_regnum. | |
991 | ||
992 | * out-rs6000.c (output_toc): Write FP constants in TOC. | |
993 | * tm-r6000.h (TARGET_FP_IN_TOC): New flag. | |
994 | (TARGET_SWITCHES): Add -mfp-in-toc and -mno-fp-in-toc. | |
995 | (TARGET_DEFAULT): -mfp-in-toc is the default. | |
996 | (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): FP constants may be put in the TOC. | |
997 | ||
998 | Mon Jun 24 00:52:44 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
999 | ||
1000 | * out-i386.c (output_fix_trunc): If the dest operand mentions the | |
1001 | stack pointer, then we must adjust it to account for the temporary | |
1002 | space we allocate on the stack here. | |
1003 | ||
1004 | Sat Jun 22 07:24:33 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1005 | ||
1006 | * cse.c (cse_set_around_loop): Fix typo in call to note_mem_written. | |
1007 | ||
1008 | * emit-rtl.c (reorder_insns): Correctly handle case when AFTER is last | |
1009 | insn. | |
1010 | ||
1011 | * expr.c (expand_expr, case COND_EXPR): Correctly handle X ? A : X + 1. | |
1012 | Previous change called invert_truthvalue which can modify EXP; we now | |
1013 | call it a second time to undo its action if do_store_flag fails. | |
1014 | ||
1015 | Sat Jun 22 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
1016 | ||
1017 | * cse.c (cse_set_around_loop): Don't try to initialize an | |
1018 | automatic structure. | |
1019 | ||
1020 | * reg-stack.c (compare_for_stack_reg): If both operands to a | |
1021 | compare are the same stack reg, don't process death on the second. | |
1022 | ||
1023 | * i386.md (all float patterns): Don't allow constants in the | |
1024 | operand predicates. | |
1025 | (all patterns using convert_387_op): Split patterns into one using | |
1026 | FLOAT and another using FLOAT_EXTEND. | |
1027 | ||
1028 | Fri Jun 21 20:37:03 1991 Tom Wood (wood at dg-rtp.dg.com) | |
1029 | ||
1030 | * sched.c (line_note, line_note_head): New vectors for use when | |
1031 | dealing with line-number notes. | |
1032 | (unlink_notes): Put line-number notes in LINE_NOTE for reuse. | |
1033 | (schedule_block): Just before reordering the insns, walk the insns | |
1034 | and record the line-number note in effect for each one. When | |
1035 | reordering is complete, restore the line-number notes as needed. | |
1036 | (schedule_insns): When debugging information is present, allocate | |
1037 | and initialize line_note and line_note_head. After scheduling, | |
1038 | walk the insns to delete redundant line-number notes. | |
1039 | ||
1040 | Fri Jun 21 19:54:29 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
1041 | ||
1042 | * old-sparc.c, out-old-sparc.c, tm-old-sparc.h: Delete obsolete | |
1043 | files. | |
1044 | ||
1045 | * loop.c (loop_number_exit_labels): Expand comment. Mention that | |
1046 | returns are not included because all bivs and givs are pseudos and | |
1047 | hence must be dead after a return. | |
1048 | ||
1049 | Fri Jun 21 07:10:56 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1050 | ||
1051 | * combine.c (subst, case PLUS, MINUS): Remove cases for things like | |
1052 | (x-y)+y; now done in simplify_binary_operation. | |
1053 | * cse.c (simplify_unary_operation): Handle (sign_extend (truncate ..)) | |
1054 | as used in casesi patterns. | |
1055 | (simplify_binary_operation, case PLUS, MINUS): Don't do most | |
1056 | simplifications if IEEE floating-point. | |
1057 | Add cases for things like (x-y)+y. | |
1058 | (fold_rtx): Replace PC with LABEL_REF if we are immediately in | |
1059 | front of a jump table. | |
1060 | Move code to apply associative law to after we have folded the | |
1061 | operands. | |
1062 | (fold_rtx, case MEM): Fix errors in checking for index of jump | |
1063 | table being out of range. | |
1064 | For ADDR_DIFF_VEC, return a MINUS or (truncate (minus L1 L2)). | |
1065 | (fold_rtx, case PLUS): If we have (plus X (label_ref L)), see | |
1066 | if X is equivalent to (minus L1 L2). | |
1067 | (cse_insn): Put (minus L1 L2) in `src_const' so it gets in a | |
1068 | REG_EQUAL note and gets put in the hash table. | |
1069 | If we are branching to a jump table, we are really branching to | |
1070 | immediately after the jump table | |
1071 | Remove special-case kludge for ADDR_DIFF_VEC; now handled properly. | |
1072 | ||
1073 | * vax.md (casesi): Make pattern agree with machine instruction; | |
1074 | specifically, index is multiplied by two and the comparison is LEU, | |
1075 | not LE. | |
1076 | ||
1077 | * cse.c (equiv_constant): If X is a one-word SUBREG of a larger | |
1078 | quantity, use `lookup_as_function' to see if it is equivalent | |
1079 | to a CONST_INT. | |
1080 | ||
1081 | * jump.c (squeeze_notes): No longer static. | |
1082 | * loop.c (find_and_verify_loops): Need to call squeeze_notes when | |
1083 | moving block of code (see last change). | |
1084 | ||
1085 | * reload.c (find_reloads): When forcing constant to memory, | |
1086 | set recog_operand to the result of find_reloads_toplev. | |
1087 | ||
1088 | * combine.c (subst, case PLUS): Add (c1 - a) + c2 -> (c1+c2) - a. | |
1089 | (subst, case MINUS): Use simplify_binary_operation rather than | |
1090 | making CONST_INT from subtraction of two INTVAL's to ensure it | |
1091 | gets truncated as appropriate for its mode. | |
1092 | Add (c1 - (c2 - a)) -> (c1-c2) + a. | |
1093 | ||
1094 | * a29k.md (negdf2): Use operand_subword_force, not operand_subword. | |
1095 | (movsf): Use operand_subword, not gen_lowpart. | |
1096 | ||
1097 | * out-rs6000.c (u_short_cint_operand): New function. | |
1098 | (print_operand): Support auto-decrement. | |
1099 | ||
1100 | * tm-rs6000.h (OVERRIDE_OPTIONS): Force profiling off. | |
1101 | (PREFERRED_RELOAD_CLASS): Return NO_REGS for real CONST_DOUBLE. | |
1102 | (HAVE_PRE_DECREMENT): Define this. | |
1103 | (GO_IF_LEGITIMATE_ADDRESS, GO_IF_MODE_DEPENDENT_ADDRESS): | |
1104 | Support PRE_DEC. | |
1105 | ||
1106 | * rs6000.md (zero_extendxx): Use rlinm, not andil so we avoid | |
1107 | clobbering cr0. | |
1108 | (arith-and-record patterns): Correct some bad operand numbers. | |
1109 | Put SImode output as operand 0 to improve register tying. | |
1110 | (andsi): Prefer rlinm over andil and andiu. | |
1111 | (load/store-with-update): Add patterns for these instructions. | |
1112 | (allocate_stack): New, replaces stack probe. | |
1113 | (add-and-compare): New patterns, with define_split. | |
1114 | (subtract-one-and-jump): Allow outputs anywhere; handle with | |
1115 | match_scratch and define_split. | |
1116 | ||
1117 | * stmt.c (expand_end_stmt_expr): If `last_expr_value' is 0, set it | |
1118 | to const0_rtx. | |
1119 | ||
1120 | * regclass.c (reg_n_sets): Move definition to before use. | |
1121 | ||
1122 | * jump.c (find_cross_jump): Don't try to substitute REG_EQUAL | |
1123 | values unless they are constants. | |
1124 | ||
1125 | Fri Jun 21 02:37:59 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
1126 | ||
1127 | * reload1.c (reload): Don't clear after_call for each insn. | |
1128 | ||
1129 | Sun Jun 16 17:28:43 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
1130 | ||
1131 | * reload1.c (reload, reload_as_needed, choose_reload_regs): Enable | |
1132 | code to avoid return register when SMALL_REGISTER_CLASSES defined. | |
1133 | ||
1134 | * final.c (final_scan_insn): Don't look for no-op moves if | |
1135 | processor has STACK_REGS. | |
1136 | ||
1137 | * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): New macro. | |
1138 | ||
1139 | * jump.c (cross_jump_death_matters): New variable. | |
1140 | (find_cross_jump): If processor has STACK_REGS, compare death | |
1141 | notes if they matter. | |
1142 | ||
1143 | * toplev.c (compile_file, rest_of_compilation): Support new | |
1144 | stack-regs conversion pass. | |
1145 | (main, compile_file, rest_of_compilation): Add support for -dk to | |
1146 | dump after stack-regs conversion. | |
1147 | * reg-stack.c: New file. Implements stack-regs conversion pass. | |
1148 | * Makefile.in (reg-stack.o): New file. | |
1149 | ||
1150 | * tm-i386.h (STACK_REGS): New macro. | |
1151 | (all register macros): Define all eight float point registers. | |
1152 | (HARD_REGNO_NREGS): Only one float reg is needed for any mode. | |
1153 | (HARD_REGNO_MODE_OK): Move code here from out-i386.c. | |
1154 | (FIRST_STACK_REG,LAST_STACK_REG): New macros. | |
1155 | (ARG_POINTER_REGNUM): Move to reg 16. | |
1156 | (FP_REGNO_P): Recognize all float regs. | |
1157 | (QI_REG_P): New macro. | |
1158 | (STACK_REG_P,NON_STACK_REG_P,STACK_TOP_P): New macros. | |
1159 | (PRESERVE_DEATH_INFO_REGNO_P): Delete. | |
1160 | (OVERLAPPING_REGNO_P): Delete. | |
1161 | (CONST_OK_FOR_LETTER_P): Recognize constant mask for byte or word. | |
1162 | Recognize constant 0..3 for `lea' shifts. | |
1163 | (CONST_DOUBLE_OK_FOR_LETTER_P): | |
1164 | (PREFERRED_RELOAD_CLASS): Don't put CONST_DOUBLE in float regs. | |
1165 | QImode must go in class Q_REGS. Float regs can't hold MODE_INT. | |
1166 | (MOVE_RATIO): New macro. | |
1167 | (SHIFT_COUNT_TRUNCATED): Delete. Bit opcodes don't truncate. | |
1168 | (RTX_COSTS): New macro. | |
1169 | (CONST_COSTS): Make constants cheaper. | |
1170 | (QI_HIGH_REGISTER_NAMES): Renamed from QI_REGISTER_NAMES_TOP. | |
1171 | (INSN_CLOBBERS_REGNO_P): Delete. | |
1172 | (FP_TOP,RETCOM,POP_ONE_POP,FP_CALL1,FP_CALL): Delete. | |
1173 | ||
1174 | * out-i386.c (fp_pop_level): Delete. | |
1175 | (fp_call_internal, output_asm_insn_double_reg_op, via_memory, | |
1176 | fp_store_sf,fp_pop_sf,fp_store_df,fp_pop_df,fp_pop_int, | |
1177 | fp_push_sf,fp_push_df,output_movsf,output_movdf,output_movf, | |
1178 | top_dead_p,call_top_dead_p,fp_top_dead_p1,mentioned_fp_top): Delete. | |
1179 | (hard_regno_mode_ok): Moved to tm-i386.h. | |
1180 | (qi_high_reg_name): New variable. | |
1181 | (output_op_from_reg, output_to_reg): New function. | |
1182 | (singlemove_string,output_move_const_single): No longer static. | |
1183 | (singlemove_string): Use correct operand number in `push' string. | |
1184 | (standard_80387_constant_p): Use recommended method to extract | |
1185 | float from CONST_DOUBLE. | |
1186 | (PRINT_REG): Add 'h' for "high" register names, 'y' for "st(0)". | |
1187 | (print_operand): Code 'z' prints no size suffix for stack regs. | |
1188 | Print DImode suffix as "ll", not just "l". | |
1189 | (output_fix_trunc): New argument `insn'. Generalize to output to | |
1190 | MEM or REG. Return "char *" like other output routines. | |
1191 | Generalize for SImode or DImode output. | |
1192 | (binary_387_op,convert_387_op,float_op,fix_op,shift_op): New | |
1193 | match_operator predicates. | |
1194 | (output_387_binary_op,output_float_compare): New functions. | |
1195 | ||
1196 | * i386.md (all MODE_FLOAT patterns): Replace with new code to use | |
1197 | all FPU registers. | |
1198 | (all patterns): Use AS2 and AS1 macros where possible, for | |
1199 | eventual support of Intel syntax output. | |
1200 | (tstM): Don't initialize operands unless we need to. | |
1201 | (cmpM): Choose operange order in output for speed on i386. | |
1202 | (logical test patterns): The operands commute. If possible, | |
1203 | SImode tests should use just QImode. | |
1204 | (movstrictM): New patterns. | |
1205 | (movqi): Don't allow a constant of unknown value into Q_REGS. | |
1206 | (`lea' pattern): Move after addsi3. | |
1207 | (addsi3): Do three operand adds with `lea'. | |
1208 | (divsi3,divhi3,udivsi3,udivhi3): Delete in favor of u?divmodM4. | |
1209 | (divqi3,udivqi3): Remove earlyclobber for operand 0. | |
1210 | (andM3): Define three operand ANDs for 255 and 65535 using zero | |
1211 | extend opcode. Also directly do an AND in the second byte of a | |
1212 | register. | |
1213 | (iorM3,xorM3): Do byte ior instead of word where possible. | |
1214 | (xorqi3): Allow operands[2] from MEM. | |
1215 | (ashlsi3): Allow three-operand shift of 0..3 with `lea' opcode. | |
1216 | (lshlM3): Redundant, delete. | |
1217 | (shift & rotate patterns): Print %0 as destination operand. | |
1218 | (bit recognizers): New patterns to set, clear and compliment. | |
1219 | (call insns): Use "%P" code for targets to support Intel syntax. | |
1220 | (movstrsi): Express changes to the operands instead of just | |
1221 | clobbering them. Don't accept non-constant move count, as our | |
1222 | code isn't as efficient as a library call. | |
1223 | ||
1224 | Thu Jun 20 13:51:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1225 | ||
1226 | * cse.c (cse_insn): If we fold a conditional or computed branch to an | |
1227 | unconditional branch, it is now not in the normal format for an | |
1228 | unconditional branch, and it only has one set, delete it and | |
1229 | re-emit it. | |
1230 | Whenever we make an unconditional branch, set `cse_skip_to_next_block' | |
1231 | and do nothing else. | |
1232 | (cse_basic_block): Increment LABEL_NUSES on TO if it is a label | |
1233 | so it won't go away while we are using it as a stopping point. | |
1234 | If we are done with this block (`cse_skip_to_next_block' nonzero), | |
1235 | pretend we just did the insn before TO. | |
1236 | Decrement LABEL_NUSES of TO if it is a label; if it became zero, | |
1237 | delete it and try to extend the basic block. | |
1238 | ||
1239 | * reload.c (find_reloads): Fix typo in check for no alternatives | |
1240 | found. | |
1241 | ||
1242 | * combine.c (reg_significant, significant_mode): New vars. | |
1243 | (combine_instructions): Allocate and initialize reg_significant. | |
1244 | (set_significant): New function. | |
1245 | (significant_bits, case REG): Use reg_significant, if non-zero | |
1246 | as the significant bits of a register. | |
1247 | ||
1248 | * loop.c (n_times_set): Define -2 to mean that a register is | |
1249 | an candidate to be moved and is a constant. | |
1250 | (scan_loop): Set n_times_set to -1 or -2 as appropriate. | |
1251 | (regs_match_p): No need to check REG_FUNCTION_VALUE_P. | |
1252 | A register and a constant can be equal if the register is known | |
1253 | equivalent to the constant. | |
1254 | (invariant_p): Check n_times_set < 0, not == -1. | |
1255 | ||
1256 | * rtl.h (REG_LOOP_TEST_P): New macro. | |
1257 | * jump.c (duplicate_loop_exit_test): Mark registers used only in | |
1258 | loop exit test. | |
1259 | * cse.c (cse_around_loop, cse_check_loop_start, cse_set_around_loop): | |
1260 | New functions. | |
1261 | (cse_end_of_basic_block): Add new arg to say if we are being called | |
1262 | after loop.c has run; if we are being called after loop.c, we can | |
1263 | ignore NOTE_INSN_LOOP_ENDs. | |
1264 | (cse_main): Accept new AFTER_LOOP arg; pass to cse_end_of_basic_block. | |
1265 | If we are called before loop.c, see if we can cse around to the | |
1266 | start of a loop. | |
1267 | * toplev.c (rest_of_compilation): Tell cse_main if it is being called | |
1268 | before or after loop.c. | |
1269 | ||
1270 | * rtl.h (LABEL_OUTSIDE_LOOP_P): New macro. | |
1271 | * loop.h (uid_loop_num): Renamed from luid_loop_num and now | |
1272 | maps INSN_UID to loop number instead of INSN_LUID. | |
1273 | * loop.c (loop_optimize): Modifications for the above. | |
1274 | (find_and_verify_loop): Change luid_loop_num to uid_loop_num. | |
1275 | Look for blocks of code ending in an unconditional branch out | |
1276 | of the loop surrounded by a conditional branch and try to move | |
1277 | such a block out of the loop. | |
1278 | (mark_loop_jump): Change luid_loop_num to uid_loop_num. | |
1279 | Mark all LABEL_REFs that are outside the current loop, for | |
1280 | branch prediction. | |
1281 | (strength_reduce, check_dbra_loop): Change luid_loop_num to | |
1282 | uid_loop_num. | |
1283 | * unroll.c (unroll_loop, find_splittable_{regs,givs}): Likewise. | |
1284 | (reg_dead_after_loop, final_{biv,giv}_value): Likewise. | |
1285 | ||
1286 | * flow.c (reg_n_sets): Don't define this here. | |
1287 | * regclass.c (reg_n_sets): Define it here. | |
1288 | (reg_scan): Allocate and initialize reg_n_sets. | |
1289 | (reg_scan_mark_refs): Count sets of a register in reg_n_sets. | |
1290 | ||
1291 | * sched.c (reg_known_value_size): New variable. | |
1292 | (canon_rtx): Don't look in reg_known_value outside its allocated space. | |
1293 | (init_alias_analysis): Initialize reg_known_value_size. | |
1294 | ||
1295 | * loop.c ({unknown,fixed}_aggregate_altered): Deleted. | |
1296 | (loop_store_mems): Replaces loop_store_addrs and loop_store_widths. | |
1297 | (loop_optimize): Call init_alias_analysis. | |
1298 | (prescan_loop, note_addr_stored): Save all MEMs stored into, rather | |
1299 | than just those that appear fixed; save MEMs rather than addresses | |
1300 | and widths. | |
1301 | (invariant_p): Use true_dependence to see if a MEM is invariant; | |
1302 | compare it with all MEMs stored during the loop. | |
1303 | ||
1304 | * sched.c (memrefs_conflict_p): If XSIZE or YSIZE is zero | |
1305 | the object conflict if they have the same base, irregardless | |
1306 | of the offsets. | |
1307 | ||
1308 | * reorg.c (dbr_schedule): Reallocate unfilled_firstobj after | |
1309 | freeing memory from the obstack. | |
1310 | ||
1311 | * reload.c (push_reload): Always reload object inside SUBREG if | |
1312 | STRICT_LOW_PART is present. | |
1313 | Always set RELOAD_STRICT_LOW to zero; maybe we should get rid of it. | |
1314 | ||
1315 | * reload.c (make_memloc): Copy the address if it varies to avoid | |
1316 | potential sharing problems. | |
1317 | ||
1318 | * global-alloc.c (hard_reg_copy_preferences): New var. | |
1319 | (global_alloc): Allocate and initialze it. | |
1320 | (prune_preferences): Prune it. | |
1321 | (find_reg): Try preferences in hards_reg_copy_preferences first, | |
1322 | then hard_reg_preferences. | |
1323 | (set_preference): Set bit in hard_reg_copy_references, if appropriate. | |
1324 | ||
1325 | * emit-rtl.c (try_split): If we are splitting a JUMP_INSN, copy | |
1326 | JUMP_LABEL from the old to new insn update the count of that label. | |
1327 | ||
1328 | * cse.c (lookup): Always call exp_equiv_p unless we have a REG. | |
1329 | ||
1330 | * cse.c (insert): If we are making a register equivalent to a | |
1331 | constant that was already equivalent to a constant, update | |
1332 | qty_const_insn. | |
1333 | (cse_insn): Don't do it here. | |
1334 | * cse.c (fold_rtx): Always call simplify_unary_operation. | |
1335 | ||
1336 | * cse.c (record_jump_equiv): Don't get primary elements for OP0 and | |
1337 | OP1 since they might not be valid. | |
1338 | ||
1339 | * loop.c (get_condition): Accept new arg, EARLIEST that is a pointer | |
1340 | to where we place the earliest insn used to form the condition. | |
1341 | Check for comparison with CC0 in main loop, not earlier. | |
1342 | Never return condition involving CC0. | |
1343 | (get_condition_for_loop): Call get_condition with new arg. | |
1344 | * jump.c (jump_optimize): When we make store-flag insn, put new | |
1345 | insns before earliest insn used to form condition and use new | |
1346 | psuedo as target, which we copy into VAR immediately after the insn | |
1347 | that currently sets VAR. | |
1348 | Turn off "if (...) x = 1; else {...} if (x) ..." code; it is not | |
1349 | correct and can't be easily fixed. | |
1350 | (get_label_{before_after}): Use {prev,next}_nonnote_insn. | |
1351 | ||
1352 | * jump.c (jump_optimize): Don't interpret NOOP_MOVES as meaning | |
1353 | "after_reload"; check reload_completed instead. Don't pass NOOP_MOVES | |
1354 | to functions that aren't actually trying to noop moves. | |
1355 | (follow_jumps, tension_vector_labels): Don't accept AFTER_RELOAD arg; | |
1356 | check reload_completed instead. | |
1357 | ||
1358 | * combine.c (try_combine): Don't check that we don't have a | |
1359 | single_set when trying to replace a SET_DEST in a PARALLEL in I2. | |
1360 | (simplify_and_const_int): Always do the AND in the mode passed. | |
1361 | (significant_bits, case DIV and UDIV): Nothing special known | |
1362 | about low-order bits here. | |
1363 | (simplify_shift_const, shift cases): Don't go into infinite loop if | |
1364 | we combine two shifts in the same direction. | |
1365 | ||
1366 | * c-parse.y, cplus-parse.y, objc-parse.y (set_yydebug): Move to | |
1367 | end of file so we don't have a reference to yydebug after its | |
1368 | definition; also delete duplicate declaration. | |
1369 | ||
1370 | Thu Jun 20 09:08:21 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) | |
1371 | ||
1372 | * local-alloc.c (block_alloc): Fixed typo in last edit. | |
1373 | ||
1374 | Wed Jun 19 17:05:52 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) | |
1375 | ||
1376 | * reload.c (push_reload): Verify reload_in[i] exists before using | |
1377 | GET_CODE on it. | |
1378 | ||
1379 | * m88k.md: USE insns must be immediately before CALL_INSNs to work | |
1380 | properly, otherwise sched.c and reorg.c will not associate them will | |
1381 | the CALL. | |
1382 | ||
1383 | * unroll.c (calculate_giv_inc): Accept constant increments | |
1384 | represented as a LO_SUM. | |
1385 | ||
1386 | * flow.c (mark_used_regs): Don't put a REG_DEAD note on insns that | |
1387 | already have a REG_UNUSED note. This makes it consistent with | |
1388 | combine.c. | |
1389 | * combine.c (distribute_notes): If a REG_UNUSED reg is no longer | |
1390 | set by an insn, but is still used by the insn, then must convert | |
1391 | the REG_UNUSED note to a REG_DEAD note. | |
1392 | ||
1393 | * gcc.c (SIGNED_CHAR_SPEC): Put ifndefs around it, so that it can | |
1394 | be overriden by a definition in the tm.h file. | |
1395 | ||
1396 | * cse.c (cse_insn): Add missing third parameter to find_reg_note calls. | |
1397 | ||
1398 | * tm-arm.h (INIT_CUMULATIVE_ARGS): Take LIBNAME as third argument. | |
1399 | ||
1400 | * combine.c (can_combine_p): Remove extra argument in call to | |
1401 | find_reg_note. | |
1402 | ||
1403 | * rtlanal.c (find_regno_note): Verify that the note contains a | |
1404 | REG before checking its REGNO. | |
1405 | ||
1406 | * cse.c (canon_reg): Fix spacing/punctuation error. | |
1407 | * recog.c (constrain_operands): Likewise. | |
1408 | * tree.h: Likewise. | |
1409 | * varasm.c (Assemble function): Likewise. | |
1410 | ||
1411 | Wed Jun 19 13:14:22 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) | |
1412 | ||
1413 | * local-alloc.c (block_alloc): When counting instructions, abort if | |
1414 | a loop is detected. Improperly threaded insns are easy to produce | |
1415 | when working on the scheduler. | |
1416 | ||
1417 | Sat Jun 15 06:13:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1418 | ||
1419 | * combine.c (simplify_and_const_int, case ASHIFTRT): Avoid infinite | |
1420 | loop if simplify_shift_const doesn't do anything. | |
1421 | ||
1422 | Thu Jun 13 09:05:12 1991 Tom Wood (wood at dg-rtp.dg.com) | |
1423 | ||
1424 | * m88k.md (decrement_and_branch_until_zero): Add this insn. | |
1425 | ||
1426 | Thu Jun 13 07:32:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1427 | ||
1428 | * explow.c (plus_constant): Fix error in last change; CONST case | |
1429 | wasn't handled correctly. | |
1430 | ||
1431 | * tm-m68k.h (CONST_CONSTS): Constants between -7 and -1 are cheap | |
1432 | because of subq. | |
1433 | ||
1434 | * m68k.md (dbra): Operand 0 should have '+' constraint, not '='. | |
1435 | ||
1436 | * expmed.c (store_fixed_bit_field): Clean up some confusion between | |
1437 | targets and results in expand_binop calls. | |
1438 | ||
1439 | * local-alloc.c (optimize_reg_copy): Fix several typos relating to | |
1440 | status updating. | |
1441 | Correctly handle the case where DEST dies before SRC. | |
1442 | Fix some comments that had SRC and DEST backwards. | |
1443 | ||
1444 | * combine.c (can_combine_p): Swap order of args of && to avoid | |
1445 | unnecessary calls to use_crosses_set_p. | |
1446 | (simplify_and_const_int, case SUBREG): Make code agree with comment. | |
1447 | ||
1448 | * emit-rtl.c (operand_subword): Avoid compilation warning. | |
1449 | ||
1450 | * expmed.c (store_fixed_bit_field): Don't use OP0 as SUBTARGET | |
1451 | if it is a MEM and -fforce_mem was specified. | |
1452 | ||
1453 | * expmed.c (emit_store_flag): After scc insns, convert to wider | |
1454 | mode using unsigned conversion if STORE_FLAG_VALUE is positive. | |
1455 | ||
1456 | * expmed.c (init_expmed): Use mode of size BITS_PER_WORD instead | |
1457 | of SImode. | |
1458 | (store_bit_field, extract_bit_field): Replace references to SImode | |
1459 | with MAXMODE. | |
1460 | (store_fixed_bit_field, extract_fixed_bit_field): Don't use explicit | |
1461 | modes; use get_best_mode instead. | |
1462 | (store_split_bit_field, extract_split_bit_field): Use operand_subword | |
1463 | and mode_for_size instead of making SUBREGs and using SImode. | |
1464 | ||
1465 | * stor-layout.c (get_best_mode): Allow LARGEST_MODE to be VOIDmode, | |
1466 | in which case we can use any appropriate mode. | |
1467 | ||
1468 | Wed Jun 12 16:32:37 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
1469 | ||
1470 | * cplus-decl.c (init_decl_processing): Compensate for tm-sparc.h | |
1471 | change to WCHAR_TYPE handling. | |
1472 | ||
1473 | Wed Jun 12 10:19:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1474 | ||
1475 | * tm-sparc.h (WCHAR_TYPE): Must be "short unsigned int". | |
1476 | ||
1477 | * combine.c (subst, make_extraction, simplify_shift_const): Don't | |
1478 | change mode of volatile MEM; replaces similar change of June 1st. | |
1479 | * function.c (fixup_var_refs_1, optimize_bit_field): Likewise. | |
1480 | * recog.c (validate_replace_rtx_1): Likewise. | |
1481 | ||
1482 | Tue Jun 11 22:09:28 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
1483 | ||
1484 | * expr.c (expand_expr, case COND_EXPR): Expressions of both the form | |
1485 | X ? A + 1 : A and X ? A : A + 1 were being done, but only the former | |
1486 | was being handled correctly. | |
1487 | ||
1488 | Tue Jun 11 12:13:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1489 | ||
1490 | * recog.c (validate_replace_rtx_1): If putting a CONST_INT in a | |
1491 | ZERO_EXTEND or SIGN_EXTEND, try to simplify the operation or fail; | |
1492 | the semantics of the operation require a non-VOIDmode argument. | |
1493 | ||
1494 | * cse.c (delete_dead_from_cse): Don't delete last insn in a libcall. | |
1495 | ||
1496 | * explow.c (allocate_dynamic_stack_space): Don't clobber SIZE when | |
1497 | rounding it. | |
1498 | ||
1499 | * fold-const.c (fold, case COND_EXPR): Ensure we always return an | |
1500 | expression in the correct type. | |
1501 | ||
1502 | * expr.c (emit_push_insn): Don't need to put X in register if it | |
1503 | is constant; operand_subword_force can do so if needed. | |
1504 | ||
1505 | * reload.c (find_reloads): Simplify nested `if' statements. | |
1506 | * recog.c (constrain_operands): Likewise. | |
1507 | ||
1508 | * jump.c (mark_jump_label): Fix typo (extra paren) in last change. | |
1509 | ||
1510 | Tue Jun 11 10:03:08 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
1511 | ||
1512 | * collect2.c: New file. | |
1513 | ||
1514 | * sched.c (memrefs_conflict_p): Finish removing ASHIFT case. | |
1515 | ||
1516 | * emit-rtl.c (operand_subword): Change test of BITS_PER_WORD < | |
1517 | HOST_BITS_PER_WORD from compile-time to run-time. | |
1518 | * expr.c (emit_push_insn): Ditto. | |
1519 | * recog.c (constrain_operands): Ditto. | |
1520 | * reload.c (find_reloads): Ditto. | |
1521 | ||
1522 | * jump.c (jump_optimize): Add `continue' after deleting INSN in case | |
1523 | where further attempts to optimize the insn are invalid. | |
1524 | (mark_jump_label): Don't crash if NEXT == 0. | |
1525 | ||
1526 | Tue Jun 11 09:14:05 1991 Tom Wood (wood at dg-rtp.dg.com) | |
1527 | ||
1528 | * out-m88k.c (legitimize_operand): New function to convert | |
1529 | CONST_DOUBLE to SFmode when possible. | |
1530 | * m88k.md (cmpdf, adddf3, subdf3, muldf3, divdf3): Use it. | |
1531 | * tm-m88k.h: Declare it. | |
1532 | ||
1533 | * xm-m88k.h (OBSTACK_CHUNK_SIZE): For DG/UX at least, the default | |
1534 | value results in a perfect checkerboard. | |
1535 | ||
1536 | Tue Jun 11 07:23:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1537 | ||
1538 | * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to | |
1539 | do any partial conversions here; expand_fix and expand_float now | |
1540 | handle all modes. | |
1541 | * optabs.c (fixtab, fixtrunctab, floattab): Table now contains | |
1542 | all modes. | |
1543 | (can_fix_p, can_float_p): Use mode as index in tables. | |
1544 | (init_fixtab, init_floattab): Likewise. | |
1545 | Add support for QImode and HImode operations. | |
1546 | (expand_float): Rework to remove dependendence on specific modes. | |
1547 | Can only use REAL_VALUE_LDEXP in certain configurations. | |
1548 | (expand_fix): Likewise. | |
1549 | If can't do operation unsigned, or signed into wider mode, emit a | |
1550 | sequence that compares operand with 2**(N-1) and, if larger, | |
1551 | subtracts 2**(N-1), converts, and adds it back. | |
1552 | Protect from queue and force not memory at start. | |
1553 | * m88k.md (fixuns_truncdfsi2, fixuns_truncsfsi2): Deleted; now done | |
1554 | in expand_fix in optabs.c. | |
1555 | ||
1556 | * combine.c (expand_field_assignment): Convert SET_SRC to mode of | |
1557 | INNER. | |
1558 | (simplify_shift_const, case ASHIFTRT): Don't use undefined initial | |
1559 | value of MASK. | |
1560 | ||
1561 | * explow.c: Include insn-config.h, recog.h, and insn-codes.h. | |
1562 | (allocate_dynamic_stack_space): Rework to be more precise in required | |
1563 | alignment. Must maintain alignment of stack to STACK_BOUNDARY at | |
1564 | all times (it must not be momentarily misaligned) and must align | |
1565 | returned address to BIGGEST_ALIGNMENT. | |
1566 | * Makefile.in (explow.o): Show new includes. | |
1567 | ||
1568 | Tue Jun 11 07:22:54 1991 Matthew Self (mself at next.com) | |
1569 | ||
1570 | * m68k.md: Change incorrect reference to -m68040-fp to -m68040-only. | |
1571 | Fix several spelling errors. | |
1572 | ||
1573 | * m68k.md (fix_trunc*f*i2): New insn's to replace fintrz on the | |
1574 | '040. These emit a sequence of insn's to change the rounding mode | |
1575 | to round-to-zero, perform the truncation, and restore the rounding | |
1576 | mode. | |
1577 | ||
1578 | Mon Jun 10 09:57:31 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
1579 | ||
1580 | * c-lang.c (GNU_xref_{begin,end}): Add stub functions for xref info. | |
1581 | ||
1582 | * cplus-decl.c (record_builtin_type): Add support for handling | |
1583 | builtin types' nicknames (e.g. "unsigned long" for "long unsigned | |
1584 | int"). | |
1585 | ||
1586 | * expmed.c (struct algorithm): Change array size from BITS_PER_WORD | |
1587 | to MAX_BITS_PER_WORD. | |
1588 | gcc.texinfo: Document MAX_BITS_PER_WORD. | |
1589 | ||
1590 | Mon Jun 10 07:45:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1591 | ||
1592 | * combine.c (try_combine): When making an I1 from an I2 that is | |
1593 | a PARALLEL, give the new I1 the same INSN_UID as I2. | |
1594 | ||
1595 | * recog.c (constrain_operands, case 'p'): Pass operand mode | |
1596 | (from match_operand) to strict_memory_address_p. | |
1597 | ||
1598 | * m68k.md (andsi3): bclr does not set the condition codes in the | |
1599 | standard way. | |
1600 | ||
1601 | Sun Jun 9 11:16:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1602 | ||
1603 | * reload.c (find_reloads): Swap preferred_class and pref_or_nothing | |
1604 | when we swap commutative operands. | |
1605 | ||
1606 | * combine.c (subst, simplify_shift_const): Treat UDIV and MULT | |
1607 | with a second operand of a constant that is a power of two as the | |
1608 | appropriate shift if it feeds or is fed by a shift. | |
1609 | ||
1610 | * expmed.c (expand_divmod): When searching for the best mode to | |
1611 | perform the computation, take into account the fact that we sometimes | |
1612 | do a shift, not a divide. | |
1613 | ||
1614 | * expmed.c (emit_store_flag): Correctly handle "a = b < 0;" if A | |
1615 | is narrower than B. | |
1616 | Don't check for STORE_FLAG_VALUE equal to just the sign bit of | |
1617 | OP0 if the width of its mode is larger than HOST_BITS_PER_INT. | |
1618 | Use switch rather than if/elseif/elseif. | |
1619 | ||
1620 | * combine.c (simplify_shift_const, shift cases): We were not forming | |
1621 | the mask correctly when VAROP is a LSHIFTRT and narrower than X; | |
1622 | simplify the mask formation by using significant_bits and | |
1623 | simplify_binary_operation. | |
1624 | ||
1625 | * reload.c (make_memloc): Copy RTX_UNCHANGING_P from REG to MEM. | |
1626 | (find_reloads_address, find_reloads_address_1): Don't shortcut | |
1627 | reloading the address in reg_equiv_address; always call | |
1628 | find_reloads_address on it. | |
1629 | ||
1630 | * recog.c (constrain_operands, case 'p'): Validate address if | |
1631 | testing strictly. | |
1632 | ||
1633 | * out-alliant.c, out-m68k.md (output_move_double): Extraction of | |
1634 | parts of CONST_INT was backwards; these machines are words-big-endian. | |
1635 | ||
1636 | Sat Jun 8 12:19:26 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
1637 | ||
1638 | * sparc.md: Remove special-case shift insns which load and shift | |
1639 | memory-based operands. Combine now does this for us. Also change | |
1640 | abs patterns so that they consistently print the negation followed | |
1641 | by the mov on a single line. | |
1642 | ||
1643 | * reload1.c (choose_reload_regs): Cast `enum reg_class' values to | |
1644 | `int' when using them as array indicies. | |
1645 | ||
1646 | * gnulib2.c (LONG_TYPE_SIZE): Don't inherit the definition of | |
1647 | LONG_TYPE_SIZE from tm.h, since that may be target_flag-specific. | |
1648 | Instead synthesize the value from `sizeof (long)'. | |
1649 | ||
1650 | * cplus-gc.c (build_m_desc): Figure out whether the i_desc should | |
1651 | constitute a defn of its type or not. Analogous to May 26 change | |
1652 | for instance variables. | |
1653 | ||
1654 | Sat Jun 8 07:11:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1655 | ||
1656 | * combine.c (simplify_and_const_int): Detect and remove redundant | |
1657 | alignment operation. | |
1658 | (significant_bits, case REG): Realize that the stack pointer might | |
1659 | be aligned. | |
1660 | (significant_bits, case PLUS, MUNUS, MULT, DIV, UDIV): Track low-order | |
1661 | bits of zero as well as high-order zero bits (so we detect alignment | |
1662 | operations). | |
1663 | (record_value_for_reg): If updating a register, try to substitute its | |
1664 | old value into the expression for better tracking of values. | |
1665 | ||
1666 | * a29k.md (fmac/dmac): Delete incorrect patterns. | |
1667 | ||
1668 | Thu Jun 6 19:08:29 1991 Sean Fagan (sef at cygint.cygnus.com) | |
1669 | ||
1670 | * final.c (output_source_line): Say we are on line number 1 if | |
1671 | sdb_begin_function_line is -1, not 0. | |
1672 | ||
1673 | Thu Jun 6 08:01:05 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1674 | ||
1675 | * stor-layout.c (get_best_mode): Don't assume GET_MODE_SIZE (SImode) | |
1676 | is UNITS_PER_WORD; if SLOW_BYTE_ACCESS defined, try to return the | |
1677 | mode whose size is UNITS_PER_WORD. | |
1678 | ||
1679 | * sparc.md (floatsisf2, floatsidf2): Add missing mode for | |
1680 | operand 1; use const_int_operand as predicate. | |
1681 | ||
1682 | * cse.c (canon_reg): Add arg INSN; if replacing a pseudo with a hard | |
1683 | register or vice versa, use validate_change to ensure the insn | |
1684 | remains valid. | |
1685 | All callers changed; most pass zero since they validate replacement. | |
1686 | (cse_insn): Use validate_change on result of canon_reg when | |
1687 | required. | |
1688 | ||
1689 | * c-common.c (combine_strings): Use WCHAR_BYTES instead of | |
1690 | UNIT_PER_WORD for the size of a wide char. | |
1691 | ||
1692 | * emit-rtl.c (gen_lowpart_common): Always extract integral modes | |
1693 | from integer CONST_INTs and CONST_DOUBLEs. | |
1694 | ||
1695 | * integrate.c (copy_for_inline, copy_rtx_and_substitute): Don't | |
1696 | try to extract a float from a fixed-mode CONST_DOUBLE. | |
1697 | (copy_for_inline, copy_rtx_and_substitute, restore_constants): | |
1698 | Declare target of REAL_VALUE_FROM_CONST_DOUBLE to be REAL_VALUE_TYPE. | |
1699 | ||
1700 | * local-alloc.c (update_equiv_regs): Fix typo in testing | |
1701 | reg_basic_block. | |
1702 | ||
1703 | Wed Jun 5 09:15:09 1991 Ken Raeburn (raeburn at watch.com) | |
1704 | ||
1705 | * Eliminate unneeded binding levels when overloading template class | |
1706 | names: | |
1707 | * cplus-pt.c (overload_template_name): Accept second argument | |
1708 | classlevel, indicating that new decl should be pushed into current | |
1709 | class binding level; otherwise, assume current level is okay to use. | |
1710 | Callers changed. | |
1711 | (undo_template_name_overload): New second argument classlevel | |
1712 | indicates where binding for variable was made. Callers changed. | |
1713 | ||
1714 | * cplus-parse.y (structsp): Call undo_template_name_overload in all | |
1715 | appropriate cases. | |
1716 | ||
1717 | * Get interface/implementation flags set properly on methods in | |
1718 | class templates, and use it: | |
1719 | * cplus-lex.c (store_pending_inline): If inside a class, walk up | |
1720 | through nested classes to top level looking for template parameters. | |
1721 | For class methods, use current interface flag settings rather than | |
1722 | flags for class. | |
1723 | (extract_interface_info): No longer static. | |
1724 | (do_pending_inlines, process_next_inline): Call | |
1725 | extract_interface_info to get interface flags set properly after | |
1726 | changing file names. | |
1727 | * cplus-pt.c (instantiate_class_template): Ditto. | |
1728 | (end_template_instantiation): Ditto. | |
1729 | (do_pending_expansions): If interface/implementation flags of | |
1730 | containing class are set, use them. | |
1731 | * cplus-tree.h (interface_unknown): Added declaration. | |
1732 | ||
1733 | Wed Jun 5 07:36:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1734 | ||
1735 | * reload.c (find_reloads_address): Unshare a MEM if its address is | |
1736 | the address of a constant pool location. | |
1737 | ||
1738 | * optabs.c (expand_binop): Fix typos in multi-word addition; had | |
1739 | MODE for SUBMODE. | |
1740 | ||
1741 | * reload1.c (alter_reg): Correctly delete insn that makes a REG | |
1742 | equivalent to a MEM in the case where the MEM is the SET_DEST. | |
1743 | ||
1744 | * a29k.md (negdf2): Add missing alternative in operands 2. | |
1745 | (movdi): Change "i" constraint to "n". | |
1746 | Split for constant integer as input; split cannot fail. | |
1747 | Correct typo in DEFINE_SPLIT (DFmode for DImode). | |
1748 | * out-a29k.c (gen_reg_or_integer_constant_operand): New function. | |
1749 | ||
1750 | * configure: Fix typo in reference to tm-sun3-nfp.h. | |
1751 | ||
1752 | Wed Jun 5 06:56:10 1991 Matthew Self (mself at next.com) | |
1753 | ||
1754 | * c-parse.y, objc-parse.y (attrib): Always pass aligned attribute | |
1755 | through. Return $1 on failure rather than NULL_TREE for consistency. | |
1756 | ||
1757 | * c-common.c (decl_attributes): Warn if requested alignment is not | |
1758 | a power of two. Also warn if decl is not a VAR_DECL or a FIELD_DECL, | |
1759 | since specifying alignment makes no sense for a TYPE_DECL, and is | |
1760 | not implemented for a FUNCTION_DECL. | |
1761 | ||
1762 | * c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call | |
1763 | decl_attributes before finish_decl in order for alignment attribute | |
1764 | to take effect. | |
1765 | ||
1766 | * varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than | |
1767 | MAX_OFILE_ALIGNMENT, if defined. This allows errors to be | |
1768 | detected with formats like a.out which support a maximum alignment | |
1769 | of 4. | |
1770 | ||
1771 | * c-parse.y, objc-parse.y (component_declarator): Call decl_attributes | |
1772 | with correct args. | |
1773 | ||
1774 | * stor-layout.c (layout_record, layout_union): Do not clamp struct | |
1775 | alignment at BIGGEST_ALIGNMENT, since individual fields may have | |
1776 | requested greater alignment than this. This check shouldn't have | |
1777 | done anything anyway. | |
1778 | ||
1779 | * c-parse.y (unary_expr): When alignof is applied to an expression, | |
1780 | call c_alignof_expr so that we can check DECL_ALIGN instead of calling | |
1781 | c_alignof (TYPE_ALIGN (TREE_TYPE (expr))). | |
1782 | ||
1783 | * c-typeck.c (c_alignof_expr): New function to compute alignof for | |
1784 | expr's. Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's. Also | |
1785 | return 1 after reporting error about applying alignof to bitfields. | |
1786 | ||
1787 | * c-tree.h (c_alignof_expr): Add declaration. | |
1788 | ||
1789 | * varasm.c (assemble_variable): MAX_OFILE_ALIGNMENT defaults to | |
1790 | BIGGEST_ALIGNMENT if not defined in config.h. | |
1791 | ||
1792 | Wed Jun 5 06:55:12 1991 Tom Wood (wood at dg-rtp.dg.com) | |
1793 | ||
1794 | * m88k.md (mov*): Change the interface to emit_move_sequence. | |
1795 | * out-m88k.c (emit_move_sequence): Similar to the sparc version. | |
1796 | ||
1797 | * tm-m88k.h (SIZE_TYPE): Specify as unsigned int. | |
1798 | ||
1799 | * xm-m88k.h (HOST_BITS_PER_LONGLONG): Define. | |
1800 | ||
1801 | Wed Jun 5 01:45:07 1991 Sean Fagan (sef at cygint.cygnus.com) | |
1802 | ||
1803 | * sdbout.c (sdbout_symbol): don't output definition information for | |
1804 | a nested function inside the parent function; this makes COFF | |
1805 | assemblers upset. | |
1806 | ||
1807 | Tue Jun 4 17:35:13 1991 Sean Fagan (sef at cygint.cygnus.com) | |
1808 | ||
1809 | * function.c (trampoline_address): make the RTL_EXPR node temporary, | |
1810 | not momentary, so that the trampoline_list doesn't become garbage. | |
1811 | Fix made by jim wilson (wilson@cygnus.com). | |
1812 | ||
1813 | Tue Jun 4 09:40:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1814 | ||
1815 | * expr.c (move_block_to_reg): Fix typo in last change. | |
1816 | ||
1817 | * local-alloc.c (update_equiv_regs): Check for reg_n_refs == 2, | |
1818 | not loop_depth * 2. | |
1819 | ||
1820 | * reorg.c (fill_simple_delay_slots): Clear INSN_DELETED_P on insns | |
1821 | placed in current_function_epilogue_delay_list. | |
1822 | ||
1823 | * make-rs6000 (ALLOCA_FLAGS, ALLOCA_FINISH): Add override to | |
1824 | compensate for the fact that the RS/6000 C compiler has no -S. | |
1825 | ||
1826 | * out-rs6000.c (easy_fp_constant): Use operand_subword. | |
1827 | (print_operand): Use INT_P and INT_LOWPART to allow accepting both | |
1828 | CONST_INT and CONST_DOUBLE for integers. | |
1829 | ||
1830 | * rs6000.md (floatsidf2, floatunssidf2): Rework these to emit only | |
1831 | two insns, each of which has DImode or DFmode operands. Then | |
1832 | split the funny DImode insn to generate it. | |
1833 | (fix_truncdfsi2, fixuns_truncdfsi2): Surround our call with | |
1834 | REG_LIBCALL/REG_RETVAL notes. | |
1835 | Use operand_subword. | |
1836 | (movsf, movdf): Correctly handle a pseudo passed during reload. | |
1837 | Use operand_subword. | |
1838 | Split moves involving "easy" FP constants. | |
1839 | (subtract-and-branch): Disable for now, to avoid output reload in jump. | |
1840 | ||
1841 | * tm-rs6000.h (WCHAR_TYPE): Add definition. | |
1842 | (INT_REGNO_P): Fix typo; register 31 is a normal register. | |
1843 | (LEGITIMATE_CONSTANT_P): The only FP constants that are valid are | |
1844 | the "easy" ones. | |
1845 | ||
1846 | * a29k.md (negdf2): Use XOR when not involving accumulator. | |
1847 | Add SCRATCH so we dont use gr122. | |
1848 | Handle case where input and output are same register. | |
1849 | (negsf2): Use SCRATCH. | |
1850 | (DImode operations): Use operand_subword, not gen_{low,high}_part. | |
1851 | (movsf, movdf, movdi): Always split if we can look inside CONST_DOUBLE. | |
1852 | Use operand_subword. | |
1853 | Don't split into separate words in DEFINE_EXPAND. | |
1854 | * out-a29k.c (in_operand): Account for fact that integer CONST_DOUBLE | |
1855 | is VOIDmode. | |
1856 | (extract_subword): Deleted. | |
1857 | (print_operand): Add macros INT_P and INT_LOWPART so we can accept | |
1858 | either CONST_INT or CONST_DOUBLE. | |
1859 | ||
1860 | * romp.md (movdi, movdf, negsf2, negdf2): Use operand_subword and | |
1861 | operand_subword_force, instead of gen_{high,low}part. | |
1862 | Use force_const_mem instead of force_const_double_mem. | |
1863 | ||
1864 | * m88k.md (movdi): Remove 'F' constraint; 'n' now includes integer | |
1865 | CONST_DOUBLE. | |
1866 | (anddi3, iordi3, xordi3): Likewise. | |
1867 | Use operand_subword to extract individual words. | |
1868 | * out-m88k.c (output_load_const_{float,double,dimode}): Use | |
1869 | operand_subword. | |
1870 | ||
1871 | * Makefile.in (emit-rtl.o): Now includes expr.h. | |
1872 | * calls.c (expand_call): Pass mode to move_block_to_reg. | |
1873 | * combine.c (subst, case SUBREG): Simplify SUBREG of hard register | |
1874 | and some SUBREGs of constants. | |
1875 | (gen_lowpart_for_combine): If object is desired mode, always return it. | |
1876 | Use gen_lowpart_common for most cases; just support MEM and | |
1877 | surrounding with a SUBREG here. | |
1878 | * cse.c (insert): CONSTANT_P includes CONST_DOUBLE. | |
1879 | (fold_rtx): Use MODE for GET_MODE (X). | |
1880 | (fold_rtx, case SUBREG): Handle simple cases of folding SUBREGs. | |
1881 | (fold_rtx, case MEM): Use operand_subword and gen_lowpart_if_possible | |
1882 | to get parts of constant instead of gen_lowpart and gen_highpart. | |
1883 | (gen_lowpart_if_possible): Use gen_lowpart_common for most cases. | |
1884 | * expr.c: Include expr.h. | |
1885 | (gen_lowpart_common): New function, from gen_lowpart. | |
1886 | (gen_lowpart): Use gen_lowpart_common for most cases; just handle MEM. | |
1887 | (gen_highpart): Deleted. | |
1888 | (subreg_lowpart_p): Test WORDS_BIG_ENDIAN in `if', not `#if'. | |
1889 | (operand_subword, operand_subword_force): New functions. | |
1890 | * explow.c (plus_constant): Handle adding CONST_INT to CONST_DOUBLE. | |
1891 | Rework to use switch statement. | |
1892 | Remove obsolete OLD_INDEXING code. | |
1893 | (plus_constant_for_output): Use plus_constant for most cases. | |
1894 | (break_out_memory_refs): Refine which constants get broken out. | |
1895 | * expmed.c (store_bit_field, extract_bit_field): Don't use | |
1896 | gen_highpart for multi-word fields; instead, loop and use | |
1897 | operand_subword. We now support fields more than two words long. | |
1898 | (mask_rtx, lshift_value): Just pass high and low words to | |
1899 | immed_double_const; it will mask and choose CONST_INT vs. CONST_DOUBLE. | |
1900 | * expr.c (convert_move): Use operand_subword instead of gen_highpart. | |
1901 | Don't assume GET_MODE_SIZE (DImode) > UNITS_PER_WORD. | |
1902 | (move_block_to_reg): Add MODE arg. | |
1903 | Use operand_subword_force. | |
1904 | (move_block_from_reg): Use operand_subword. | |
1905 | (move_block_from_reg, move_block_to_reg, use_rgs): | |
1906 | Don't assume GET_MODE_SIZE (SImode) == UNITS_PER_WORD. | |
1907 | (emit_move_insn, emit_push_insn): Likewise. | |
1908 | Use operand_subword and operand_subword_force. | |
1909 | (expand_expr, case INTEGER_CST): Just call immed_double_const. | |
1910 | (expand_expr, cases FIX_TRUNC_EXPR, FLOAT_EXPR): Don't assume | |
1911 | GET_MODE_SIZE (SImode) == UNITS_PER_WORD. | |
1912 | (expand_builtin): Likewise. | |
1913 | (do_jump_by_parts_{greater,equality): Likewise. | |
1914 | Use operand_subword_force. | |
1915 | * expr.h (operand_subword): Remove declaration from here. | |
1916 | (validize_mem): Add missing declaration. | |
1917 | * final.c (final_scan_insn): If assembler code string is "#", | |
1918 | try to split insn. | |
1919 | Ignore insns with INSN_DELETED_P set. | |
1920 | (alter_subreg): Remove erroneous code for CONST_DOUBLE. | |
1921 | (output_addr_const): Integer CONST_DOUBLEs are now VOIDmode. | |
1922 | * fold-const.c (add_double): No longer static. | |
1923 | * integrate.c (copy_for_inline, copy_rtx_and_substitute): | |
1924 | Use validize_mem to validate force_const_mem's result. | |
1925 | (subst_constants, case SUBREG): Use operand_subword and | |
1926 | gen_lowpart_common instead of gen_lowpart and gen_highpart. | |
1927 | (restore_constants): Don't assume all CONST_DOUBLEs are floating. | |
1928 | Use validize_mem to validate force_const_mem's result. | |
1929 | * optabs.c (expand_binop,, expand_unop): Don't assume | |
1930 | GET_MODE_SIZE (SImode) == UNITS_PER_WORD. | |
1931 | Use operand_subword_force. | |
1932 | (operand_subword): Deleted from here. New version in emit-rtl.c. | |
1933 | * recog.c (validate_replace_rtx_1): Check for any constant, | |
1934 | not just CONST_INT. | |
1935 | (constrain_operands, case 'm', 'o'): Any constant OK if strict < 0. | |
1936 | (constrain_operands, case 'E'): Must have host and target word sizes | |
1937 | the same. | |
1938 | (constrain_operands, case 's', 'n'): CONST_DOUBLE can be integer. | |
1939 | * reload.c (find_reloads, case 'm', 'o', 'E', 's', 'n'): Likewise. | |
1940 | Don't call force_const_double_mem; use force_const_mem instead. | |
1941 | (find_reloads_toplev): Likewise. | |
1942 | Use gen_lowpart_common to get low part of constant. | |
1943 | * rtl.h (gen_highpart, force_const_double_mem): Deleted. | |
1944 | (gen_lowpart_common, operand_subword, operand_subword_force): | |
1945 | New declarations. | |
1946 | * varasm.c (const_double_chain): Renamed from real_constant_chain. | |
1947 | (immed_double_const): For integer constants, perform any needed | |
1948 | masking and make either CONST_INT or CONST_DOUBLE. | |
1949 | (force_const_double_mem): Deleted; would need a mode arg added | |
1950 | which would make it almost identical to force_const_mem. | |
1951 | * out-vax.c (split_quadword_operands): Use operand_subword instead | |
1952 | of gen_lowpart and gen_highpart. | |
1953 | ||
1954 | * function.c (find_replacement): New function. | |
1955 | (fixup_var_refs_insns): Pass pointer to listhead of (new) | |
1956 | fixup_replacement structures; if any entries were pseudos, copy from | |
1957 | memory to the pseudo. | |
1958 | (fixup_var_refs_1): New arg REPLACEMENTS; provide that arg in | |
1959 | recursive calls. | |
1960 | Use find_replacements to ensure we don't break any MATCH_DUPs. | |
1961 | ||
1962 | Tue Jun 4 05:07:53 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
1963 | ||
1964 | * stmt.c (pushcase, pushcase_range): Take new parameter DUPLICATE. | |
1965 | Use this to store existing LABEL_DECL if LABEL is a duplicate. | |
1966 | * c-parse.y, cplus-parse.y, objc-parse.y, stmt.c: All callers | |
1967 | changed. | |
1968 | ||
1969 | Mon Jun 3 17:19:40 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
1970 | ||
1971 | * cplus-expr.c (decl_in_memory_p): New function. | |
1972 | * cplus-typeck.c (mark_addressable): Test `decl_in_memory_p' instead | |
1973 | of testing memory_operand, since the DECL_RTL of a decl may be a | |
1974 | (MEM ...) by not a valid memory address. | |
1975 | ||
1976 | * cplus-typeck.c (mark_addressable): When we decide that a static | |
1977 | const variable must go to memory, make sure that its rtl is | |
1978 | allocated from the correct obstack. | |
1979 | ||
1980 | * cplus-decl.c (grokdeclarator): Replace undocumented BREAK_C_TAGS | |
1981 | #define control with comments explaining why or how it is correct | |
1982 | for GNU C++ to break C's notions of what a tag is. | |
1983 | ||
1984 | * cplus-call.c (convert_harshness): Replace undocumented #if | |
1985 | AMBIGUOUS_WORKING control with a comment explaining the actions | |
1986 | where this control used to be. | |
1987 | ||
1988 | Mon Jun 3 15:07:47 1991 Sean Eric Fagan (sef at kithrup) | |
1989 | ||
1990 | * tm-i386.h (TRAMPOLINE_TEMPLATE): Changed a 040 to 0xe0; | |
1991 | this is the proper code for a jmp [%eax] instruction. | |
1992 | ||
1993 | Mon Jun 3 08:07:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1994 | ||
1995 | * cccp.c (initialize_builtins): Install __SIZE__TYPE__, | |
1996 | __PTRDIFF_TYPE__, and __WCHAR__TYPE__ as builtins. | |
1997 | ||
1998 | Sun Jun 2 18:18:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
1999 | ||
2000 | * flow.c (mark_set_1): Don't set LAST_MEM_SET from a MEM that has any | |
2001 | side-effects (such as auto-inc), not just volatile MEMs. | |
2002 | ||
2003 | * rtlanal.c (reg_referenced_p): New function. | |
2004 | * combine.c (try_combine): Correct test for added_sets_1 to account | |
2005 | for case where I1 and I2 both feed I3. | |
2006 | (distribute_notes): Don't interpret setting a reg as a use of the | |
2007 | reg; use new reg_referenced_p and simplify code. | |
2008 | ||
2009 | * flow.c (propagate_block): Ensure that LOOP_DEPTH is correct at all | |
2010 | insns in a basic block, otherwise reg_n_refs will be set incorrectly. | |
2011 | ||
2012 | * recog.c (validate_replace_rtx_1): Don't change mode of memory | |
2013 | reference that is mode-dependent. | |
2014 | Don't make a MEM with a larger mode than original. | |
2015 | ||
2016 | * combine.c (try_combine): Disable code to check MODES_TIEABLE_P | |
2017 | added May 20th and 22nd; this should not be needed now that | |
2018 | LIMIT_RELOAD_CLASS has been added to reload. | |
2019 | ||
2020 | * flow.c (mark_set_1): Allow for the fact that stack pushes don't have | |
2021 | REG_INC notes. | |
2022 | * local-alloc.c (optimize_reg_copy): Likewise. | |
2023 | Don't change lives of hard registers #ifdef SMALL_REGISTER_CLASSES. | |
2024 | A USE of a register must not be changed. | |
2025 | (validate_equiv_mem): Don't make an equivalence to volatile MEMs. | |
2026 | ||
2027 | * reorg.c (mark_set_resources): #ifdef PUSH_ROUNDING, mark SP as always | |
2028 | set since the insn might have a (pre_dec sp). | |
2029 | ||
2030 | Sun Jun 2 16:03:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2031 | ||
2032 | * Makefile.in (libg_dir): Variable deleted. | |
2033 | (install-gnulib): Don't bother creating libg.a. | |
2034 | ||
2035 | * cccp.c (size_type_string, etc.): Variables deleted. | |
2036 | (special_symbol): Use macros SIZE_TYPE, etc., directly. | |
2037 | ||
2038 | Sat Jun 1 12:54:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2039 | ||
2040 | * Let tm.h specify types for size_t, ptrdiff_t and wchar_t. | |
2041 | (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): New params. | |
2042 | * cccp.c, c-decl.c: Provide default definitions of the new params. | |
2043 | * cccp.c (__SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__): Builtins. | |
2044 | (special_symbol): Implement them based on new params. | |
2045 | * stddef.h (size_t, ptrdiff_t, wchar_t): Declare using those builtins. | |
2046 | * c-tree.h (ptrdiff_type_node): Declare variable. | |
2047 | * c-decl.c (init_decl_processing): Use *_TYPE params | |
2048 | to control setting of sizetype, wchar_type_node and ptrdiff_type_node. | |
2049 | * c-typeck.c (pointer_diff): Take result type from ptrdiff_type_node. | |
2050 | ||
2051 | * configure (target1): Really change / to -. | |
2052 | ||
2053 | Sat Jun 1 02:49:04 1991 Michael Tiemann (tiemann at cygnus.com) | |
2054 | ||
2055 | * cplus-lex.c (extract_interface_info): Now non-static. Called | |
2056 | whenever INPUT_FILENAME changes. | |
2057 | * cplus-pt.c (instantiate_class_template): Call | |
2058 | `extract_interface_info' when switching files. | |
2059 | * cplus-input.c (getch): Ditto. | |
2060 | ||
2061 | * combine.c (subst): Don't change the mode of memory access for | |
2062 | volatile memory. | |
2063 | ||
2064 | * tm-sparc.h (CONST_COSTS): Fix typo in computing cost of | |
2065 | CONST_DOUBLE for DImode integers. | |
2066 | ||
2067 | Fri May 31 16:11:57 1991 Ken Raeburn (raeburn at watch.com) | |
2068 | ||
2069 | * cplus-lex.c (process_next_inline): Set line number and filename if | |
2070 | more inline data is to be processed. | |
2071 | (store_pending_inline): Treat FUNCTION_TYPE like METHOD_TYPE. Use | |
2072 | current_class_type instead of extracting it from method type; the | |
2073 | two should be the same, and the latter doesn't work for statics. | |
2074 | ||
2075 | * cplus-decl.c (start_decl): When constructing templates, use | |
2076 | original name of function rather than "mangled" name. Look for | |
2077 | FUNCTION_DECL, not FUNCTION_TYPE, when deciding how to push the | |
2078 | new decl. | |
2079 | (start_method): Default inlining does not apply to template | |
2080 | expansions. | |
2081 | ||
2082 | * cplus-pt.c (pending_template_expansions): Moved declaration to | |
2083 | start of file. | |
2084 | (tsubst): For FUNCTION_DECL, use original name of source, not | |
2085 | mangled name. | |
2086 | (instantiate_template): Local variables now non-static. Fill in | |
2087 | pending-inline field of new decl, rather than template-info, and | |
2088 | chain into either pending-inlines or pending-template-expansions. | |
2089 | ||
2090 | * cplus-typeck.c (build_x_function_call): If a template is found, | |
2091 | treat it as an overloaded declaration. | |
2092 | ||
2093 | Fri May 31 14:20:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2094 | ||
2095 | * Makefile.in (all.cross): New target. | |
2096 | * configure: If cross-compiling, change `ALL' to use all.cross. | |
2097 | ||
2098 | Fri May 31 11:43:31 1991 Matthew Self (mself at next.com) | |
2099 | ||
2100 | * tm-next.h (EXTRA_SECTION_FUNCTIONS): | |
2101 | Add new constructor and destructor sections. | |
2102 | (MAX_OFILE_ALIGNMENT): Define as 2^15 for Mach-O. | |
2103 | (ASM_OUTPUT_ALIGN): Use .align, not .even. Allow alignments > 2. | |
2104 | (CPP_PREDEFINES): Added -Dm68k since some code expects this. | |
2105 | ||
2106 | Fri May 31 05:41:51 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2107 | ||
2108 | * cplus-class.c (pushclass): New argument value for MODIFY accepted. | |
2109 | * cplus-decl2.c (build_push_scope): Call `pushclass' with MODIFY == 3. | |
2110 | ||
2111 | * cplus-decl.c (finish_function): Set TREE_PUBLIC and TREE_EXTERNAL | |
2112 | bits on functions according to #pragma interface/implementation, | |
2113 | regardless of whether or not the function's inline. This fixes the | |
2114 | bug of needless code replication with -fno-inline. | |
2115 | ||
2116 | Thu May 30 17:39:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2117 | ||
2118 | * expr.c (expand_expr): | |
2119 | Don't lose volatility of fields in COMPONENT_REF. | |
2120 | ||
2121 | Thu May 30 17:36:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2122 | ||
2123 | * cse.c (count_reg_usage, delete_dead_from_cse): New functions. | |
2124 | * toplev.c (rest_of_compilation): Call delete_dead_from_cse immediately | |
2125 | after the first cse pass. | |
2126 | ||
2127 | * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem): | |
2128 | New functions, to find cases where a REG is equivalent to a MEM. | |
2129 | (optimize_reg_copy): New function. | |
2130 | (update_equiv_regs): Call these new functions. | |
2131 | Look for a register used in only one basic block being stored into | |
2132 | memory. | |
2133 | Keep track of loop depth so we can find regs used only once, but | |
2134 | inside a loop. | |
2135 | * reload1.c (reload): Use single_set when looking for an insn | |
2136 | that initializes a register. | |
2137 | If making a REG equivalent to a MEM, the insn with SET_DEST being | |
2138 | the register isn't always the one making the equivalence, since the | |
2139 | equivalence might be occurring due to a store into MEM; in that | |
2140 | case set reg_equiv_init to the latter insn. | |
2141 | ||
2142 | Thu May 30 14:23:01 1991 Ken Raeburn (raeburn at watch.com) | |
2143 | ||
2144 | * Pending expansions processed at end-of-file can be processed out | |
2145 | of order, so freeing the associated data from the obstacks is not | |
2146 | possible. | |
2147 | * cplus-tree.h (struct pending_inline): New field can_free | |
2148 | indicates whether to free the text after processing it. | |
2149 | * cplus-lex.c (do_pending_inline, process_next_inline): If | |
2150 | can_free flag is set, specify inline-text obstack, otherwise null | |
2151 | pointer. | |
2152 | (cons_up_default_function): Clear flag. | |
2153 | (reinit_parse_for_method): Set it. | |
2154 | (store_pending_inline): Clear it when changing obstacks. | |
2155 | (pending_template_obstack): Deleted. References changed to use | |
2156 | permanent_obstack. | |
2157 | ||
2158 | * cplus-lex.c (store_pending_inline): Set DECL_PENDING_INLINE_INFO | |
2159 | value after swapping obstacks, not before. | |
2160 | ||
2161 | Thu May 30 07:23:18 1991 Michael Tiemann (tiemann at cygnus.com) | |
2162 | ||
2163 | * va-sparc.h: Has to be a char * to be compatible with Sun. | |
2164 | i.e., we have to pass a `va_list' to vsprintf. Also, fixed | |
2165 | bug in passing vararg structs. | |
2166 | ||
2167 | Thu May 30 00:32:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2168 | ||
2169 | * configure: Delete Makefile.tem before writing it. | |
2170 | ||
2171 | * stor-layout.c (layout_record): | |
2172 | Ignore PCC_BITFIELD_TYPE_MATTERS for incomplete type. | |
2173 | ||
2174 | * fixincludes (stdtypes.h): Handle wchar_t like the other types. | |
2175 | ||
2176 | * function.c (assign_parms): Don't declare args_so_far register. | |
2177 | ||
2178 | Wed May 29 15:13:05 1991 Ken Raeburn (raeburn at watch.com) | |
2179 | ||
2180 | * cplus-tree.def (TEMPLATE_PARM_IDX): Deleted. | |
2181 | (TEMPLATE_TYPE_PARM): New node type, looks like a type node. | |
2182 | (TEMPLATE_CONST_PARM): New node type, looks like a const node. | |
2183 | ||
2184 | * cplus-tree.h (IDENTIFIER_TYPE_VALUE_PTR): Inlined under gcc. | |
2185 | (TYPE_IDENTIFIER_PTR): Ditto. | |
2186 | (DECL_NESTED_TYPENAME_PTR): Ditto. | |
2187 | (struct lang_type): New bitfield `use_template'. | |
2188 | (CLASSTYPE_USE_TEMPLATE): Accessor macro for above. | |
2189 | (struct lang_decl): New field `template_info'. | |
2190 | (DECL_TEMPLATE_INFO): Accessor macro for above. | |
2191 | (TEMPLATE_EXPANSION_NAME_P): Deleted. | |
2192 | (push_overloaded_decl_top_level): Added declaration. | |
2193 | (TEMPLATE_TYPE_TPARMLIST, TEMPLATE_TYPE_IDX, | |
2194 | TEMPLATE_TYPE_SET_INFO, TEMPLATE_CONST_TPARMLIST, | |
2195 | TEMPLATE_CONST_IDX, TEMPLATE_CONST_SET_INFO): New macros for | |
2196 | accessing fields of TEMPLATE_..._PARM nodes. | |
2197 | (struct pending_inline): New fields for names and values to bind | |
2198 | to them while processing. | |
2199 | (struct template_info): Definition moved here from cplus-pt.c. | |
2200 | (instantiate_template): Added declaration. | |
2201 | (instantiate_class_template): Ditto. | |
2202 | (processing_template_{decl,defn}): New variable declarations. | |
2203 | ||
2204 | * print-tree.c (print_node): Provide missing argument to | |
2205 | print_node for `bitpos' field. Display `virtual' flag, and (for | |
2206 | function and method types) `class' field; these are only used by | |
2207 | C++ that I'm aware of, but are defined in common code, so they | |
2208 | should be displayed here. | |
2209 | ||
2210 | * cplus-parse.y (template_def): Separate set of derivations, for | |
2211 | class and function templates. Template_def is a type of extdef; | |
2212 | extern_lang_string before template_def is not permitted. | |
2213 | (fn_tmpl_end): New nonterminal, anything that signals the end of | |
2214 | the portion of a template that we should parse. | |
2215 | (yyprint): Define only if YYDEBUG. Handle TYPESPEC. | |
2216 | (datadef): Complain at class template override declaration if that | |
2217 | specialization has already been produced by expansion. Template | |
2218 | definitions no longer belong here. | |
2219 | (tmpl.2): Always call instantiate_class_template; let it decide | |
2220 | whether or not to go through with it. | |
2221 | (template_instantiation): Put decl in global scope only if not | |
2222 | already there. | |
2223 | (typespec, scoped_typename): Scoped typename inside template type | |
2224 | should be a scoped_typename, not a typespec. However, a | |
2225 | template_type should be allowed as a typespec. | |
2226 | (structsp): Don't undo template name overload here. Deleted | |
2227 | derivation from template_type. | |
2228 | (named_class_head_sans_basetype): Don't overload template name. | |
2229 | (LC): Do it here. | |
2230 | (notype_declarator): For scoped_id derivations, don't call | |
2231 | build_push_scope if the scoped_id is a SCOPE_REF. | |
2232 | (scoped_id): Moved old typespec-from-template_type rule here. | |
2233 | Call resolve_scope_to_name only if template parms aren't involved. | |
2234 | ||
2235 | * cplus-pt.c (struct template_info): Definition deleted. | |
2236 | (templates, current_template_info): Variables deleted. | |
2237 | (processing_template_{decl,defn}): New variables. | |
2238 | (push_template_decls, pop_template_decls): Accept parmlist and | |
2239 | arglist as separate arguments, instead of deriving both from the | |
2240 | template. If class_level is non-zero, push and pop a level, | |
2241 | making it transparent to tags. Removed some pointless checks from | |
2242 | pop_template_decls that are only needed in push_template_decls, | |
2243 | and some assertions from both. Callers changed. | |
2244 | (uses_template_parms): Return non-zero iff argument refers to any | |
2245 | TEMPLATE_*_PARM nodes. | |
2246 | (tsubst): Walk tree, substituting for template parms, returning | |
2247 | new tree. | |
2248 | (type_unification): Rewritten a bit, to make it work. New | |
2249 | argument nsubsts is pointer to place to record number of | |
2250 | substitutions made when matching. | |
2251 | (unify): Renamed from unify1. Rewritten completely, to work. | |
2252 | Still may need extending for some tree node types. | |
2253 | (do_pending_expansions): At end-of-file, expand any templates not | |
2254 | yet expanded which were actually needed. Needs work to accomodate | |
2255 | latest specs. | |
2256 | (process_template_parm): Simplified slightly. Non-type parms | |
2257 | should be marked read-only; aggregate types are not allowed, since | |
2258 | equality checks don't work. | |
2259 | (end_template_parm_list): Moved to after process_template_parm. | |
2260 | Push a level, and push decls for TEMPLATE_*_PARMs. Set | |
2261 | processing_template_decl flag. | |
2262 | (end_template_decl): For non-class templates, build a | |
2263 | TEMPLATE_DECL and store the regular decl in its result field. | |
2264 | Context and other values get copied over too. Call poplevel to | |
2265 | get rid of the TEMPLATE_*_PARM decls, and call | |
2266 | dont_forget_overload to avoid losing the declaration later. Clear | |
2267 | processing_template_decl flag. Call get_pending_sizes, so later | |
2268 | function compilation doesn't try to evaluate sizes of templates. | |
2269 | (mangle_class_name_for_template): Convert type/non-type check from | |
2270 | switch to if test. Added support for ENUMERAL_TYPE, REAL_TYPE, | |
2271 | and POINTER_TYPE parms. | |
2272 | (instantiate_class_template): Renamed from old | |
2273 | instantiate_template. Don't expand if type size is set, or if | |
2274 | being-defined flag is set, or use-template flag is non-zero. If | |
2275 | other-template parms are used in the parm list, construct a simple | |
2276 | RECORD_TYPE node and return it. Catch case of template declared | |
2277 | but not defined before use. Renamed argument from class to | |
2278 | classname. Set processing_template_defn flag. | |
2279 | (instantiate_template): New routine; constructs new decl node | |
2280 | given TEMPLATE_DECL node and template arg vector. | |
2281 | (end_template_instantiation): Set use-template field to 2 ("did | |
2282 | use template"). Clear processing_template_defn flag. | |
2283 | (reinit_parse_for_template): Get template-info ptr from decl node. | |
2284 | Store template parm vector in it. | |
2285 | (pending_template_expansions): List of templates that may need | |
2286 | expanding later for function or class data definitions. | |
2287 | ||
2288 | * cplus-method.c (build_overload_value): Ensure tree code is | |
2289 | PARM_DECL. Handle ENUMERAL_TYPE like INTEGER_TYPE. For DImode | |
2290 | values, compare against integer_zero_node instead of constructing | |
2291 | another one. Added support for POINTER_TYPEs. If not | |
2292 | REAL_IS_NOT_DOUBLE, support real values as well. | |
2293 | (build_overload_name): Accept TEMPLATE_*_PARM nodes, but generate | |
2294 | a string that should cause some assembler errors. | |
2295 | ||
2296 | * cplus-ptree.c (print_lang_decl): Retrieve template-info from its | |
2297 | new place. | |
2298 | (print_lang_type): For TEMPLATE_TYPE_PARM, print its (short) info | |
2299 | and return. For RECORD_TYPE, print use-template and interface-* | |
2300 | fields. | |
2301 | ||
2302 | * cplus-search.c (push_class_decls): Don't call | |
2303 | push_template_decls; the bindings of template parameter names | |
2304 | should be associated with the template body, not with the class. | |
2305 | Do overload the template name, however. | |
2306 | (pop_class_decls): Don't call pop_template_decls. | |
2307 | ||
2308 | * cplus-call.c (build_method_call): Changed to recognize | |
2309 | constructor of template class. | |
2310 | (build_overload_call): Add in number of template substitutions as | |
2311 | extra cost of a candidate function. For template decls, try | |
2312 | unification and instantiation before evaluating cost of result. | |
2313 | This too is incorrect in terms of the spec, but it's a starting | |
2314 | point for later work. | |
2315 | ||
2316 | * cplus-class.c (finish_struct): If structure is named, undo | |
2317 | overload of its name as a template. | |
2318 | (pushclass): If prev_class_type was a template class, pop it; the | |
2319 | decls are handled wrong and should be re-entered. | |
2320 | ||
2321 | * cplus-decl.c (poplevel): Assert that the current level is not | |
2322 | global. | |
2323 | (push_to_top_level): Include global scope when looking for old | |
2324 | values, because class bindings aren't listed in any other one | |
2325 | place. | |
2326 | (push_overloaded_decl_top_level): New function; like | |
2327 | push_overloaded_decl, but places decl in global binding level. | |
2328 | (dont_forget_overload): New function; removes decl from list of | |
2329 | overloads to be forgotten when scope is exited. | |
2330 | (start_decl): If template parms are used, construct a | |
2331 | TEMPLATE_DECL node referencing the current decl. For function | |
2332 | templates, call push_overloaded_decl; for class template members, | |
2333 | chain them into the class template definition. | |
2334 | (grokdeclarator): Don't try determining size of a | |
2335 | TEMPLATE_CONST_PARM node. For template class-data decls, | |
2336 | construct a phony VAR_DECL node and return it. | |
2337 | ||
2338 | * cplus-decl2.c (grokfield): For static class data, use | |
2339 | build_overload_name result, instead of copying class name, since | |
2340 | the latter could be a human-readable template class name. (If | |
2341 | NEW_OVERLOAD_SCHEME is not defined, do this only if the class has | |
2342 | a template-derived name.) | |
2343 | ||
2344 | * cplus-lex.c (pending_template_obstack): New variable; obstack | |
2345 | for pending-template stuff to be saved to end-of-file. | |
2346 | (init_lex): Initialize it. | |
2347 | (default_def): New variable; used for default definition of copy | |
2348 | constructors and destructors. | |
2349 | (do_pending_inlines): Figure out whether text is in an obstack, | |
2350 | and which one, for calling feed_input. Push template decls if | |
2351 | needed, as specified in pending_inline data. Pass current | |
2352 | pending_inlines pointer back in PRE_PARSED_FUNCTION_DECL instead | |
2353 | of next. | |
2354 | (process_next_inline): Ditto. Pop pending inline data if needed. | |
2355 | (store_pending_inline): New function. Decides which obstack to | |
2356 | store a pending definition on, and which list to chain it into. | |
2357 | (reinit_parse_for_method): Call it. | |
2358 | (reinit_parse_for_block): If character passed in is '=', look for | |
2359 | a semicolon to end the block; don't require a {} block. Don't pad | |
2360 | to 8 bytes on USG, since we aren't feeding input via stdio any | |
2361 | more. Also, use newlines instead of # directives for advancing | |
2362 | line number only a few lines. | |
2363 | (cons_up_default_function): Punt padding for USG stdio, since we | |
2364 | aren't using it any more. Use default_def for definition. Call | |
2365 | store_pending_inline to save it away. | |
2366 | (identifier_type): For TEMPLATE_DECL, DECL_RESULT field non-null | |
2367 | indicates a non-type template, so don't return PTYPENAME. | |
2368 | (yylex): If end-of-file and input isn't redirected, call | |
2369 | do_pending_expansions and maybe start yylex over. Don't check | |
2370 | TEMPLATE_EXPANSION_NAME_P; a proper name transformation system | |
2371 | will eliminate conflicts. Try for SCOPED_TYPENAME with PTYPENAME | |
2372 | too. | |
2373 | ||
2374 | Wed May 29 11:48:34 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2375 | ||
2376 | * cccp.c (do_include): Check that ->control_macro is non-zero. | |
2377 | ||
2378 | * gcc.c (process_command): Use `error' in last change. | |
2379 | ||
2380 | Wed May 29 11:10:12 1991 Tom Wood (wood at dg-rtp.dg.com) | |
2381 | ||
2382 | * m88k.md (movdi): Accept CONST_INT. | |
2383 | * out-m88k.c (output_load_const_dimode): Accept CONST_INT. | |
2384 | (output_call): Don't use #plt for jsr. | |
2385 | ||
2386 | Wed May 29 00:51:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2387 | ||
2388 | * cplus-type2.c (build_functional_cast): Give error if functional | |
2389 | cast is missing argument. | |
2390 | ||
2391 | * cplus-tree.h (interface_unknown): Add a declaration for this | |
2392 | variable. | |
2393 | ||
2394 | * cplus-type2.c (store_init_value): Normally initialized PIC data | |
2395 | must be laid into the text segment and then copied into the data | |
2396 | segment. But cecause of special things we do for ctors and dtors | |
2397 | (the only things that can reference such things), we can leave | |
2398 | vtables in initialized data space. | |
2399 | ||
2400 | * cplus-decl.c (finish_decl): Use #pragma interface knowledge if | |
2401 | available for processing initialized variables of type const. | |
2402 | ||
2403 | Tue May 28 18:39:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2404 | ||
2405 | * sched.c ({true,anti,output}_dependence): Correct MEM_IN_STRUCT_P | |
2406 | code; only avoid conflict if MEM_IN_STRUCT_P ref has varying address. | |
2407 | ||
2408 | * protoize.c (stat): Remove declaration of stat; it is defined | |
2409 | differently (no const in arg 1) on some machines. | |
2410 | ||
2411 | * combine.c (simplify_shift_const): Avoid infinite loops by quitting | |
2412 | when COUNT becomes zero; delete now-unnecessary tests on COUNT. | |
2413 | ||
2414 | * flow.c (last_mem_set): New variable. | |
2415 | (propagate_block): Initialize it. | |
2416 | Show calls can change memory. | |
2417 | (insn_dead_p): Remove unneeded arg STRICT_LOW_OK; don't treat | |
2418 | STRICT_LOW_PART differently than ZERO_EXTRACT. | |
2419 | All callers changed. | |
2420 | If insn stores into the same, nonvolatile, MEM as recorded in | |
2421 | last_mem_set, it is dead. | |
2422 | (mark_set_1): If writing into register mentioned in last_mem_set or | |
2423 | writing into memory, clear last_mem_set. | |
2424 | Record last MEM written. | |
2425 | (find_auto_inc): New function, from mark_used_regs. | |
2426 | Add support for pre-increment and pre-decrement. | |
2427 | (mark_used_regs, case MEM): Clear last_mem_set. | |
2428 | Call find_auto_inc; move code to there. | |
2429 | (mark_used_regs, case SET): Don't call recursively on MEM if it is | |
2430 | SET_DEST, instead call find_auto_inc ourselves. | |
2431 | ||
2432 | Tue May 28 17:29:52 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) | |
2433 | ||
2434 | * gnulib1.c (__fixsfsi, __cmpsf2, __extendsfdf2): Add declarations | |
2435 | for intify. | |
2436 | ||
2437 | * gcc.c (default_compilers): Accept `.cxx' as a C++ extension. | |
2438 | ||
2439 | Tue May 28 17:05:28 1991 Tom Wood (wood at dg-rtp.dg.com) | |
2440 | ||
2441 | * m88k.md (movstrsi): Pass original MEM expressions. | |
2442 | * out-m88k.c (expand_block_move, block_move_{sequence,no_loop,loop}): | |
2443 | Use original MEM expressions to set RTX_UNCHANGING_P, MEM_VOLATILE_P, | |
2444 | and MEM_IN_STRUCT_P. | |
2445 | ||
2446 | * out-m88k.c (emit_bcnd): Use bxx when optimizing so jump_optimize | |
2447 | will work on more cases. Change this back when jump_optimize uses | |
2448 | get_condition to find the values being compared. | |
2449 | ||
2450 | * m88k.md: Don't use operand0 or operand1. | |
2451 | ||
2452 | Tue May 28 16:00:56 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) | |
2453 | ||
2454 | * emit-rtl.c (try_split): Make sure `after' exists before checking | |
2455 | to see if it is a BARRIER. | |
2456 | ||
2457 | Tue May 28 15:08:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2458 | ||
2459 | * gcc.c (process_command): Warn if -x follows last input file. | |
2460 | ||
2461 | * cccp.c: Don't include file twice if a #ifndef would make it a no-op. | |
2462 | (struct file_name_list): New field, control_macro. | |
2463 | Initialize it where these structures are created. | |
2464 | (struct if_stack): Likewise. | |
2465 | (do_include): If file already known, check its control macro if any. | |
2466 | Don't include the file if the macro is now defined. | |
2467 | (do_xifdef): Detect case of successful #ifndef at start of file. | |
2468 | (condition_skip): Accept macro name as new arg. Record in if_stack. | |
2469 | (do_endif): Detect being effectively at end of file. | |
2470 | (record_control_macro): New function. Called from do_endif. | |
2471 | ||
2472 | * calls.c (store_one_arg): Set used after calling push_rounding. | |
2473 | ||
2474 | * sparc.md (floating move peepholes): Allow `r' for operand 2. | |
2475 | ||
2476 | * arm.md, tm-arm.h, out-arm.c, xm-arm.h: New files. | |
2477 | * configure (arm): New alternative. | |
2478 | ||
2479 | Tue May 28 11:53:21 1991 Michael Meissner (meissner at osf.org) | |
2480 | ||
2481 | * tm-decstatn.h (CPP_PREDEFINES): Add Ultrix 4.2 support. | |
2482 | ||
2483 | * tm-mips.h (cmp_type, branch_cmp, branch_type): Global variables | |
2484 | and type to record what type of comparison is being done. | |
2485 | (mips_print_operand_punct): New array to specify whether a | |
2486 | character is valid for print_operand as punctuation. | |
2487 | (set_nomacro, set_noat, set_noreorder): New variables to record | |
2488 | whether a .set nomacro, .set noat, or .set noreorder has been | |
2489 | done. | |
2490 | (dslots_{filled,total}_{load,jump}): New global variables to | |
2491 | remember how many delay slots exist and are filled for the -mstats | |
2492 | option. | |
2493 | (CC1_SPEC): Combine %{O:...} %{O*:...} cases. For -G32, pass -G | |
2494 | 32. Add dummy pattern for -save-temps to avoid error message. | |
2495 | (DBX_DEBUGGING_INFO): Define this all the time. | |
2496 | (SDB_ALLOW_FORWARD_REFERENCES): Define this for MIPS ECOFF support. | |
2497 | (SDB_ALLOW_UNKNOWN_REFERENCES): Define this for MIPS ECOFF support. | |
2498 | (TARGET_SWITCHES): Add -mstats to print interesting statistics. | |
2499 | Add -mmemcpy to force memcpy to be called. Add -mdebug[fghij]. | |
2500 | Add -mno- version of switches. | |
2501 | (DATA_ALIGNMENT): Align all char/short arrays/unions/structures, | |
2502 | rather than just char arrays. | |
2503 | (BYTE_LOADS_ZERO_EXTEND): Define this. | |
2504 | (CONST_OK_FOR_LETTER_P): 'N' returns true if power of 2. | |
2505 | (EXTRA_CONSTRAINT): Redefine 'Q' to be 1 word memory references, | |
2506 | 'R' to be multiword memory references. | |
2507 | (struct frame_info): Add initialized field. | |
2508 | (current_frame_info): New global structure to hold frame info. | |
2509 | (INITIAL_FRAME_POINTER_OFFSET): Use current_frame_info. | |
2510 | (INIT_CUMULATIVE_ARGS): Pass LIBNAME to init_cumulative_args. | |
2511 | (DELAY_SLOTS_FOR_EPILOGUE): Define this to fill j $r31 delay slot. | |
2512 | (ELIGIBLE_FOR_EPILOGUE_DELAY): Ditto. | |
2513 | (ENCODE_SEGMENT_INFO): Don't flag references to 0-sized arrays as | |
2514 | being in the small data segment. | |
2515 | (CONST_COSTS): Reword to be more accurate. | |
2516 | (RTX_COSTS): Define this. | |
2517 | (ADDRESS_COST): Define this. | |
2518 | (CLASS_CMP_OP, CLASS_EQUALITY_OP, CLASS_UNS_CMP_OP): New bits for | |
2519 | rtx_classify to classify various comparison operators. | |
2520 | (FINAL_PRESCAN_INSN): Define this to collect info for -mstats. | |
2521 | (NOTICE_UPDATE_CC): Only do CC_STATUS_INIT if the insn is a | |
2522 | comparison. | |
2523 | (EXTRA_CC_MODES): Define new modes CC_EQmode, CC_FPmode, CC_0mode. | |
2524 | (EXTRA_CC_NAMES): Define this. | |
2525 | (SELECT_CC_MODE): Define this. | |
2526 | (PRINT_OPERAND_PUNCT_VALID_P): Redefine this to index into | |
2527 | mips_print_operand_punct. | |
2528 | (DBR_OUTPUT_SEQEND): Reset .set reorder, .set macro as appropriate. | |
2529 | ||
2530 | * out-mips.c (branch_cmp, branch_type): New Global variables | |
2531 | and type to record what type of comparison is being done. | |
2532 | (mips_print_operand_punct): New array to specify whether a | |
2533 | character is valid for print_operand as punctuation. | |
2534 | (set_nomacro, set_noat, set_noreorder): New variables to record | |
2535 | whether a .set nomacro, .set noat, or .set noreorder has been | |
2536 | done. | |
2537 | (dslots_{filled,total}_{load,jump}): New global variables to | |
2538 | remember how many delay slots exist and are filled for the -mstats | |
2539 | option. | |
2540 | (reg_or_0_operand): Rewrite to add support for CONST_DOUBLE. | |
2541 | (mips_const_double_ok): Allow normal FP constants (not Infinity, | |
2542 | Nan, etc) to be used as operands when using the MIPS assembler. | |
2543 | (simple_memory_operand): Combine GP memory references from | |
2544 | gp_memory_operand. Delete gp_memory_operand. | |
2545 | (equality_op): Return true if EQ or NE. | |
2546 | (cmp_op): Return true if comparison operator. | |
2547 | (uns_cmp_op): Return true if unsigned comparison. | |
2548 | (mips_move_1word): New name for mips_move_instructions. Also, loads | |
2549 | of HImode/QImode use unsigned loads, rather than signed loads, so | |
2550 | that BYTE_LOADS_ZERO_EXTEND can be defined. Use %z to get name of | |
2551 | $0, instead of hardwiring it. Explicitly use lui where appropriate. | |
2552 | (mips_move_2words): New name for mips_move_2words_instructions. Use | |
2553 | %z to get name of $0, instead of hardwiring it. | |
2554 | (mips_address_cost): New function to define ADDRESS_COST macro. | |
2555 | (gen_conditional_branch): New function to generate all of the tests | |
2556 | and branches. | |
2557 | (block_move_sequence): New function to generate straight line code | |
2558 | for block moves. | |
2559 | (block_move_call): New function to set up a call to memcpy/bcopy as | |
2560 | appropriate for block moves. | |
2561 | (expand_block_move): New function which is called from the movstrsi | |
2562 | define_expand, to set up block moves. At present, unless -mmemcpy | |
2563 | is used, moves of less than 32 bytes, get straight line code, all | |
2564 | others get a call. | |
2565 | (init_cumulative_args): Take libname as third argument. | |
2566 | (function_arg_partial_nregs): Fix bug, to not return a negative | |
2567 | number when passing small structs in registers. | |
2568 | (compare_collect, compare_restore): Remove these functions, since | |
2569 | they are no longer called. | |
2570 | (override_options): Initialize mips_rtx_classify for all of the | |
2571 | comparison operator bits. Initialize mips_print_operand_punct to | |
2572 | return TRUE for each of the valid punctuation characters used in | |
2573 | print_operand. | |
2574 | (print_operand): %X now prints 32 bit ints in hex format. %z now | |
2575 | prints $0 if the operand is the constant integer 0. %(, %) now turn | |
2576 | on/off both .set noreorder/.set nomacro. %<, %> turns on/off .set | |
2577 | nomacro. %* turns on both .set noreorder and .set nomacro if | |
2578 | filling delay slots. %! turns on .set nomacro if filling delay | |
2579 | slots. | |
2580 | (compute_frame_size, save_restore, function_prologue, | |
2581 | function_epilogue): Change the calling sequence of | |
2582 | compute_frame_size to save everything in a global structure, which | |
2583 | has an initialized field to indicate that compute_frame_size needs | |
2584 | to be called. | |
2585 | (function_prologue): INIT_CUMULATIVE_ARGS now takes 3 args. | |
2586 | (function_epilogue): If current_function_epilogue_delay_list is | |
2587 | non-null, use that to fill the final delay slot. Also, make sure | |
2588 | the various asm .set's are reset properly. Write interesting | |
2589 | statistics out to stderr if -mstats. | |
2590 | (mips_epilogue_delay_slots): New function to return # of delay slots | |
2591 | the epilogue needs. | |
2592 | (null_epilogue): Return true if the function has a null epilogue, | |
2593 | which allows the optimizer to omit jumps to the final j $31 if no | |
2594 | stack was created. | |
2595 | ||
2596 | * mips.md (type attribute): Redo how the type attributes work, and | |
2597 | change some names. | |
2598 | (mode attribute): New attribute to describe the insn's result mode. | |
2599 | (length attribute): New attribute to give insn length in words. | |
2600 | (dslot attribute): New attribute to return whether an insn needs a | |
2601 | delay slot. | |
2602 | (define_delay): Use dslot and length attributes to determine if a | |
2603 | delay slot is needed. | |
2604 | (define_function_unit): Define all of the function units now. | |
2605 | (all patterns): Provide new attribute definitions. | |
2606 | (all memory reference patterns): modify alternatives to use 'Q' for | |
2607 | 1 word instructions, 'R' for multiword instructions. | |
2608 | (unnamed patterns): Provide names for all patterns, so that -dp will | |
2609 | pinpoint exactly which pattern is used. | |
2610 | (*divsi3, *divmodsi4, *modsi3): If optimizing and not -mdebugc, use | |
2611 | the *divmodsi4 patterns, so that the opimizer will only use 1 divide | |
2612 | if doing a = b / c; d = b % c; This replaces the peepholes, which | |
2613 | previously were used for this. If not optimizing, use the normal | |
2614 | div/mod patterns. | |
2615 | (zero_extendqihi2, extendqihi2): Allow zero/sign extending from | |
2616 | memory. | |
2617 | (fixuns_trunc{df,sf}si2): Use generator patterns to generate | |
2618 | appropriate branches. | |
2619 | (movsi_ulw, movsi_usw): New patterns to generate the appropriate | |
2620 | unaligned load/store for use in the block move expansion. | |
2621 | (mov*): Provide all possible combinations of moves. | |
2622 | (movstrsi): New pattern to generate block moves. | |
2623 | (negsi2): Change to a define_expand, which uses minus. | |
2624 | (one_cmpsli2): Change to a define_expand, which use the nor pattern. | |
2625 | (cmp*, b*): Redo comparison/branch completely to save things in | |
2626 | global variables, call the common C code to expand the branch, and | |
2627 | provide match_operators to do the actual branch. | |
2628 | (s*): Provide for the ability to set a register with an integer | |
2629 | comparison, without using a branch. | |
2630 | ||
2631 | * make-decrose (AUX_OUTPUT2): Delete macro, since aux-output.c is | |
2632 | always compiled separately now. | |
2633 | (LANGUAGES): Suppress G++, Objc temporarily. | |
2634 | (cse.o): Rebuild cse if the config files change, to get new cost | |
2635 | functions, no longer rebuild calls/function since the FUNCTION_ARG | |
2636 | macros just call functions in out-mips.c. | |
2637 | (SRCS): Change $(AUX_OUTPUT2_SRC) to aux-output.c. | |
2638 | ||
2639 | * make-mips (AUX_OUTPUT2): Delete macro, since aux-output.c is | |
2640 | always compiler separately now. | |
2641 | (CONFIG2_H): Add rules to rebuild selected modules when the | |
2642 | tm-mips.h file changes. | |
2643 | (mips-tfile): Rules to build mips-tfile. | |
2644 | (mips-tdump): Rules to build mips-tdump. | |
2645 | (LANGUAGES): Suppress G++, Objc temporarily, build mips-tfile. | |
2646 | ||
2647 | * mips-tfile.c (whole file): New file to put the MIPS specific debug | |
2648 | information into the object file, after the assembler has been run. | |
2649 | This is needed because the MIPS assembler provides no method of | |
2650 | setting up the debug information for local variables. This is | |
2651 | enabled by the make-mips Makefile modifier. | |
2652 | ||
2653 | * mips-tdump.c (whole file): New file to dump the contents of the | |
2654 | MIPS ECOFF symbol table in a symbolic format. This is not currently | |
2655 | built by default, but make-mips contains rules to build it. | |
2656 | ||
2657 | * tm-decrose.h (MD_EXEC_PREFIX): Change to use the test prefix | |
2658 | /usr/ccs/gcc-2.00/gcc- instead of the release prefix /usr/ccs/gcc. | |
2659 | (WCHAR_TYPE_SIZE): Define as 16. | |
2660 | (WCHAR_UNSIGNED): Define as 1. | |
2661 | (DBX_DEBUGGING_INFO): Define moved to tm-mips.h. | |
2662 | ||
2663 | ||
2664 | Tue May 28 06:26:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2665 | ||
2666 | * expmed.c (store_bit_field, extract_bit_field): If -fforce-mem | |
2667 | specified, copy OP0 into register (and back again, for store). | |
2668 | ||
2669 | * sched.c (memrefs_conflict_p, {true,anti,output}_dependence): Add | |
2670 | missing parens. | |
2671 | ||
2672 | * reload.c (find_reloads): Turn usage of reg_preferred_class back on | |
2673 | now that the code has been refined. | |
2674 | ||
2675 | Mon May 27 12:41:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2676 | ||
2677 | * c-typeck.c (build_binary_op_nodefault): Set converted for shifts, | |
2678 | so op1 is not converted to the result type. | |
2679 | Clean up some warning messages. | |
2680 | ||
2681 | * expr.c (expand_expr): Use temp stack slot for BLKmode SAVE_EXPR. | |
2682 | ||
2683 | * Makefile.in (alloca.o): Use new vars ALLOCA_FLAGS and ALLOCA_FINISH. | |
2684 | ||
2685 | Mon May 27 05:42:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2686 | ||
2687 | * sched.c ({read,true,anti,output}_dependence): Remove unused arg INSN. | |
2688 | All callers changed. | |
2689 | ||
2690 | * combine.c (subst, case PLUS): Fix typo in (plus (plus X C) Y) case. | |
2691 | (subst, case MULT): Distribute MULT over PLUS to try to simplify it. | |
2692 | ||
2693 | Mon May 27 05:15:16 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2694 | ||
2695 | * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a SYMBOL_REF | |
2696 | sum if FLAG_PIC is not 1. This forces the -fPIC to take effect, | |
2697 | even when the optimizer knows how to stitch together HIGH and LO_SUM | |
2698 | combinations. | |
2699 | (PRINT_OPERAND): Move body to out-sparc.c. | |
2700 | * out-sparc.c (print_operand): New function, implementing actions of | |
2701 | old PRINT_OPERAND macro. Comments written for all cases. | |
2702 | (reg_unused_after): Don't do anything special with JUMP_INSNs. Only | |
2703 | do something special with CALL_INSN if REGNO is a call-used reg. | |
2704 | ||
2705 | * cplus-type2.c (store_init_value): Back out 23 Feb change, which | |
2706 | was completely backward. | |
2707 | ||
2708 | * dbxout.c, cplus-dbxout.c (dbxout_parms): Also test that TREE_TYPE | |
2709 | (PARMS) is not ERROR_MARK_NODE. | |
2710 | ||
2711 | * cplus-init.c (build_up_reference): Check FLAGS parameter to see if | |
2712 | we can accept building a reference to a constructor-generated | |
2713 | temporary. | |
2714 | (various places): Change calls to `build_up_reference' that used to | |
2715 | use an explicit `1' to use LOOKUP_PROTECT instead. | |
2716 | (build_offset_ref): Use IDENTIFIER_TYPE_VALUE macro to the the type | |
2717 | associated with CNAME. | |
2718 | ||
2719 | * cplus-class.c (build_vbase_path): Fix 11 May change by only | |
2720 | changing TREE_TYPE (EXPR) if NULL_EXPR. We might build different | |
2721 | vbase paths for the same expr in multiple inheritance | |
2722 | initialization. | |
2723 | ||
2724 | * Makefile.in: Change sed script so it matches '^# ' instead of just | |
2725 | '^#'. This allows processing of md files with #if/#endif controls | |
2726 | in their C function bodies. | |
2727 | ||
2728 | * cplus-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS on RVAL. | |
2729 | ||
2730 | * stmt.c (warn_if_unused_value): Don't warn about EXIT_EXPRs. | |
2731 | (expand_decl_cleanup): Add missing type declarations for parameters. | |
2732 | ||
2733 | * cplus-call.c, cplus-class.c, cplus-dbxout.c, cplus-edsel.c: Include | |
2734 | stdio.h after cplus-tree.h since the latter references printf. | |
2735 | * cplus-search.c, cplus-xref.c: Likewise. | |
2736 | * cplus-class.c (prev_class_type): Not static; defined in cplus-tree.h. | |
2737 | * cplus-decl.c (builtin_function, auto_function): Don't put & in | |
2738 | front of function name. | |
2739 | * cplus-typeck.c (comptypes,comp_target_types): Likewise. | |
2740 | * cplus-search.c (report_ambiguous_mi_virtuals): Likewise, for arrays. | |
2741 | ||
2742 | Sun May 26 22:47:35 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2743 | ||
2744 | * cplus-decl.c (make_temporary_for_reference): New function. Split | |
2745 | out code from `grok_reference_init' so we could call it in two | |
2746 | places: where it was called before, and when initializing a | |
2747 | reference through a constructor for a temporary. | |
2748 | (grokdeclarator): Give error message instead of aborting if user | |
2749 | gave method qualifiers for function decl. | |
2750 | (start_function): Switch to temporary obstack before computing | |
2751 | destructor and constructor labels, and before building the | |
2752 | function's RESULT_DECL. | |
2753 | ||
2754 | * cplus-decl.c (store_parm_decls): Make a cleanup that controls the | |
2755 | action of the garbage collector. This ensures that the call to | |
2756 | __gc_pop doesn't get skipped in the function issues a return stmt. | |
2757 | * cplus-gc.c (expand_gc_prologue_and_epilogue): Work with new | |
2758 | cleanup model. | |
2759 | ||
2760 | * cplus-gc.c (build_i_desc): Figure out whether the i_desc should | |
2761 | constitute a defn of its type or not. | |
2762 | ||
2763 | * cplus-typeck.c (c_expand_return): Look through TARGET_EXPR as well | |
2764 | as NEW_EXPR for returning addresses of local variables. | |
2765 | ||
2766 | * reload.c (find_reloads): Intialized `goal_alternative_swapped' | |
2767 | where `swapped' is initialized to zero. | |
2768 | ||
2769 | Sun May 26 21:29:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2770 | ||
2771 | * recog.c (const_double_operand): Fix typo. | |
2772 | * reload1.c (choose_reload_regs): Fix typo--swap #endif with }. | |
2773 | ||
2774 | * loop.c (init_loop): Multiply copy_cost by 2. | |
2775 | (general_induction_var): Use rtx_cost directly. | |
2776 | (expr_benefit): Function deleted. | |
2777 | ||
2778 | * m68k.md (andsi3): Generate bclr if appropriate. | |
2779 | ||
2780 | * cccp.c (do_undef): Just a warning, if deleting something unusual. | |
2781 | ||
2782 | Sun May 26 18:51:33 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
2783 | ||
2784 | * expr.c (force_operand): When calling recursively, use | |
2785 | a temporary to force evaluation of calls. The C language | |
2786 | allows `f (g (x), g (y))' to be evaluated in different orders | |
2787 | on different hosts, which could lead to different code | |
2788 | generation for different hosts. | |
2789 | ||
2790 | * recog.c (const_double_operand): New function for recognizing | |
2791 | CONST_DOUBLE rtx's. | |
2792 | ||
2793 | * expmed.c (expand_mult_add): Add new parameter TARGET which is a | |
2794 | suggestion of where to store the result; pass it to expand_expr. | |
2795 | * loop.c (emit_iv_add_mult): Pass REG to expand_mult_add call as | |
2796 | target for the result. | |
2797 | ||
2798 | * gmicro.md, old-sparc.md, pyr.md: Delete obsolete UMULT patterns. | |
2799 | ||
2800 | * expmed.c (expand_mult): Convert DImode constants to a CONST_INT | |
2801 | if possible, so that multiplies by these can be optimized by the | |
2802 | existing code. | |
2803 | ||
2804 | Sun May 26 00:59:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2805 | ||
2806 | * gcc.c (process_command): -save-temps is always valid. | |
2807 | ||
2808 | * varasm.c (output_constructor): Don't crash if val == 0. | |
2809 | ||
2810 | * cse.c (refers_to_mem_p): Handle constant addresses. | |
2811 | ||
2812 | * cccp.c (main): Don't store thru last_include if null. | |
2813 | ||
2814 | Sat May 25 06:33:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2815 | ||
2816 | * reload.c (find_reloads): Don't assume we have at least two operands | |
2817 | when we check for a simple copy. | |
2818 | ||
2819 | * sched.c (update_reg_known_value): Deleted. | |
2820 | (init_alias_analysis): If have REG_EQUIV note, can always use NOTE's | |
2821 | value irrespective of number of sets. | |
2822 | Take known value from note, not SET_SRC. | |
2823 | (memrefs_conflict_p): Remove gotos. | |
2824 | ASHIFT can't occur in an address. | |
2825 | (true_dependence, anti_dependence, output_dependence): Take into | |
2826 | account the fact that a MEM_IN_STRUCT_P reference cannot conflict | |
2827 | with a non-MEM_IN_STRUCT_P reference at a fixed address. | |
2828 | ||
2829 | Fri May 24 11:34:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2830 | ||
2831 | * Makefile.in (cplus-tab.c): Put back -d option. | |
2832 | ||
2833 | Fri May 24 06:46:07 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2834 | ||
2835 | * rtl.c (rtx_alloc): Ensure we keep the obstack aligned. | |
2836 | ||
2837 | Fri May 24 00:17:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2838 | ||
2839 | * reload1.c (choose_reload_regs): Try with inheritance, then without. | |
2840 | #if 0 the code to avoid inheritance in certain cases. | |
2841 | ||
2842 | Fri May 24 00:13:40 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
2843 | ||
2844 | * out-i386.c (split_di): Check for CONST_DOUBLE before CONSTANT_P. | |
2845 | ||
2846 | * tm-i386.h (LIMIT_RELOAD_CLASS): new macro. | |
2847 | (PREFERRED_RELOAD_CLASS): a CONST_DOUBLE can appear in narrower | |
2848 | classes than GENERAL_REGS. | |
2849 | ||
2850 | * reload.c (push_reload): Limit reload class even if the SUBREG has | |
2851 | already been stripped. | |
2852 | ||
2853 | Thu May 23 11:08:21 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
2854 | ||
2855 | * sched.c (schedule_insns): Don't schedule a block if the only insn is | |
2856 | a CODE_LABEL. | |
2857 | ||
2858 | Thu May 23 07:54:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2859 | ||
2860 | * reload1.c (choose_reload_regs): Process reload in first pass if | |
2861 | a subsequent reload requires fewer registers. | |
2862 | Change criteria for processing from being a strict superset to | |
2863 | having an intersecting, non-equal class. | |
2864 | Ignore optional and turned-off reloads in loop to see what is forced | |
2865 | to be allocated in first pass. | |
2866 | ||
2867 | * toplev.c (compile_file): Fix typo in length of string to allocate | |
2868 | for sched2 dump's name. | |
2869 | ||
2870 | * jump.c (find_cross_jump): Don't crash if single_set returns 0. | |
2871 | ||
2872 | * recog.c (general_operand): A SUBREG of a constant is never valid. | |
2873 | ||
2874 | * local-alloc.c (qty_compare, qty_compare_1): Make priority function | |
2875 | the same as in global-alloc: quantities with shorter lives are | |
2876 | allocated first. This can speed up some code by a factor of three. | |
2877 | ||
2878 | Wed May 22 17:40:49 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2879 | ||
2880 | * reload1.c (emit_reload_insns): Fix some minor bugs in making | |
2881 | REG_DEAD notes and recording insn that does store; code sometimes | |
2882 | assumed that each call to gen_move_insn produced at most one insn. | |
2883 | ||
2884 | Wed May 22 16:51:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2885 | ||
2886 | * reload.c (push_reload): Support LIMIT_RELOAD_CLASS. | |
2887 | ||
2888 | Wed May 22 14:14:51 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) | |
2889 | ||
2890 | * jump.c (jump_optimize): Update the three simplifications that | |
2891 | start with the "if (...) x = 1;" case. Add comments explaining how | |
2892 | to make them more machine independent, and comments explaining how | |
2893 | they might fail in the future. Ifdef out the second case, and add | |
2894 | code explaining why it does not work. | |
2895 | ||
2896 | * rtl.h: Put definition of FUNCTION_FLAGS_USES_CONST_POOL here. | |
2897 | * integrate.c: Remove definition of it here. | |
2898 | ||
2899 | * integrate.h: New fields in struct inline_remap, min_insnno and | |
2900 | max_insnno, which indicate the range of insns covered by insn_map. | |
2901 | * integrate.c (expand_inline_function): Set min_insnno and max_insnno. | |
2902 | ||
2903 | Wed May 22 12:31:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2904 | ||
2905 | * tm-vaxv.h (ASM_OUTPUT_LOCAL): Use data_section. | |
2906 | ||
2907 | * protoize.c (fancy_abort): Define it. | |
2908 | * objc-parse.y (yyprint, set_yydebug): New functions. | |
2909 | ||
2910 | * tree.h (gettags, get_permanent_types, get_temporary_types): | |
2911 | Declare them. | |
2912 | ||
2913 | * Makefile.in (protoize.o, unprotoize.o): | |
2914 | Use the standard flags and include dirs. Don't use -Wall. | |
2915 | * protoize.c (abort): Declaration deleted. | |
2916 | ||
2917 | * cccp.c (main): Ensure `next' field in directory list is initialized. | |
2918 | ||
2919 | Wed May 22 09:27:49 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
2920 | ||
2921 | * expmed.c (synth_mult): Return cost of -1 if shift is too | |
2922 | expensive. | |
2923 | ||
2924 | Wed May 22 07:53:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2925 | ||
2926 | * out-sparc.c (output_move_double): More SImode->Pmode fixes. | |
2927 | ||
2928 | Wed May 22 02:43:02 1991 Micheal Tiemann (tiemann at wookumz.gnu.ai.mit.edu) | |
2929 | ||
2930 | * Makefile.in, emit-rtl.c, explow.c, final.c, global-alloc.c, | |
2931 | gnulib2.c, hard-reg-set.h, regclass.c, reload1.c, cccp.c: Fix typos | |
2932 | and indentation. | |
2933 | ||
2934 | Wed May 22 00:14:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2935 | ||
2936 | * combine.c (try_combine): Add to last change; handle subreg | |
2937 | in src as well as in dest of i3. | |
2938 | ||
2939 | Tue May 21 22:32:08 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
2940 | ||
2941 | * m68k.md (dbra): Rewrite pattern so it reflects simplifications that | |
2942 | combine will make. | |
2943 | ||
2944 | Tue May 21 10:44:05 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
2945 | ||
2946 | * loop.c (strength_reduce): When a loop-vtop note is encountered, | |
2947 | reset `not_every_iteration'. | |
2948 | ||
2949 | Tue May 21 00:17:31 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2950 | ||
2951 | * c-decl.c (init_decl_processing): Always use long type for size_t. | |
2952 | ||
2953 | * varasm.c (assemble_variable): Use ASM_DECLARE_OBJECT_NAME. | |
2954 | ||
2955 | * protoize.c: Include config.h. | |
2956 | (chmod, kill): Declarations deleted. | |
2957 | They aren't needed, and can conflict with system headers. | |
2958 | (wait): BSD declaration deleted. | |
2959 | (save_def_or_dec): Add missing fprintf arg. | |
2960 | ||
2961 | * tm-next.h (EXTRA_FORMAT_FUNCTIONS): Fix typo. | |
2962 | ||
2963 | * protoize.c: Use USG and VMS as most files do. | |
2964 | Don't expect BSD to be necessary defined outside this file. | |
2965 | Define getwd using getcwd, not vice-versa, to be like dbxout.c. | |
2966 | * cccp.c, SYSCALLS.c: Use USG and VMS as most files do. | |
2967 | Don't expect BSD to be necessary defined outside this file. | |
2968 | ||
2969 | Mon May 20 16:54:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
2970 | ||
2971 | * tm-i386.h, tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_BYTE_OP): | |
2972 | Renamed from ASM_BYTE. | |
2973 | * varasm.c (ASM_BYTE_OP): Likewise. | |
2974 | ||
2975 | * c-decl.c, cplus-class.c (finish_struct): Typo: | |
2976 | Had PCC_BIT_FIELD_MATTERS which is now PCC_BITFIELD_TYPE_MATTERS. | |
2977 | ||
2978 | * gcc.c (handle_braces): Don't deref input_suffix if null. | |
2979 | ||
2980 | Mon May 20 15:19:27 1991 Michael I Bushnell (mib at geech.gnu.ai.mit.edu) | |
2981 | ||
2982 | * cccp.c (pcfinclude): STRINGDEF struct is now longword aligned. | |
2983 | ||
2984 | Mon May 20 14:26:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
2985 | ||
2986 | * sparc.md: Remove all arithmetic, logical, and shift patterns for | |
2987 | sub-SImode operands. Also fix some DImode patterns. | |
2988 | ||
2989 | * out-sparc.c (emit_move_sequence): Simplified considerably. | |
2990 | ||
2991 | * rtl.c (rtx_alloc): Inline-code an optimized obstack_alloc. | |
2992 | ||
2993 | * cplus-lex.c (make_{pointer,reference}_declaration): Call | |
2994 | `build_parse_node' instead of `build1' so memory can be freed. | |
2995 | ||
2996 | * cplus-parse.y: Remove unneeded epsilon rules to produce an average | |
2997 | 15% reduction in the number of reductions performed. | |
2998 | ||
2999 | * cplus-parse.y (RETURN_INIT): Use new interface to speed up | |
3000 | grammar. | |
3001 | * cplus-decl.c (store_return_init): Use new interface. | |
3002 | ||
3003 | Mon May 20 11:16:34 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
3004 | ||
3005 | * sched.c (schedule_block): A register which dies in a CALL_INSN | |
3006 | does not cross calls. A single insn block must be scheduled, to | |
3007 | ensure that register lifetime info is corrected updated. | |
3008 | ||
3009 | Mon May 20 06:50:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3010 | ||
3011 | * combine.c (try_combine): Don't combine when I1 and I2 both feed | |
3012 | into I3 and I1 uses the register set in I2. | |
3013 | ||
3014 | * reload.c (find_reloads): Prefer pseudos over other things we may | |
3015 | reload. | |
3016 | ||
3017 | Mon May 20 02:02:15 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3018 | ||
3019 | * combine.c (try_combine): Test MODES_TIEABLE_P when i3 src is subreg. | |
3020 | ||
3021 | * m68k.md (trunc*): Don't set cc if use wider insn. | |
3022 | ||
3023 | Sun May 19 14:45:46 1991 Ron Guilmette (rfg at ncd.com) | |
3024 | ||
3025 | * Makefile.in (clean): Delete stage1...stage4. | |
3026 | (realclean): Delete cexp.output. | |
3027 | ||
3028 | * fixincludes: Handle BSD43__IO* and BSD43_CTRL like IO* and CTRL. | |
3029 | ||
3030 | Sun May 19 15:00:05 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3031 | ||
3032 | * reload1.c (count_possible_groups): New function. | |
3033 | (reload): Call it twice. This checks for possible groups | |
3034 | after maybe spilling some single regs. | |
3035 | ||
3036 | * configure (magnum, m3230): Aliases for mips/mips. | |
3037 | ||
3038 | * fixincludes (machine/cpu.h): | |
3039 | Create in proper dir. Fix mips/cpu.h too. | |
3040 | ||
3041 | * reload.c (find_reloads): Turn off usage of reg_preferred_class. | |
3042 | ||
3043 | Sun May 19 09:51:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3044 | ||
3045 | * flow.c (mark_used_regs): Continue putting REG_DEAD notes on | |
3046 | fixed registers. | |
3047 | ||
3048 | * regclass.c (reg_class_record): Don't count classes in which objects | |
3049 | won't fit. | |
3050 | ||
3051 | * reload.c (find_reloads): Pre-compute preferred classes for each | |
3052 | operand; if operand 1 is copied to operand 0, merge the classes. | |
3053 | REJECT is now only 1/3 as costly as LOSERS; ? adds 3 to REJECT so | |
3054 | that it's semantics don't change. | |
3055 | ||
3056 | * expr.c (compare_from_rtx): Do EQ and NE comparisons unsigned since | |
3057 | they are usually cheaper and will cse with comparisons against zero | |
3058 | which are already unsigned. | |
3059 | ||
3060 | * reload1.c (choose_reload_regs): Don't try to access reload_out | |
3061 | for disabled reload (reload_strict_low may not have been cleared). | |
3062 | ||
3063 | * reload1.c (choose_reload_regs): Don't let optional reloads inherit | |
3064 | spill regs until all non-optional reloads have been allocated spill | |
3065 | regs. | |
3066 | We can use find_equiv_reg even if must_reuse, we just can't get a | |
3067 | spill reg that way. | |
3068 | ||
3069 | * expr.c (do_tablejump): When using LABEL_REF in arithmetic, make it | |
3070 | in Pmode instead of VOIDmode. | |
3071 | ||
3072 | * function.c (fixup_var_refs_1): Don't try to make paradoxical | |
3073 | memory SUBREGs; instead keep SUBREG_REG a pseudo and copy between | |
3074 | memory and the pseudo. | |
3075 | (fixup_memory_subreg): Abort if we try making paradoxical SUBREGs. | |
3076 | ||
3077 | * reorg.c (redundant_insn_p): Insns we pass may reference resources | |
3078 | set by INSN; it is sufficient that they not set resources in INSN. | |
3079 | ||
3080 | Sun May 19 08:06:17 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3081 | ||
3082 | * tm-sparc.h (STRUCT_VALUE): Change SImode to Pmode here, and in | |
3083 | other places. | |
3084 | (FIRST_PARM_OFFSET): Change 4 to UNITS_PER_WORD here, and in other | |
3085 | places. | |
3086 | (ROUND_ADVANCE): New macro to compute how far to advance the arg | |
3087 | pointer for a give parameter. | |
3088 | (FUNCTION_ARG): Use PARM_BOUNDARY instead of 32. | |
3089 | (EXTRA_CONSTRAINT): Don't depend on `reload_completed'. | |
3090 | * sparc.md (various places): Change many DImode predicates from | |
3091 | `general_operand' to `register_operand'. | |
3092 | ||
3093 | * jump.c (find_cross_jump): Fixed 18 May change to use | |
3094 | `validate_change' to make sure we get valid, initialized values | |
3095 | regardless of which path we choose. | |
3096 | ||
3097 | Sat May 18 15:07:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3098 | ||
3099 | * cccp.c: Rename FATAL_EXIT_CODE to FAILURE_EXIT_CODE. | |
3100 | ||
3101 | * gnulib1.c: Rename SFVALUE to FLOAT_VALUE_TYPE. | |
3102 | (union flt_or_value): New type. | |
3103 | (*): Use that instead of flt_or_int in most places. | |
3104 | Delete some variables `intify' that aren't needed. | |
3105 | * tm-i386.h: Rename SFVALUE to FLOAT_VALUE_TYPE. | |
3106 | ||
3107 | * stor-layout.c (layout_record): BITFIELD_NBYTES_LIMITED now 1 or 0. | |
3108 | ||
3109 | * rtl.h (struct rtx_def): Drop SHORT_ENUM_BUG; keep ONLY_INT_FIELDS. | |
3110 | ||
3111 | * loop.c (add_cost, copy_cost): | |
3112 | Variables replace old macros *_BENEFIT and COPY_PENALTY. | |
3113 | (init_loop): New function to set the variables. | |
3114 | (expr_benefit): Use rtx_cost. | |
3115 | * toplev.c (compile_file): Call init_loop. | |
3116 | * cse.c (rtx_cost): Treat mult by 2**n as a shift by default. | |
3117 | ||
3118 | * toplev.c (output_file_directive): | |
3119 | Typo in ASM_OUTPUT_MAIN_SOURCE_FILENAME. | |
3120 | ||
3121 | * gnulib2.c [L_trampoline]: Rename function to __trampoline. | |
3122 | Always compile it even if empty. Make it global. | |
3123 | ||
3124 | Sat May 18 14:11:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3125 | ||
3126 | * reload.c (find_reloads): Remove unnecessary test when increasing | |
3127 | cost of alternative due to non-preferred register class. | |
3128 | ||
3129 | * reload1.c (choose_reload_regs): Fix typo. | |
3130 | ||
3131 | * tm-rs6000.h: Add hard registers for the 8 CR fields; add classes | |
3132 | CR0_REGS and CR_REGS. | |
3133 | Don't use CC0; add CCUNSmode and CCFPmode. | |
3134 | (FIXED_REGISTERS): r31 (fp) is no longer fixed. | |
3135 | (REG_CLASS_FROM_LETTER): Remove 'd' for GENERAL_REGS; 'r' already | |
3136 | means this. | |
3137 | (CONST_DOUBLE_OK_FOR_LETTER): If we can move a constant in two insns | |
3138 | for DF or one insn for SF, let it match 'G'. | |
3139 | (SECONDARY_RELOAD_CLASS): Define this new macro. | |
3140 | (FUNCTION_ARG): Fix typo in testing nargs_prototype. | |
3141 | (LEGITIMATE_CONSTANT_P): Always return 1. | |
3142 | (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Do not define. | |
3143 | * rs6000.md: Don't use CC0; instead use a pseudo which will be assigned | |
3144 | to CR_REGS or CR0_REGS. Make variants of arithmetic insns that | |
3145 | set only the condition code and that set both the condition code | |
3146 | and a normal result. | |
3147 | Delete "cc" attribute and add "type" attribute. | |
3148 | Define delays for cc-setting insns and for loads. | |
3149 | Replace `d' constraint with `r'. | |
3150 | Delete patterns for HImode and QImode arithmetic operations. | |
3151 | Handle putting "easy" DFmode or SFmode constant into a register. | |
3152 | Rework compare and branches; add scc insns. | |
3153 | Fix up decrement-and-branch insns, but they still won't be used yet. | |
3154 | (call insns): Use pseudo for "lr" in indirect calls. | |
3155 | (movdf, movsf): Explictly handle need to use memory to copy between | |
3156 | general and FP registers. | |
3157 | * out-rs6000.c (next_insn_tests_no_unsigned, unsigned_comparisons_p): | |
3158 | Deleted. | |
3159 | (update_cc): Likewise. | |
3160 | (gen_reg_operand): Tighen up a bit. | |
3161 | (cc_reg_operand, reg_or_u_short_operand, easy_fp_constant): New fns. | |
3162 | (fp_reg_or_mem_operand, mem_or_easy_const_operand): Likewise. | |
3163 | (call_operand): Accept pseudo register. | |
3164 | (branch_comparison_operator, scc_comparison_operator): New functions. | |
3165 | (secondary_reload_class, ccr_bit, must_save_cr): Likewise. | |
3166 | (print_operand, case 'w', 'u'): Support CONST_DOUBLE. | |
3167 | (print_operand, cases 'W', 'f', 'F', 'R', 't', 'T', 'C', 'D'): | |
3168 | New cases. | |
3169 | (print_operand, cases 'j' and 'J'): Now use for bit number in CCR. | |
3170 | (output_{pro,epi}logue): If we call function to save/restore fpr's, | |
3171 | we need to save/restore LR. | |
3172 | Save CR if we modify the call-saved fields. | |
3173 | ||
3174 | * romp.md: Delete HImode and QImode arithmetic operations. | |
3175 | (swapxi): Delete; obsolete and never used. | |
3176 | ||
3177 | * tm-a29k.h (TARGET_SWITCHES): Change -mnodw to -mndw. | |
3178 | Add -m{no-,}reuse-arg-regs. | |
3179 | (SECONDARY_RELOAD_CLASS): Provide a definition for this new macro. | |
3180 | * a29k.md: Delete all HImode and QImode arithmetic operations. | |
3181 | * out-a29k.c (secondary_reload_class): New function. | |
3182 | (incoming_reg): Look at TARGET_NO_REUSE_ARGS. | |
3183 | ||
3184 | * reload1.c (eliminate_regs): Don't remove a PLUS unless inside an | |
3185 | address since it would need to change INSN_CODE and can't do it here. | |
3186 | ||
3187 | * reorg.c (uid_to_ruid, max_uid): New vars. | |
3188 | (mostly_true_jump): Refine prediction slightly. | |
3189 | Use uid_to_ruid map to accurately see if branches are backward. | |
3190 | (relax_delay_slots): Pass condition to mostly_true_jump. | |
3191 | (dbr_schedule): Allocate and build uid_to_ruid map. | |
3192 | ||
3193 | Sat May 18 12:54:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3194 | ||
3195 | * cse.c (insert): "Unchanging" pseudos count as constant. | |
3196 | ||
3197 | * tree.c (make_node): Rewrite end as a switch. | |
3198 | ||
3199 | Sat May 18 03:51:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3200 | ||
3201 | * cse.c (FIXED_BASE_PLUS_P): Since this is used when called from | |
3202 | `expand_inline_function', also catch the case where the base | |
3203 | register is VIRTUAL_STACK_VARS_RTX. | |
3204 | (simplify_binary_operation): In EQ and NE case, convert a COMPARE | |
3205 | operand to something we can optimize. | |
3206 | (refers_to_mem_p): Handle the case when `base' is a LO_SUM. | |
3207 | * integrate.c (FIXED_BASE_PLUS_P): Define this to recognize offsets | |
3208 | from the various virtual registers. | |
3209 | (expand_inline_function): Expand exprs using EXPAND_SUM so as to get | |
3210 | stack frame addresses instead of pseudos. This yields much better | |
3211 | cse (at little cost) for GNU C++. Also, test FIXED_BASE_PLUS_P as | |
3212 | an alternative to CONSTANT_P to record a known register value. | |
3213 | * jump.c (find_cross_jump): If we are processing a cross jump and | |
3214 | the insns fail to match, try looking for a REG_EQUAL note that makes | |
3215 | them equivalent insns. If found, keep going. This is important for | |
3216 | merging cleanup codes when one cleanup path gets frame address in a | |
3217 | register when the other path gets the frame address explicitly. | |
3218 | ||
3219 | * cplus-init.c (build_delete): Fixed residual use of 1-based | |
3220 | indexing to use 0-based indexing instead. | |
3221 | ||
3222 | * cplus-decl2.c (grokclassfn): Fix raeburn's May 12 change so that | |
3223 | destructors still have the same name. | |
3224 | ||
3225 | * cplus-decl.c (decls_match): Remove dependence on MERGED. | |
3226 | ||
3227 | * cplus-class.c (build_vbase_path): Fixed bug in computing offsets | |
3228 | for exprs which are FIXED_TYPE_P. | |
3229 | (build_vfn_ref): Change initializer for REF from 0 to NULL_TREE. | |
3230 | ||
3231 | * cplus-decl.c (maybe_build_cleanup): Add LOOKUP_NONVIRTUAL to flags | |
3232 | argument in call to `build_delete' if DECL does not use virtual | |
3233 | baseclasses. If it does, we go through a function call to save | |
3234 | space, unless FLAG_EXPENSIVEO_OPTIMIZATIONS is nonzero. ??Better | |
3235 | approach is to know, in expand_cleanups, to clear `flag_no_inline' | |
3236 | during the cleanup's expansion. | |
3237 | ||
3238 | * cplus-*.c (various places): Add LOOKUP_DESTRUCTOR to all places | |
3239 | where we know we are calling a destructor for a non-null object. | |
3240 | ||
3241 | * stmt.c (fixup_gotos): Run destructors on cleanups that come | |
3242 | from the block being exited, in addition to any inner blocks | |
3243 | for which LABEL is now defined. | |
3244 | (expand_return): Take care of destructors that occur in the | |
3245 | current binding level. | |
3246 | (fixup_cleanups): If we emitted no insns, don't change *BEFORE_JUMP. | |
3247 | ||
3248 | * rtlanal.c: Define `target_flags' here... | |
3249 | * toplev.c: ...not here. This enables us to link gen* programs | |
3250 | which might, through rtlanal.o, pull in references to `target_flags' | |
3251 | that are never used. | |
3252 | ||
3253 | * function.c: Add declaration for `current_function_uses_const_pool'. | |
3254 | * expr.h: Add extern declaration for that variable. | |
3255 | * function.h (struct function): Add a slot named | |
3256 | `uses_const_pool' for `current_function_uses_const_pool'. | |
3257 | * function.c ({push,pop}_function_context): save and restore the | |
3258 | value of `current_function_uses_const_pool'. | |
3259 | * rtl.h (FUNCTION_FLAGS_USES_CONST_POOL): Defined to be 0200. | |
3260 | * integrate.c (initialize_for_inline): | |
3261 | FUNCTION_FLAGS_USES_CONST_POOL now contributes to the value of | |
3262 | `function_flags'. | |
3263 | (output_inline_function): Restore `current_function_uses_const_pool' | |
3264 | from `function_flags'. | |
3265 | (save_for_inline_copying): Only call `save_constants' if | |
3266 | `current_function_uses_const_pool' is nonzero. | |
3267 | (save_for_inline_nocopy): Ditto. | |
3268 | (save_constants): Tweaked to perform its treewalk faster. Notably, | |
3269 | it no longer accepts ptrs to NULL rtl. All callers changed. | |
3270 | * varasm.c (force_const_mem): Set `current_function_uses_const_pool' | |
3271 | if we create a constant pool reference. | |
3272 | ||
3273 | * cplus-parse.y, c-parse.y: Add new function `set_yydebug'. If | |
3274 | YYDEBUG is defined, sets `yydebug' to VALUE. Otherwise, prints | |
3275 | warning that operation is invalid. | |
3276 | * toplev.c (main): Call `set_yydebug' instead of setting `yydebug' | |
3277 | directly. This allows user to turn YYDEBUG off for faster parsing. | |
3278 | ||
3279 | * cse.c (simplify_binary_operation): Eliminate abort when passed | |
3280 | DImode operands. | |
3281 | ||
3282 | Fri May 17 21:56:41 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3283 | ||
3284 | * hard-reg-set.h (reg_class_superunion): New var. | |
3285 | * regclass.c (init_reg_sets): Compute reg_class_superunion. | |
3286 | (reg_classes_intersect_p): New function. | |
3287 | ||
3288 | * reload.c (find_reloads): Alternative is discouraged if it puts | |
3289 | a pseudo in a register class it doesn't prefer. | |
3290 | ||
3291 | * reload1.c (basic_block_needs): Now an array, per register class. | |
3292 | (reload): Compute separate basic_block_needs for each class. | |
3293 | (spill_hard_reg): If pseudo is only in one block, see if that block | |
3294 | needs a spill register of a class containing the hard reg; leave the | |
3295 | pseudo alone if not. | |
3296 | ||
3297 | * reload1.c (reload_mode, reload_nregs): New vars. | |
3298 | (reload_reg_class_lower): Use them. | |
3299 | (allocate_reload_reg): New function. | |
3300 | (choose_reload_regs): Track size and class of any groups. We | |
3301 | can inherit reloads if we are the size of the largest group or | |
3302 | if our class is disjoint from those needed for groups. | |
3303 | Try all inherits first before all spill register allocations | |
3304 | unless there is a later reload with a smaller class; call | |
3305 | allocate_reload_reg to do the actual allocation. | |
3306 | Use new vars above. | |
3307 | (emit_reload_insns): Delete output reload even if we weren't | |
3308 | storing to memory. | |
3309 | ||
3310 | * reload.h (reload_secondary_reload, reload_secondary_p): New vars. | |
3311 | * reload.c (push_reload): If secondary reload register is needed, | |
3312 | make a secondary reload. | |
3313 | * reload1.c (reload): Reload with reload_secondary_p nonzero is in use. | |
3314 | (choose_reload_regs): Likewise. | |
3315 | (emit_reload_insns): Handle secondary reloads, when needed. | |
3316 | ||
3317 | * reload1.c (reload): Add pass to remove death notes for things that | |
3318 | are no longer registers or don't die if we must preserve death notes. | |
3319 | (emit_reload_insns): Refine REG_DEAD notes to be more accurate; make | |
3320 | notes for secondary reloads. | |
3321 | ||
3322 | * reload1.c (emit_reload_insns): Abort for output reloads for jumps; | |
3323 | we have to implement this at some point. | |
3324 | ||
3325 | Fri May 17 20:08:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3326 | ||
3327 | * protoize.c: Handle ultrix like BSD. | |
3328 | ||
3329 | Fri May 17 15:56:41 1991 Richard Stallman (rms at geech.gnu.ai.mit.edu) | |
3330 | ||
3331 | * Pass library function name to INIT_CUMULATIVE_ARGS. | |
3332 | * calls.c (expand_call): Pass extra arg to INIT_CUMULATIVE_ARGS. | |
3333 | * expr.c (emit_library_call): Likewise. | |
3334 | * function.c (assign_parms): Likewise. | |
3335 | * tm-*.h (INIT_CUMULATIVE_ARGS): Accept the extra arg. | |
3336 | (INIT_CUMULATIVE_INCOMING_ARGS): Likewise, just for symmetry. | |
3337 | ||
3338 | Fri May 17 15:41:22 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
3339 | ||
3340 | * tm-i386v4.h (ASM_OUTPUT_COMMON): Don't attempt alignment on a | |
3341 | three byte boundary. | |
3342 | ||
3343 | Fri May 17 15:25:16 1991 Tom Wood (wood at dg-rtp.dg.com) | |
3344 | ||
3345 | * function.c (assign_stack_local, assign_outer_stack_local): Make | |
3346 | the alignment in bytes. | |
3347 | ||
3348 | Fri May 17 14:31:00 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3349 | ||
3350 | * cplus-class.c (build_vbase_path): Only build a COND_EXPR if | |
3351 | NONNULL is zero. | |
3352 | (resolves_to_fixed_type_p): Check TREE_HAS_CONSTRUCTOR for | |
3353 | CALL_EXPRs and INDIRECT_REFs. | |
3354 | ||
3355 | * cplus-call.c (build_method_call): Add call to `constructor_name' | |
3356 | if BASETYPE changes. | |
3357 | * cplus-init.c (build_new): Add LOOKUP_NONVIRTUAL to FLAGS argument | |
3358 | to `build_method_call'. Constructors are never virtual. Also, set | |
3359 | TREE_HAS_CONSTRUCTOR bit for return value from `build_method_call'. | |
3360 | ||
3361 | Thu May 16 21:36:10 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3362 | ||
3363 | * rtl.h (CONSTANT_P): Now true for a CONST_DOUBLE. | |
3364 | * combine.c, cse.c, emit-rtl.c, expr.c, integrate.c, loop.c: | |
3365 | Update for new meaning of CONSTANT_P to include CONST_DOUBLE. | |
3366 | * optabs.c, recog.c, reload.c, reload1.c, rtl.h, rtlanal.c: | |
3367 | Likewise. | |
3368 | * romp.md, rs6000.md, out-alliant.c, out-convex.c: Likewise. | |
3369 | * out-gmicro.c, out-i386.c, out-i860.c, out-m68k.c: Likewise. | |
3370 | * out-sparc.c, out-spur.c, out-tahoe.c: Likewise. | |
3371 | ||
3372 | * combine.c (SUBST, SUBST_INT): If INTO equals NEWVAL, don't | |
3373 | record the substitution. | |
3374 | (try_combine, subst, make_compound_operation, simplify_and_const_int): | |
3375 | No longer need check for changes before using SUBST macro. | |
3376 | (simplify_shift_count): Likewise. | |
3377 | ||
3378 | * integrate.c (copy_rtx_and_substitute, case CONST): If what | |
3379 | was originally a constant becomes something that is not a constant | |
3380 | when passed through a recursive call, return it without the CONST. | |
3381 | ||
3382 | * rtl.c (copy_most_rtx): New function. | |
3383 | * rtl.h (copy_most_rtx): Declare it. | |
3384 | * function.c (fixup_var_refs_1, case MEM): If a MEM contains VAR, | |
3385 | ensure the MEM isn't shared by copying it. | |
3386 | ||
3387 | * expmed.c (expand_divmod): If doing MOD, produce divide result | |
3388 | into unique pseudo so that we might CSE the division. | |
3389 | ||
3390 | Thu May 16 12:01:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3391 | ||
3392 | * reload.c (push_reload): Try find_dummy_reload before dead regs. | |
3393 | ||
3394 | * function.c (assign_stack_local*): Use GET_MODE_ALIGNMENT. | |
3395 | Use CEIL_ROUND consistently. | |
3396 | Don't force word alignment even if STRICT_ALIGNMENT (experiment). | |
3397 | ||
3398 | Thu May 16 10:31:04 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
3399 | ||
3400 | * unroll.c (unroll_loop): Don't abort if start label does not | |
3401 | immediately follow LOOP_BEG note. This can happen as a result of | |
3402 | jump threading. | |
3403 | * reorg.c (mostly_true_jump): Eliminate repeated test in second loop. | |
3404 | ||
3405 | * sched.c (priority): Abort if find a NOTE in a groups of insns that | |
3406 | must be scheduled together. | |
3407 | (free_pending_lists): New function. Moves every *_LIST rtx on the | |
3408 | pending lists to the free list. | |
3409 | (add_insn_mem_dependence): Get a *_LIST from the free list instead | |
3410 | of creating one if possible. | |
3411 | (sched_analyze_1): Don't move an insn across a call if it uses a | |
3412 | register that is not already live across calls. | |
3413 | (sched_analyze_insn): Likewise. | |
3414 | (sched_analyze_1): When flusing the pending lists, put the *_LIST | |
3415 | rtx on the free list. | |
3416 | (sched_analyze): Likewise. | |
3417 | (schedule_block): Likewise. | |
3418 | (sched_analyze_2): For a cc0 setter/user pair, put a copy of all | |
3419 | dependencies on the first insn onto the second insn. | |
3420 | (sched_analyze_insn): Likewise for call sequences. | |
3421 | (sched_analyze_insn): Handle REG_INC notes just like SETs. | |
3422 | (sched_note_set): Handle hard registers same as psuedo regs. | |
3423 | (attach_deaths): Likewise. Don't add REG_DEAD notes to the frame | |
3424 | pointer, arg pointer or stack pointer. | |
3425 | (schedule_block): Likewise. | |
3426 | (rank_for_schedule): Do not check whether each insn of a sequence | |
3427 | that must be scheduled together is ready. They will only reach here | |
3428 | if they are all already ready. | |
3429 | (schedule_block): After reload, don't need to give special treatment | |
3430 | to insns at function start which set up the function parameters. | |
3431 | Don't treat tail specially if it is part of a group that must be | |
3432 | scheduled together. | |
3433 | When a group of instructions is scheduled together, run the lifetime | |
3434 | analysis code on every instruction in the group from last to first. | |
3435 | A call_insn kills all call_used and global regs except those | |
3436 | explicitly used by the call_insn. | |
3437 | (schedule_insn): Initialize new variables. If USE_C_ALLOCA, free | |
3438 | alloced memory immediately after each schedule_block call, not once | |
3439 | at the end. | |
3440 | ||
3441 | * rtl.c (add_dependence): When adding a dependence that points to an | |
3442 | insn that is part of a sequence that must be scheduled together, | |
3443 | make the dependence point to the last insn of the sequence instead. | |
3444 | ||
3445 | Wed May 15 13:08:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3446 | ||
3447 | * combine.c (simplify_and_const_int): If we have | |
3448 | (and (OP (lshiftrt X Y) Z) C), for OP of IOR, XOR, and NOT, commute | |
3449 | OP and LSHIFTRT to put AND and LSHIFTRT adjacent to try to form | |
3450 | ZERO_EXTRACT. | |
3451 | ||
3452 | * combine.c (subst, gen_lowpart_for_combine, get_last_value_validate): | |
3453 | Use object's mode instead of VOIDmode when we make | |
3454 | (clobber (const_int 0)) in case someone uses the mode for significant | |
3455 | bits. | |
3456 | * rtlanal.c (side_effects_p): Reject non-VOIDmode CLOBBERs. | |
3457 | ||
3458 | * rtlanal.c (reg_set_p_1): Remove test for `reg_set_reg' being MEM. | |
3459 | (reg_set_p): Abort if passed a MEM. | |
3460 | ||
3461 | * toplev.c (strip_off_ending): Strip trailing ".f". | |
3462 | ||
3463 | Wed May 15 12:54:18 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3464 | ||
3465 | * cplus-typeck.c (build_modify_expr_1): If the TREE_TYPE of the | |
3466 | recursive result is an ARRAY_TYPE, change it to void_type_node so | |
3467 | build_compound_expr doesn't lose when calling default_conversion. | |
3468 | ||
3469 | * cplus-tree.h (lang_type): Remove AS_LIST field from lang_type. | |
3470 | Use TYPE_MAX_VALUE field of type instead. | |
3471 | (TREE_REFERENCE_EXPR): New macro. | |
3472 | ||
3473 | * cplus-parse.y (LC): If we are not in temporary allocation, call | |
3474 | permanent_allocation. This frees up any PARM_DECL nodes that were | |
3475 | allocated since we processed an inline function. NOTE: we still | |
3476 | have to clean up these parms from inline functions that did not go | |
3477 | inline. | |
3478 | ||
3479 | * cplus-decl.c (store_parm_decls): Since we no longer push an extra | |
3480 | binding level if ! PARMS_HAVE_CLEANUPS, test CLEANUP_LABEL to figure | |
3481 | out how far up the binding countours we must look. | |
3482 | (init_decl_processing): If FLAG_NO_INLINE is nonzero, set | |
3483 | FLAG_DEFAULT_INLINE to zero. | |
3484 | ||
3485 | * cplus-class.c (finish_struct_bits): Copy TYPE_MIN_VALUE and | |
3486 | TYPE_MAX_VALUE. These actually hold C++-related data that's moved | |
3487 | up from the lang_type data structure. | |
3488 | ||
3489 | * cplus-*.c: Change REFERENCE_EXPR to CONVERT_EXPR. Set | |
3490 | TREE_REFERENCE_EXPR bit to indicate a CONVERT_EXPR that's really the | |
3491 | address of a C++ reference expression. | |
3492 | ||
3493 | Wed May 15 12:30:26 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3494 | ||
3495 | * tm-sparc.h (FIXED_REGISTERS): Register 0 is not fixed; it is used | |
3496 | for the condition code, not to represent the fixed %g0. | |
3497 | ||
3498 | Tue May 14 18:59:06 1991 Jim Wilson (wilson at sphagnum.cygnus.com) | |
3499 | ||
3500 | * explow.c (find_next_ref): Start search at first insn after INSN. | |
3501 | ||
3502 | * jump.c (jump_optimize): Update the three simplications that start | |
3503 | with the "if (...) x = 1; else {...} if (x) ..." case, so that when | |
3504 | HAVE_cc0 is not defined, they do not accept TST insns (which could | |
3505 | just be a register to register move). They should only accept insns | |
3506 | with the COMPARE operator. | |
3507 | ||
3508 | Tue May 14 14:51:33 1991 Tom Wood (wood at dg-rtp.dg.com) | |
3509 | ||
3510 | * cse.c (simplify_binary_operation): Don't abort when comparing | |
3511 | two CONST_DOUBLE values. | |
3512 | ||
3513 | Tue May 14 11:35:47 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3514 | ||
3515 | * c-common.c (decl_attributes): Fix typo in name of attribute. | |
3516 | It should be `aligned'. Also don't crash on unknown attribute. | |
3517 | ||
3518 | * expmed.c (init_expmed): Make a separate object to free back to. | |
3519 | ||
3520 | * hard-reg-set.h (HOST_BITS_PER_LONG_LONG): Provide default definition. | |
3521 | ||
3522 | * toplev.c (main): Implement -gdwarf. | |
3523 | ||
3524 | Tue May 14 06:32:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3525 | ||
3526 | * flow.c (mark_used_regs): Don't make REG_DEAD notes for fixed regs. | |
3527 | ||
3528 | * combine.c (subst): Convert (not (ashift C X)) to (or (rotate ..)) | |
3529 | and similarly for (not (lshiftrt C X)). | |
3530 | (make_field_assignment): Make corresponding change in how we recognize | |
3531 | bitfield assignment of single bit to zero. | |
3532 | ||
3533 | * combine.c (merge_outer_ops): New function. | |
3534 | (simplify_shift_const): Use merge_outer_ops to generalize and | |
3535 | simplify handling of outer_ops. | |
3536 | Try using distributive law followed by invert distributive law | |
3537 | to simplify combinations of logical operations and shifts. | |
3538 | ||
3539 | * emit-rtl.c (gen_highpart): Correct conditional that says when we | |
3540 | can get the bits of a DFmode object; copy from gen_lowpart. | |
3541 | ||
3542 | * cse.c (simplify_binary_operation, case MULT): Simplify zero case. | |
3543 | (simplify_binary_operation, case DIV): In 0/x, return zero in proper | |
3544 | mode. | |
3545 | ||
3546 | * combine.c (simplify_comparison): Can only extend comparison | |
3547 | to wider mode if equality comparison or test of sign bit. | |
3548 | ||
3549 | Tue May 14 03:26:36 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3550 | ||
3551 | * cplus-tree.h (lang_type): Change to use TREE_VEC to hold basetype | |
3552 | info. | |
3553 | (CLASSTYPE_N_BASECLASSES, CLASSTYPE_BASECLASS): Changed accordingly. | |
3554 | Baseclasses are now counted [0..n) instead of [1..n]. | |
3555 | (CLASSTYPE_BASETYPECLASSES): Deleted. | |
3556 | * cplus-*.c (various places): Change code to work with new | |
3557 | representation for basetypes. | |
3558 | ||
3559 | * toplev.c (main): Handle `-gdwarf' as a debug option. | |
3560 | ||
3561 | * cse.c (insert): Treat pseudos marked RTX_UNCHANGING_P as being | |
3562 | const. | |
3563 | ||
3564 | Mon May 13 22:44:18 1991 Jim Wilson (wilson at ok.cygnus.com) | |
3565 | ||
3566 | * mips.md: In the div/mod peepholes, don't apply the peephole if the | |
3567 | first operation overwrites one of its two operands. | |
3568 | ||
3569 | Mon May 13 12:14:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3570 | ||
3571 | * expmed.c (store_bit_field, extract_bit_field): | |
3572 | Set volatile_p while checking predicates. | |
3573 | * recog.h (volatile_p): Declare it. | |
3574 | * explow.c (force_not_mem): Do nothing with BLKmode. | |
3575 | ||
3576 | * SYSCALLS.c (u_int): Don't define on DGUX--already defined. | |
3577 | ||
3578 | * m68k.md (zero_extend*): Don't make the subreg in the template. | |
3579 | Make it explicitly, and handle subregs as operand 0. | |
3580 | ||
3581 | * tm-convex.h (MODES_TIEABLE_P): Fix typos. | |
3582 | ||
3583 | * loop.c (check_dbra_loop): To check for a loop with a `break', use | |
3584 | loop_number_exit_label, not the uid_luid of each label, since loop | |
3585 | unrolling may have created new labels with no uid_luid. | |
3586 | ||
3587 | * expr.c (push_block): Fixed typo in last change. | |
3588 | ||
3589 | Mon May 13 12:07:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3590 | ||
3591 | * combine.c (subst): If we can't change comparison code, see if | |
3592 | we can instead surround our operation with an XOR. | |
3593 | ||
3594 | * combine.c (make_compound_operation, simplify_and_const_int): | |
3595 | Ensure shift counts are non-negative and in range before using them | |
3596 | to perform shifts. | |
3597 | (simplify_comparison): Likewise. | |
3598 | ||
3599 | * combine.c (try_combine): See if we have previously merged a | |
3600 | compare and arithmetic operation. If so try to take it apart to | |
3601 | allow further combines (such as making a branch-and-decrement). | |
3602 | ||
3603 | * combine.c (try_combine): Don't make VOIDmode register if our split | |
3604 | point is a constant. | |
3605 | ||
3606 | * combine.c (subst): Use COMBINE_RTX_EQUAL_P to see if SET_DEST | |
3607 | is our register; two hard regs might have different rtx. | |
3608 | ||
3609 | * combine.c (subst): Generalize associative law handling to | |
3610 | cases not involving constants. | |
3611 | ||
3612 | * combine.c (expand_compound_operation): If we would return a | |
3613 | (clobber (const_int 0)), return what we were given. | |
3614 | ||
3615 | * combine.c (simplify_shift_const): Clean up by removing fallthrough. | |
3616 | ||
3617 | Mon May 13 10:26:00 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
3618 | ||
3619 | * i386.md (all calls to output_move_double): call return | |
3620 | value to avoid spurious compiler warnings. | |
3621 | Allow REG in all alternatives of operand 0 where possible. | |
3622 | Remove patterns to recognize increment/decrement. | |
3623 | (addsi3, addhi3, addqi3): Do this in here instead. | |
3624 | (floatdidf2): New pattern. | |
3625 | (adddi3, subdi3, negdi2): New patterns. | |
3626 | (umulsi3, umulhi3): Remove obsolete UMULT patterns. | |
3627 | (divM3, udivM3, divmodM4, udivmodM4): Use "r" constraint instead | |
3628 | of "x" or "abc". | |
3629 | (sqrtsf2, sqrtdf2): New patterns. | |
3630 | (ashldi3, ashrdi3, lshldi3, lshrdi3): New patterns | |
3631 | (All shift and rotate patterns): Don't use reg name explicitly in | |
3632 | output string: use %N operand reference. | |
3633 | (ashlM3, lshlM3): Use `add' instead of `shl'/`sal' if possible. | |
3634 | (insv): Fix output constraint. Clarify source. Disable for now - | |
3635 | makes worse code. | |
3636 | (SImode bit test, all Scond patterns): Allow MEM operands too. | |
3637 | (seq, sne): Handle CC_Z_IN_NOT_C. | |
3638 | (jump, indirect_jump, tablejump): Align code on word boundary | |
3639 | after unconditional jumps. | |
3640 | (`loop' patterns): Delete - will never be useful on i386. | |
3641 | (call_pop, call_value_pop): New patterns. | |
3642 | (return): New pattern: Do `return' if simple epilogue. But only if | |
3643 | the real function epilogue isn't next. | |
3644 | (movstrsi): Do word moves, not just bytes, if count is unknown. | |
3645 | (ffsM2): New patterns. | |
3646 | ||
3647 | * out-i386.c (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, | |
3648 | FP_CALL1, FP_CALL): Move to tm-i386.h for use by i386.md. | |
3649 | (output_movf, fp_call_internal, output_fix_trunc, split_di): | |
3650 | No longer static - called from i386.md. | |
3651 | (via_memory): Finish return value change. | |
3652 | (output_move_const_double): Delete unused function. | |
3653 | (simple_386_epilogue): New predicate. | |
3654 | (function_prologue): Allocate frame regardless of whether or not | |
3655 | there is a frame pointer. | |
3656 | Use output_asm_insn instead of fprintf to push registers. | |
3657 | (function_epilogue): Likewise. | |
3658 | If there is a frame pointer, don't necessarily fix %esp just to | |
3659 | pop a reg - use offset from frame pointer. | |
3660 | Fix -fomit-frame-pointer support. | |
3661 | Fix RETURN_POPS_ARGS case where args > 32K bytes. | |
3662 | (print_operand): A LABEL_REF gets an OFFSET_PREFIX too. | |
3663 | (print_operand_address): %esp can only be base reg, never index. | |
3664 | (split_di): New function. | |
3665 | ||
3666 | * tm-i386.h: Remove references to obsolete tm-compaq.h file. | |
3667 | (TARGET_486): New flag. | |
3668 | (TARGET_SWITCHES): New options -m486, -mno486, -m386. | |
3669 | (SMALL_REGISTER_CLASSES): New macro. | |
3670 | (ASM_OUTPUT_LOOP_ALIGN): New macro. | |
3671 | (all reg macros, ARG_POINTER_REGNUM): Create argument pointer, | |
3672 | to be eliminated in favor of %esp or %ebp. | |
3673 | (HARD_REGNO_NREGS, REGNO_REG_CLASS): Use FP_REGNO_P. | |
3674 | (REGISTER_MOVE_COSTS): It is expensive to move between integer and | |
3675 | float registers. | |
3676 | (FP_REGNO_P): Detect only the FP regs. | |
3677 | (all class macros): Delete obsolete classes ABC_REGS & ABCI_REGS. | |
3678 | (REG_CLASS_FROM_LETTER): Add `S' for SIREG, remove `x' for ABCI_REGS. | |
3679 | (CONST_OK_FOR_LETTER_P): Add `J' for DImode shifts. | |
3680 | (FIRST_PARM_OFFSET): Offset now zero. | |
3681 | (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): | |
3682 | Use generalized scheme to eliminate frame and arg pointers. | |
3683 | (INITIAL_FRAME_POINTER_OFFSET): Delete. | |
3684 | (REG_OK_FOR_BASE_P): allow virtual arg pointer. | |
3685 | (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, FP_CALL1, FP_CALL): | |
3686 | Moved here from out-i386.c for use by i386.md. | |
3687 | ||
3688 | * tm-compaq.h: Delete obsolete file. | |
3689 | ||
3690 | Sun May 12 18:38:41 1991 Ken Raeburn (raeburn at watch.com) | |
3691 | ||
3692 | * cplus-decl.c (print_binding_level, print_binding_stack, | |
3693 | print_other_binding_stack): New debugging routines; dump one or | |
3694 | more binding levels to stderr. | |
3695 | ||
3696 | * cplus-decl.c (push_to_top_level): New routine; saves copies of | |
3697 | all class and local bindings, and some other state, and clears the | |
3698 | real values, to effectively move to global scope. | |
3699 | (pop_from_top_level): Restore the saved state. | |
3700 | ||
3701 | * cplus-decl.c (adjust_type_value): No longer static. Abort if | |
3702 | current_binding_level is class binding level; need to investigate | |
3703 | that situation further. | |
3704 | ||
3705 | * cplus-decl.c (finish_function): Check that the binding level being | |
3706 | popped really is a function-parameter binding level. | |
3707 | ||
3708 | * cplus-tree.h (DESTRUCTOR_DECL_PREFIX): Replaces | |
3709 | DESTRUCTOR_DECL_FORMAT; used as a prefix before the class name. | |
3710 | * cplus-decl2.c (grokclassfn): Use it, and call build_overload_name | |
3711 | rather than just copying the class name. | |
3712 | ||
3713 | * cplus-method.c (fndecl_as_string): Use TREE_TYPE rather than | |
3714 | indirecting through type name and the identifier's associated type, | |
3715 | since the latter may have changed. | |
3716 | (build_nested_name): New argument, text_end; callers changed. Call | |
3717 | build_overload_identifier rather than copying class name. | |
3718 | (build_overload_value): Strip non-lvalue nodes for all arguments. | |
3719 | Fixed up the handling of negative DImode values. | |
3720 | (build_overload_identifier): New function. Copy class name (with | |
3721 | length) if non-template, or build a name from template parameters. | |
3722 | (build_overload_name): Call build_overload_identifier for class | |
3723 | names. | |
3724 | ||
3725 | * cplus-parse.y: Added comment about use of $$ for $1. | |
3726 | (template_type_name): Removed useless precedence specificiation. | |
3727 | (template_arg_list): Wrap TREE_LIST nodes around all arguments in | |
3728 | the list. | |
3729 | (template_arg): Call groktypename on type names. For expressions, | |
3730 | specify "UNARY" precedence. | |
3731 | (PRE_PARSED_CLASS_DECL handling): Put a copy of the new class decl | |
3732 | into global scope, to avoid recursive expansion, since we start in a | |
3733 | non-global scope set up for the parameters. | |
3734 | ||
3735 | * cplus-pt.c (coerce_template_parms): New function. Converts | |
3736 | template arguments to appropriate types, returns a vector containing | |
3737 | results. | |
3738 | (mangle_class_name_for_template): Removed nparms argument. | |
3739 | Changed to deal with arglist as vector. No longer call | |
3740 | groktypename. Some initial code added for PARM_DECL (non-type) | |
3741 | parameters; work not completed. | |
3742 | (lookup_template_class): Call coerce_template_parms. Removed some | |
3743 | unused code. | |
3744 | (push_template_decls, pop_template_decls): Fixed to deal with | |
3745 | arglist as vector. More code for non-type parameters. | |
3746 | (instantiate_template): Push to top binding level before pushing any | |
3747 | declarations. | |
3748 | (end_template_instantiation): Pop from top level, then push the new | |
3749 | decl at top level. | |
3750 | ||
3751 | * cplus-tree.h (struct lang_identifier): Renamed field "template" to | |
3752 | "class_template_info"; accessor macros changed. | |
3753 | ||
3754 | * cplus-pt.c (struct template_info): Renamed from "template". | |
3755 | Removed unused fields. | |
3756 | ||
3757 | Sun May 12 17:38:46 1991 Jim Wilson (wilson at cygnus.com) | |
3758 | ||
3759 | * unroll.c (copy_loop_body): Fix typo: had `==' for `='. | |
3760 | ||
3761 | Sun May 12 17:05:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3762 | ||
3763 | * genattrtab.c (gen_attr): Clear has_asm_insn field in new object. | |
3764 | ||
3765 | Sun May 12 04:21:52 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3766 | ||
3767 | * hard-reg-set.h (HARD_CONST): New macro. Converts integer | |
3768 | constants to appropriate type for use with HARD_REG_SET. | |
3769 | ({SET,CLEAR,TEST}_HARD_REG_BIT): Use this macro where appropriate. | |
3770 | (GO_IF_HARD_REG_SUBSET): Ditto. | |
3771 | (HARD_REG_SET): Add new case if FIRST_PSEUDO_REGISTER <= | |
3772 | HOST_BITS_PER_LONGLONG. | |
3773 | * global-alloc.c: Pass HARD_CONST (0) instead of 0 to functions | |
3774 | which are looking for a HARD_REG_SET argument. | |
3775 | * reorg.c (resource_conflicts_p): Change comparison of HARD_REG_SET | |
3776 | value to compare against HARD_CONST. | |
3777 | ||
3778 | * all xm-*.h files: Added HOST_BITS_PER_LONGLONG where | |
3779 | HOST_BITS_PER_LONG was defined. | |
3780 | * tm-sparc.h (REG_CLASS_CONTENTS): Fixed in case we're using long | |
3781 | long HARD_REG_SETs. | |
3782 | ||
3783 | * toplev.c (main): support -gdwarf switch. | |
3784 | ||
3785 | * longlong.h (umulsidi3): SPARC .umul routine returns the value in | |
3786 | WORD_LITTLE_ENDIAN form, so swap. Other word-endian changes for | |
3787 | inline mul routines. | |
3788 | ||
3789 | * gnulib2.c (__divdi3): If C is nonzero, negate whole division | |
3790 | instead of returning negation of quotient. | |
3791 | ||
3792 | Sat May 11 20:06:08 1991 Torbjorn Granlund (tege at krishna.sics.se) | |
3793 | ||
3794 | * expmed.c (outside of functions): New vars: lea_cost, lea_max_mul. | |
3795 | (init_expmed): Initialize lea_cost and lea_max_mul. | |
3796 | (synth_mult): Use them. | |
3797 | ||
3798 | Sat May 11 20:11:41 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3799 | ||
3800 | * cplus-class.c (build_vbase_path): Rewritten and simplified. | |
3801 | * cplus-cvt.c (build_up_reference): Try to get away without building | |
3802 | a NOP_EXPR around the return value of `build_component_addr'. | |
3803 | Ditto for return value from `convert_pointer_to'. | |
3804 | ||
3805 | * cplus-decl.c (void_zero_node): New node. Used in conditional | |
3806 | expressions where one arm must do nothing. | |
3807 | * various places: replace calls that built this node dynamically to | |
3808 | just use the global copy. | |
3809 | * cplus-tree.h (void_zero_node): Declare it globally. | |
3810 | ||
3811 | (maybe_build_cleanup): Don't call `convert_force' on the return | |
3812 | value of `build_unary_op'. We should have license to modify its | |
3813 | type without harm. | |
3814 | * cplus-gc.c (protect_value_from_gc): Same idea for VAR_DECL and | |
3815 | PARM_DECL nodes. | |
3816 | ||
3817 | * toplev.c (f_options): Add choice for -fPIC. | |
3818 | ||
3819 | * varasm.c (assemble_function): If it's a function name that's the | |
3820 | first global name, strip of a leading '*' if there is one. | |
3821 | ||
3822 | * reload.c (find_reloads): Fix comment. | |
3823 | ||
3824 | * stmt.c (expand_return): Call `any_pending_cleanups' with argument. | |
3825 | ||
3826 | * expr.c (expand_expr): In TARGET_EXPR case, If TARGET is null and | |
3827 | DECL already has rtl, use that as the target. | |
3828 | (expand_expr): In BIND_EXPR try using expand_{start,end}_bindings to | |
3829 | catch cleanups...otherwise fixup_cleanups must be modified to deal | |
3830 | with cleanups not in any contours. | |
3831 | ||
3832 | Sat May 11 15:09:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3833 | ||
3834 | * out-i386.c (via_memory): Return a memref to the stack. | |
3835 | (fp_call_internal): Change call to via_memory. | |
3836 | ||
3837 | * expr.c (push_block): New arg BELOW specifies padding direction. | |
3838 | All callers changed. | |
3839 | (emit_push_insn): Pass an interesting value for BELOW. | |
3840 | ||
3841 | * c-parse.y (typespec): Pass the TYPE_DECL for a typedef name. | |
3842 | * c-decl.c (grokdeclarator): Handle TYPE_DECL in declspecs. | |
3843 | ||
3844 | Thu May 9 15:17:44 1991 Tom Wood (wood at dg-rtp.dg.com) | |
3845 | ||
3846 | * m88k.md (zero_extend pattern): Compute correct constant. | |
3847 | ||
3848 | Thu May 9 07:44:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3849 | ||
3850 | * combine.c (subst): Remove WAS_REPLACED; always check the rtl | |
3851 | for specific cases of interest and don't use TO and FROM when | |
3852 | looking into the rtl. | |
3853 | ||
3854 | * combine.c (subst, case MEM): Call make_compound_operation here | |
3855 | so any ASHIFTs will be MULTs for mode_dependant_address_p calls later. | |
3856 | (subst, case PLUS): Remove cases already done elsewhere. | |
3857 | ||
3858 | * expmed.c (emit_store_flag): Don't let the delete_insns_since call | |
3859 | we do kill insns to do an auto-inc. | |
3860 | ||
3861 | * flow.c (propagate_block): Don't treat global regs as clobbered | |
3862 | over a CALL_INSN even if call-clobbered. | |
3863 | ||
3864 | * stmt.c (expand_end_stmt_expr): Correctly handle the case where an | |
3865 | expression statement is just an auto-inc of a var. | |
3866 | ||
3867 | * sparc.md (fix_trunc[sd]fsi2): Finish change to use MATCH_SCRATCH | |
3868 | by eliminating DEFINE_EXPAND and making DEFINE_INSN a named pattern. | |
3869 | ||
3870 | Wed May 8 13:31:23 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3871 | ||
3872 | * cccp.c (rescan): Handle symbols before // as before /*. | |
3873 | ||
3874 | * Makefile.in (objc-parse.o): Specify the command. | |
3875 | ||
3876 | * c-parse.y (typespec): Fix previous change. | |
3877 | ||
3878 | * reload1.c (choose_reload_regs): Use spillregs in round robin. | |
3879 | ||
3880 | Wed May 8 11:00:29 1991 Michael Tiemann (tiemann at cygnus.com) | |
3881 | ||
3882 | * cplus-lex.c (tree_node_kinds): Renamed to `tree_node_counts'. | |
3883 | ||
3884 | Wed May 8 05:50:29 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3885 | ||
3886 | * integrate.c (copy_rtx_and_substitute): Don't round frame size. | |
3887 | ||
3888 | * loop.c: Must include insn-flags.h to get | |
3889 | HAVE_decrement_and_branch_until_zero. | |
3890 | * Makefile.in (loop.o): Likewise. | |
3891 | ||
3892 | * expmed.c (expand_divmod): Use LOG instead of INTVAL (OP1) | |
3893 | once we start generating rtl. | |
3894 | ||
3895 | Wed May 8 05:38:06 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
3896 | ||
3897 | * cplus-decl.c (duplicate_decls): Don't crash on duplicate | |
3898 | TEMPLATE_DECLs. | |
3899 | (globalize_nested_type): Handle globalizing types when | |
3900 | CLASS_BINDING_LEVEL goes out of effect. | |
3901 | (init_decl_processing): Comment out decls for ABS, FABS and LABS. | |
3902 | They conflict with libg++ inlines. | |
3903 | ||
3904 | * cplus-decl2.c (build_push_scope): Fix bug in last change. | |
3905 | (finish_file): Make the dummy decl that we tack on to the global | |
3906 | scope a TYPE_DECL instead of a VAR_DECL. Fake global VAR_DECLs are | |
3907 | problematic on some machines (i.e. MIPS). | |
3908 | ||
3909 | * cplus-init.c (init_vfields): Use TREE_TYPE (VFIELDS) to find the | |
3910 | type for which the VFIELD was last distinguished. This picks up | |
3911 | cases where single inheritance overrides base class vtables and the | |
3912 | base class does not get a new vtable for the override. | |
3913 | ||
3914 | * cplus-parse.y (named_class_head_sans_basetype): Handle a | |
3915 | `template_type_name' by itself. This happens with e.g. | |
3916 | friend class Stack<T>. | |
3917 | ||
3918 | * cplus-pt.c (mangle_class_name_for_template): Put ',' between | |
3919 | parameters. | |
3920 | (push_template_decls): Don't crash if ARGLIST is ERROR_MARK_NODE. | |
3921 | ||
3922 | * cplus-class.c (finish_base_struct): Compute MAX_HAS_VIRTUAL by | |
3923 | looking at all the base classes relevant to VFIELDS. | |
3924 | (build_vbase_path): Initialize NONNULL to zero. | |
3925 | ||
3926 | Tue May 7 23:47:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3927 | ||
3928 | * stmt.c (any_pending_cleanups): Don't fail if block_stack is empty. | |
3929 | ||
3930 | Tue May 7 22:46:16 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3931 | ||
3932 | * cse.c (simplify_binary_operation; case EQ, NE): Don't assume | |
3933 | the address of a symbol is non-zero. | |
3934 | ||
3935 | * sched.c (schedule_insns): Ensure we free memory used by | |
3936 | schedule_block when using the C alloca. | |
3937 | ||
3938 | Tue May 7 14:13:57 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3939 | ||
3940 | * reload1.c (mark_reload_reg_in_use): New arg MODE. Mark all the regs. | |
3941 | (choose_reload_regs): Pass that arg; don't loop here. | |
3942 | ||
3943 | * c-parse.y (typespec): Convert a TYPENAME to its meaning. | |
3944 | ||
3945 | * fold-const.c (fold): Don't assume symbolic constant is nonzero. | |
3946 | ||
3947 | * c-typeck.c (c_expand_asm_operands): Convert arrays, fcns to pointers. | |
3948 | ||
3949 | Mon May 6 23:29:21 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
3950 | ||
3951 | * cse.c (cse_insn): Only make a REG_WAS_0 note if the previous | |
3952 | set was to the same register, not just the same quantity; | |
3953 | if previous REG_WAS_0 note, update back pointer. | |
3954 | If setting a register to a constant, update QTY_CONST and | |
3955 | QTY_CONST_INSN so it points to the last set. | |
3956 | In special case for (set REG0 REG1), ensure any REG_WAS_0 notes are | |
3957 | updated correctly. | |
3958 | ||
3959 | * genrecog.c (make_insn_sequence): Don't clobber `i' when it is | |
3960 | still needed. | |
3961 | ||
3962 | * out-vax.c (print_operand_address): Fix bug in last change in handling | |
3963 | (plus (reg) (reg)). | |
3964 | ||
3965 | Mon May 6 16:41:50 1991 Torbjorn Granlund (tege at zevs.sics.se) | |
3966 | ||
3967 | * expmed.c (synth_mult): Make it handle t == 0. Improve comments. | |
3968 | Use (max_cost <= add_cost) instead of (max_cost < add_cost) to | |
3969 | determine if we should fail early (to better prune the search). | |
3970 | Remove loop with n from factor synthesis. Remove -2 bias from m | |
3971 | loop (for clearity). Add code to use load-effective-address | |
3972 | instructions. Use bit-fiddling instead of loop to determine q in | |
3973 | the last synthesis case. | |
3974 | ||
3975 | Mon May 6 11:21:45 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3976 | ||
3977 | * c-typeck.c (convert_for_assignment): Reword an error message. | |
3978 | ||
3979 | * c-typeck.c (build_conditional_expr): Typo in last change. | |
3980 | ||
3981 | * Makefile.in (enquire, enquire.o): Depend on gnulib. | |
3982 | ||
3983 | Sun May 5 17:28:22 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) | |
3984 | ||
3985 | * make-cc1.com: Update for GCC 2.0; build insn-attr.h, insn-attrtab.c. | |
3986 | Compile and add obj to linker list: c-aux-info.c, c-common.c, c-lang.c, | |
3987 | aux-output.c, calls.c, dwarfout.c, function.c, reorg.c, sched.c, | |
3988 | sdbout.c, unroll.c, insn-attrtab.c. Remove references to symout.c. | |
3989 | ||
3990 | Sun May 5 15:32:01 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
3991 | ||
3992 | * Makefile.in (rest.encap): Make gnulib before float.h. | |
3993 | ||
3994 | * c-typeck.c (build_conditional_expr): | |
3995 | Don't assume symbolic constant is nonzero. | |
3996 | ||
3997 | * reload1.c (choose_reload_regs): Ignore avoid_return_reg. | |
3998 | (reload_as_needed, reload): Don't bother setting avoid_return_reg. | |
3999 | ||
4000 | Sun May 5 14:30:14 1991 Michael Tiemann (tiemann at cygint.cygnus.com) | |
4001 | ||
4002 | * cplus-class.c (prev_class_type): Declare this to be static. | |
4003 | (build_vbase_path): Test NONNULL to decide whether a COND_EXPR is | |
4004 | actually needed. | |
4005 | (finish_struct): Another sort of hard virtual function to deal with | |
4006 | is one which comes from the non-leftmost baseclass, and who's index | |
4007 | is different between that class and the main derived class. Use new | |
4008 | variable DOING_HARD_VIRTUALS to control when we punt and when we | |
4009 | plow through. | |
4010 | (modify_vtable_entry): If we find at this point that we have a hard | |
4011 | virtual function, just put it on the list PENDING_HARD_VIRTUALS if | |
4012 | DOING_HARD_VIRTUALS is nonzero. | |
4013 | (fixed_type_p): Handle SAVE_EXPR, RTL_EXPR, PLUS_EXPR, MINUS_EXPR, | |
4014 | NOP_EXPR and CONVERT_EXPR. | |
4015 | (pushclass): Fixed comment. Also change test for whether this is | |
4016 | the top-level class scope from an obscure one to an obvious one, and | |
4017 | add comment. | |
4018 | (pushclass,popclass): Now always allocate a binding level. Later | |
4019 | we'll have to rewrite this to actually use it. | |
4020 | ||
4021 | * cplus-gc.c (type_needs_gc_entry): Don't need a GC entry for | |
4022 | ERROR_MARK_NODE. | |
4023 | ||
4024 | * cplus-init.c (build_new): Set TREE_CALLS_NEW on RTL_EXPR. This | |
4025 | gives us a case that `fixed_type_p' can grok. | |
4026 | ||
4027 | * cplus-lex.c (identifier_type): Make this __inline if compiling | |
4028 | with GNU C. | |
4029 | (tree_node_kinds): Renamed to `tree_node_counts'. | |
4030 | ||
4031 | * cplus-parse.y (various places): Take advantage of default rule | |
4032 | `$$ = $1', and where possible, use $$ instead of $1. | |
4033 | Also, back out change for setting `looking_for_typename' to 1 at top | |
4034 | level. | |
4035 | ||
4036 | * cplus-decl2.c (build_push_scope): If the user gives X::foo in X's | |
4037 | scope, don't return a SCOPE_REF. Just return `foo' instead. | |
4038 | ||
4039 | * cplus-decl.c (init_decl_processing): Don't define `alloca' as a | |
4040 | built-in function until libg++ header files agree with its built-in | |
4041 | type. | |
4042 | (finish_decl): Don't crash if TYPE is error_mark_node. | |
4043 | ||
4044 | * fold-const.c (split_tree): When splitting the tree, don't call | |
4045 | convert if the TYPE_MODEs are the smae. This screws up C++ where | |
4046 | conversion of one pointer type to another can cause the pointer's | |
4047 | value to change. | |
4048 | ||
4049 | * tree.c (get_identifier): Speed up `get_identifier' by about a | |
4050 | factor of 2. This becomes noticable with the long names used for | |
4051 | C++ overloading. | |
4052 | (tree_cons): Make this most frequent user of `make_node' perform its | |
4053 | actions inline. | |
4054 | ||
4055 | * calls.c (expand_call): Eliminate many (most) calls to strcmp by | |
4056 | being smarter about when to call it. Also, don't call `push_block' | |
4057 | in the trivial case when it's not needed. | |
4058 | ||
4059 | Sun May 5 08:51:14 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4060 | ||
4061 | * expr.c (convert_to_mode): Fix (for the second time) test for when | |
4062 | gen_lowpart should be called. | |
4063 | ||
4064 | * cse.c (find_best_addr): Try to fold address. | |
4065 | (fold_rtx): Do associativity and (not (not ...)) checks here. | |
4066 | (cse_insn): Not here. | |
4067 | ||
4068 | * combine.c (recog_for_combine): New parameter, PNOTES. | |
4069 | When we add a CLOBBER, put a REG_UNUSED note for it in *PNOTES. | |
4070 | (try_combine): Call recog_for_combine with new parameter. | |
4071 | Delete any now-invalid REG_UNUSED notes in OTHER_INSN and add any | |
4072 | required new ones. | |
4073 | Add REG_NOTES to I3 and I2 due to added CLOBBERs. | |
4074 | (remove_death): Call new function, remove_note. | |
4075 | (move_deaths): Don't get confused by a CLOBBER. | |
4076 | (distribute_notes): Don't make duplicate REG_UNUSED notes. | |
4077 | Don't put a REG_DEAD note on an insn when the register is | |
4078 | partially modified, but remains valid. | |
4079 | ||
4080 | * rtlanal.c (remove_note): New function. | |
4081 | ||
4082 | * combine.c (try_combine): When making a PARALLEL that does a compare | |
4083 | and arithmetic, don't simplify the COMPARE. | |
4084 | ||
4085 | * combine.c (try_combine): Validate that I1DEST isn't being | |
4086 | modified invalidly. | |
4087 | ||
4088 | * combine.c (simplify_comparison): In ZERO_EXTRACT case, add missing | |
4089 | test for equality comparison against zero; also invert comparison | |
4090 | condition. | |
4091 | If we can't do a comparison in a narrower mode, but we know that | |
4092 | some wider bits are zero, see if we can do it in a wider more. | |
4093 | ||
4094 | * cse.c (simplify_binary_operation): Remove obsolete code to convert | |
4095 | negative shift counts to the opposite shift. | |
4096 | Don't fold invalid shifts since they may trap (e.g., on Vax). | |
4097 | ||
4098 | * reload1.c (emit_reload_insns): Use rtx_equal_p to see if a result | |
4099 | is already in the desired register. | |
4100 | ||
4101 | * combine.c (find_split_point): Add two more ways to split an insn. | |
4102 | ||
4103 | * combine.c (gen_binary): Put a complex operand first in addition to | |
4104 | putting constants second, just like subst would do. | |
4105 | ||
4106 | * combine.c (significant_bits): Correct computation of significant bits | |
4107 | for division operations. | |
4108 | ||
4109 | * combine.c (apply_distributive_law): Reject complex SUBREGs. | |
4110 | SUBREG distributes over logical and addition operations. | |
4111 | ||
4112 | * combine.c (subst; case AND, IOR, XOR): Add some boolean | |
4113 | arithmetic simplifications. | |
4114 | ||
4115 | * expr.c (do_jump): ADDRESS_EXPR is not always zero, unfortunately. | |
4116 | ||
4117 | * expr.c (do_store_flag): In case where we are testing a single bit, | |
4118 | don't convert to output mode until after we do the shift. | |
4119 | ||
4120 | * optabs.c (expand_binop, expand_unop, expand_fix): Compare | |
4121 | enum insn_code objects against CODE_FOR_nothing instead of 0. | |
4122 | ||
4123 | * romp.md (bit_insv): Use CC0 in standard way; i.e., in NE. | |
4124 | ||
4125 | Sat May 4 20:41:12 1991 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil) | |
4126 | ||
4127 | * c-aux-info.c (gen_aux_info_record): Use getcwd on VMS a la USG. | |
4128 | * dbxout.c: Same here. | |
4129 | * xm-vms.h: Define unlink as remove | |
4130 | (GCC_INCLUDE_DIR): Provide a dummy definition. | |
4131 | ||
4132 | Sat May 4 16:46:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4133 | ||
4134 | * combine.c (can_combine_p, try_combine): Use SMALL_REGISTER_CLASSES | |
4135 | to indicate when it is valid to do combines involving hard registers. | |
4136 | * cse.c (canon_hash): #ifdef SMALL_REGISTER_CLASSES, don't record | |
4137 | hard registers unless they are fp, ap, sp or are fixed. | |
4138 | * loop.c (valid_initial_value_p): #ifdef SMALL_REGISTER_CLASSES, | |
4139 | hard register aren't valid initial values. | |
4140 | * reload1.c (reload): Initialize FORBIDDEN_REGS depending on | |
4141 | whether we have small register classes or not. | |
4142 | ||
4143 | * ns32k.md: Replace const_int with const_int_operand. | |
4144 | Remove HImode extractions. | |
4145 | Remove patterns assigning an AND to CC0. | |
4146 | (andcbxx3): Remove name and eliminate case with NOT as second operand. | |
4147 | (sbitx, cbitx): Remove patterns involving IOR and ASHIFT; add patterns | |
4148 | with ZERO_EXTRACT as destination. | |
4149 | (ibitx): Put ASHIFT as first operand in XOR. | |
4150 | (bitfield compare): Remove comparison of 1 bit field with 1; combine | |
4151 | converts this to comparison with zero. | |
4152 | (and-compare-branch): Fold PLUS or MINUS into constant, like combine | |
4153 | will do. | |
4154 | Remove patterns for reversed cases. | |
4155 | * out-ns32k.c (const_int): Deleted. | |
4156 | ||
4157 | * rtlanal.c (reg_used_between_p, reg_set_between_p): Use GET_RTX_CLASS. | |
4158 | (reg_set_p_1): If we are setting a MEM, don't think we are setting | |
4159 | registers used in its address. | |
4160 | ||
4161 | * m68k.md (cmpsf, cmpdf, tstsf, tstdf for FPA): Use MATCH_SCRATCH. | |
4162 | * sparc.md (memory store patterns): Likewise. | |
4163 | ||
4164 | * function.c (assign_parms): Function is varargs function if the | |
4165 | last parameter is `__builtin_va_alist_' instead of checking the first | |
4166 | parameter. Normally, this is the same, but some functions in MACH | |
4167 | have named parameters before va_alist. | |
4168 | ||
4169 | * combine.c (simplify_comparison): Remove abort on paradoxical SUBREGs | |
4170 | now that we know they can occur. | |
4171 | ||
4172 | * reload.c (decompose): Handle SCRATCH; it can't conflict with | |
4173 | anything. | |
4174 | (find_reloads): All operands can set earlyclobber, not just REG & MEM. | |
4175 | Add support for "X" constraint. | |
4176 | SCRATCH does not match "g" constraint. | |
4177 | ||
4178 | Sat May 4 14:03:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4179 | ||
4180 | * enquire.c (EPROP): Avoid a <= out if bad is set. | |
4181 | ||
4182 | * SYSCALLS.c: Test bsd4_2 along with BSD. | |
4183 | ||
4184 | Fri May 3 14:26:51 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4185 | ||
4186 | * c-decl.c (pushdecl): Stop looping on type if find error mark. | |
4187 | ||
4188 | * loop.c (invariant_p): An address with a PLUS is not the same as | |
4189 | MEM_IN_STRUCT_P being set. | |
4190 | ||
4191 | * tree.h (TREE_NO_UNUSED_WARNING): New macro. | |
4192 | * stmt.c (warn_if_unused_value): That flag suppresses warnings. | |
4193 | * c-typeck.c (build_unary_op): Set flag when converting postinc. | |
4194 | ||
4195 | Fri May 3 08:09:47 1991 Tom Wood (wood at dg-rtp.dg.com) | |
4196 | ||
4197 | * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Remove workarounds for | |
4198 | register elimination problems. | |
4199 | ||
4200 | Fri May 3 07:14:22 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4201 | ||
4202 | * a29k.md: Fix typo in dmac pattern. | |
4203 | Make many define_splits that convert DFmode and DImode to one word | |
4204 | at a time to operate only after reload completes to improve reg alloc. | |
4205 | (movdf): Correct typo in mfacc. | |
4206 | (rotlsi3): Count is QImode, not SImode. | |
4207 | ||
4208 | * tm-a29kunix.h (BIGGEST_ALIGNMENT): Change to 64. | |
4209 | ||
4210 | * tm-romp.h (OPTIMIZATION_OPTIONS): Enable insn scheduling. | |
4211 | (register definitions): No longer need dummy register and class; | |
4212 | register numbers for FP register change. | |
4213 | * romp.md: Use MATCH_SCRATCH instead of allocating pseudos | |
4214 | to the dummy register class or base register depending on alternative. | |
4215 | (FP insns): Add missing "=" to constraints in CLOBBERs. | |
4216 | (extendqisi2, extendqihi2): Now DEFINE_EXPAND. | |
4217 | (mc03 peephole): Can do if right shift >= 24 bits. | |
4218 | * out-romp.c (reg_15_operand): Remove special case for FP delay slot. | |
4219 | (romp_sa_size, output_fpop, output_loadsave_fpops, output_fpops): | |
4220 | Change floating-point register numbers. | |
4221 | ||
4222 | * combine.c (simplify_shift_const, case for shifts): Verify that | |
4223 | the host word size is wide enough. | |
4224 | Properly handle (ashift (subreg (ashiftrt ...) ...) ...). | |
4225 | ||
4226 | * out-vax.c (print_operand_address, case PLUS): Handle all addresses | |
4227 | accepted by GO_IF_LEGITIMATE_ADDRESS. | |
4228 | ||
4229 | * explow.c (plus_constant): force_const_mem does not necessarily | |
4230 | return a valid address. | |
4231 | * integrate.c (copy_rtx_and_substitute): Likewise. | |
4232 | ||
4233 | * Makefile.in (local-alloc.o): Includes output.h. | |
4234 | * rtl.def (SCRATCH, MATCH_SCRATCH): New RTL codes. | |
4235 | * regs.h (max_scratch): Add definition. | |
4236 | * genconfig.c (walk_insn_part): Handle MATCH_SCRATCH. | |
4237 | * genextract.c (walk_rtx): Likewise. | |
4238 | * genemit.c (max_operand_1): Likewise. | |
4239 | (gen_exp): Emit a SCRATCH for for MATCH_SCRATCH. | |
4240 | (gen_insn): We can create (clobber (scratch)). | |
4241 | * genoutput.c (scan_operands): Handle MATCH_SCRATCH; | |
4242 | use switch instead of if's. | |
4243 | * genrecog.c (make_insn_sequence): We can created (clobber (scratch)). | |
4244 | (add_to_sequence): Handle MATCH_SCRATCH. | |
4245 | * flow.c (life_analysis): Initialize max_scratch. | |
4246 | (propagate_block): Update max_scratch with count from this block. | |
4247 | (mark_set_1): Make REG_UNUSED note for SCRATCH and count it. | |
4248 | * local-alloc.c: Include output.h. | |
4249 | (qty_scratch_rtx): New variable. | |
4250 | (alloc_qty): Rename INSN_NUMBER to BIRTH since that's what it is. | |
4251 | (alloc_qty_for_scratch): New function. | |
4252 | (local_alloc): Account for quantities needed for SCRATCH. | |
4253 | Allocate and initialize qty_scratch_rtx. | |
4254 | (block_alloc): Allocate quantities for SCRATCH operands. | |
4255 | (requires_inout_p): Add "X" constraint. | |
4256 | * recog.c (scratch_operand): New function. | |
4257 | (constrain_operands): SCRATCH matches a register constraint unless | |
4258 | strict. | |
4259 | Add "X" constraint. | |
4260 | * regclass.c (reg_class_record): Add "X" constraint. | |
4261 | * reload1.c (emit_reload_insns): Add SCRATCH to test for operand that | |
4262 | dies right away; update REG_UNUSED note for SCRATCH. | |
4263 | Never need reload insn for SCRATCH, even if no REG_UNUSED note. | |
4264 | * rtlanal.c (reg_mentioned_p, reg_overlap_mentioned_p, rtx_equal_p): | |
4265 | Support SCRATCH. | |
4266 | (volatile_refs_p, side_effects_p, may_trap_p): Likewise. | |
4267 | (inequality_comparisons_p, replace_regs): Likewise. | |
4268 | ||
4269 | * flow.c (mark_set_1): Don't do anything special with partial | |
4270 | assignments; this is already handled by mark_used_regs and we now | |
4271 | want to make LOG_LINKS for these. | |
4272 | ||
4273 | * combine.c: Includes expr.h. | |
4274 | (expand_field_assignment, make_extraction): New functions. | |
4275 | (get_pos_from_mask, make_field_assignment): Likewise. | |
4276 | (can_combine_p): Remove special case for SUBREG in SET_DEST; call | |
4277 | expand_field_assignment instead. | |
4278 | (try_combine): Remove code to handle STRICT_LOW_PART here. | |
4279 | Call expand_field_assignment on SETs in I3. | |
4280 | (find_split_point): Split up simple cases of bitfield assignments. | |
4281 | (subst, case ZERO_EXTRACT): Remove processing of ZERO_EXTRACT in a | |
4282 | SET_DEST from here. | |
4283 | (subst, case SET): Try to convert this into a field assignment by | |
4284 | calling make_field_assignment. | |
4285 | No need to call make_compound_operation for COMPAREs; | |
4286 | make_compound_operation now returns an rtx and is no longer passed | |
4287 | a pointer. | |
4288 | Remove tests for ZERO_EXTRACT in SET_DEST. | |
4289 | (make_compound_operation): Now returns rtx and is passed rtx, instead | |
4290 | of rtx *. | |
4291 | Call make_extraction. | |
4292 | (simplify_comparison): Call make_compound_operation here and remove any | |
4293 | outermost SUBREGs that aren't doing anything. | |
4294 | ||
4295 | * Makefile.in (combine.o): Includes expr.h. | |
4296 | ||
4297 | * expr.c (convert_to_mode): Correct which cases can use gen_lowpart. | |
4298 | ||
4299 | * final.c (final_scan_insn): Don't set INSN_DELETED_P after writing | |
4300 | insn. | |
4301 | ||
4302 | * genoutput.c (main): Don't include aux-output.c in insn-output.c. | |
4303 | Include stdio.h before output.h. | |
4304 | (output_epilogue): Write definitions for all the predicates | |
4305 | placed in `insn_operand_predicate'. | |
4306 | * output.h: No longer need to define operand-predicate functions. | |
4307 | * configure: (m88k/dg): Only difference between xm-m88k{,dgux}.h was | |
4308 | definition of SEPARATE_AUX_OUTPUT, so we don't need xm-m88kdgux.h. | |
4309 | * xm-m88kdgux.h: Deleted. | |
4310 | Fix typo setting `target' in Makefile. | |
4311 | * Makefile.in (AUX_OUTPUT2): Deleted. | |
4312 | (OBJS): Remove AUX_OUTPUT2 and add aux-output.o. | |
4313 | (aux-output2.o): Now aux-output.o. | |
4314 | (insn-output.o): No longer depends on aux-output.c. | |
4315 | * make-m88kdgux (AUX_OUTPUT2): No longer define. | |
4316 | * tm-m68k.h, tm-romp.h, tm-sparc.h: Define functions in out-*.c and | |
4317 | used by insn-output.c. | |
4318 | * tm-m88k.h: Remove conditionalization for SEPARATE_AUX_OUTPUT; now | |
4319 | always done. | |
4320 | No longer define predicate functions; done by genoutput.c. | |
4321 | * tm-mips.h: No longer define SEPARATE_AUX_OUTPUT. | |
4322 | * out-*.c: Add includes previously present in insn-output.c. | |
4323 | * out-sparc.c (output_fp_move_double): No longer static. | |
4324 | (output_sized_memop): No longer need to define asm_out_file here. | |
4325 | (output_function_epilogue): Correct type; function is void, not char *. | |
4326 | ||
4327 | Fri May 3 01:05:44 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
4328 | ||
4329 | * sdbout.c (sdbout_one_type): TYPE_FIELDs may contain other kinds of | |
4330 | _DECL nodes than just FIELD_DECL nodes (in GNU C++, at least). | |
4331 | Don't look through such nodes until further mods are made to handle | |
4332 | them better. | |
4333 | ||
4334 | Thu May 2 14:43:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4335 | ||
4336 | * c-decl.c (finish_enum): Don't store enum type as type of value. | |
4337 | ||
4338 | * c-parse.y (YYPRINT, yyprint): New macro and new function. | |
4339 | ||
4340 | * expmed.c (expand_and): Handle both args constant. | |
4341 | ||
4342 | * expr.c (store_field): Avoid refetching from bitfield if possible. | |
4343 | ||
4344 | * math-68881.h (pow): Negate x if negative when taking log. | |
4345 | ||
4346 | * expr.c (emit_move_insn): Fixed typo in `y1 = change_address' call. | |
4347 | Reenable the code to move objects word at a time. | |
4348 | ||
4349 | Thu May 2 12:29:16 1991 Eric Youngdale (youngdale at v6550c.nrl.navy.mil) | |
4350 | ||
4351 | * cccp.c (hack_vms_include_specification): Modified conversion of | |
4352 | unix filenames to VMS filenames, if no VMS device or directory is | |
4353 | present, and a unix style directory name is present, then use the | |
4354 | first unix directory name as the VMS device spec. This is only | |
4355 | used in '#include <...>' type includes, when the include file has | |
4356 | not been found in the standard locations. | |
4357 | ||
4358 | Thu May 2 10:06:47 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
4359 | ||
4360 | * cplus-decl.c (init_decl_processing): Call init_gc_processing if | |
4361 | -fgc is requested. | |
4362 | * cplus-init.c (build_new): Argument to build_compound_expr must be | |
4363 | a TREE_LIST all the way. The last elt of the chain cannot be an | |
4364 | _EXPR. | |
4365 | ||
4366 | Thu May 2 07:33:50 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4367 | ||
4368 | * expr.c (expand_expr, case CONVERT_EXPR): Pass bitsize to store_field | |
4369 | instead of size in bytes. | |
4370 | ||
4371 | Wed May 1 13:33:58 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
4372 | ||
4373 | * version.c: Bumped version number to 1.93. | |
4374 | ||
4375 | Wed May 1 12:26:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4376 | ||
4377 | * gcc.c (link_command_spec): Pass plain -m to ld. | |
4378 | ||
4379 | * c-decl.c (finish_enum): Clean up re-laying out of type. | |
4380 | ||
4381 | Wed May 1 08:04:44 1991 Michael Tiemann (tiemann at cygnus.com) | |
4382 | ||
4383 | * Makefile.in: Handle new cplus-*.c files. | |
4384 | ||
4385 | * cplus-typeck.c (common_base_type): Make this function recursive. | |
4386 | (build_component_ref): Test whether or not a FIELD_DECL, not whether | |
4387 | or not a VAR_DECL||CONST_DECL||TYPE_DECL. | |
4388 | ||
4389 | * cplus-parse.y: Fixed grammar so that template type decls could be | |
4390 | used. Previously, support existed for template decls following | |
4391 | types, but not as types. | |
4392 | * cplus-pt.c ({push,pop}_template_decls): New functions. | |
4393 | (instantiate_template): Call `push_template_decls'. | |
4394 | (end_template_instantiation): Let `poplevel' restore old bindings. | |
4395 | No need to clear out extra stuff. | |
4396 | (pushclass, popclass): Call `{push,pop}_template_decls' if the class | |
4397 | we are pushing or popping has template arguments. These arguments | |
4398 | go at class level. | |
4399 | ||
4400 | * cplus-method.c (build_opfncall): Test TRY_SECOND before testing | |
4401 | possibly uninitialized XARG2. | |
4402 | ||
4403 | * cplus-lex.c (init_lex): Initialize NODE_TABLE, OPNAME_TAB and | |
4404 | ASSIGNOP_TAB to hold zero. Since these come from malloc'd memory, | |
4405 | we cannot trust them to be initialized on startup. | |
4406 | ||
4407 | * cplus-init.c (expand_aggr_init_1): When initializing through a | |
4408 | TARGET_EXPR for objects of the same type (e.g., X a = X (10);) | |
4409 | use EXP's DECL_RTL as the DECL_RTL of the TARGET_EXPR. | |
4410 | ||
4411 | * cplus-decl2.c (finish_file): Handle new flag `-fgnu-binutils'. | |
4412 | When zero, don't use GNU extensions to a.out format. ???Should be | |
4413 | merged into varasm.c. | |
4414 | ||
4415 | * cplus-class.c: Added support for `dossiers'. This support is | |
4416 | implemented by extending the virtual function table and by giving | |
4417 | all C++ objects a virtual function table to hold it's dossier. | |
4418 | * cplus-decl.c (record_builtin_type): New function to construct | |
4419 | dossier information for built-in types. | |
4420 | (output_builtin_tdesc_entries): To keep repeated information under | |
4421 | control, we only output this information for the file that contains | |
4422 | `main'. | |
4423 | (init_decl_processing): Many dossier-related changes. | |
4424 | (init_lex): Recognize new reserved words `headof' and `classof' if | |
4425 | -fgc. | |
4426 | * cplus-parse.y: Grammar now recognizes `headof' and `classof' | |
4427 | expressions. | |
4428 | * cplus-method.c: Added dossier constructors here. | |
4429 | * cplus-tree.h (CLASSTYPE_DOSSIER): New macro: `dossier' is a new | |
4430 | field in lang_type. | |
4431 | * cplus-typeck.c (convert_for_assignment): Handle | |
4432 | `class_star_type_node'. | |
4433 | ||
4434 | * cplus-class.c: New variable current_class_depth. Used to tell | |
4435 | what class nesting level the compiler is at. | |
4436 | * cplus-decl.c (grokdeclarator): Now supports references to decls | |
4437 | that come from nested types. For example, int foo::bar (foo_tag); | |
4438 | where `foo_tag' is a tag that comes from foo. Previously this was | |
4439 | supported only as int foo::bar (foo::foo_tag); | |
4440 | * cplus-decl2.c (build_push_scope): build a SCOPE_REF node while | |
4441 | pushing into the context for the scope. When `grokdeclarator' sees | |
4442 | one of these nodes (distinuished by its TREE_COMPLEXITY being set to | |
4443 | the current_class_depth), it processes the decl and pops the scope. | |
4444 | ||
4445 | * cplus-class.c (build_vbase_path): Trust objects that are | |
4446 | `fixed_type_p'. Also, don't assume an object is non-null unless | |
4447 | flag says this is explicitly so. InterViews creates and may | |
4448 | manipulate (via delete) lots of null objects. | |
4449 | (build_vfn_reference): Use IS_AGGR_TYPE test on type, not in | |
4450 | INSTANCE. | |
4451 | (resolves_to_fixed_type_p): New argument NONNULL is used in case we | |
4452 | know and object to be non-zero. All callers changed. | |
4453 | ||
4454 | * cplus-call.c: New file, from file cplus-class.c. Contains code to | |
4455 | generate method calls. | |
4456 | * cplus-class.h: New file, contains common declarations for | |
4457 | cplus-class.c and cplus-call.c. | |
4458 | ||
4459 | * cplus-class.c (finish_struct_bits): Don't leave last_conversions | |
4460 | uninitialized. | |
4461 | ||
4462 | Tue Apr 30 17:14:00 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4463 | ||
4464 | * expr.c (expand_expr): | |
4465 | Preserve volatility when changing ARRAY_REF to use a pointer. | |
4466 | ||
4467 | * vax.md (indirect_jump): Use parens around register, not @. | |
4468 | ||
4469 | * fixincludes (machine/cpu.h): Delete superfluous `static'. | |
4470 | ||
4471 | * tm-decstatn.h (CPP_PREDEFINES): Define __mips and __LANGUAGE_C. | |
4472 | ||
4473 | * explow.c (allocate_dynamic_stack_space): Compensate if | |
4474 | STACK_POINTER_OFFSET throws off the alignment. | |
4475 | ||
4476 | * loop.c (strength_reduce): Typos setting not_every_iteration. | |
4477 | ||
4478 | Tue Apr 30 16:10:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4479 | ||
4480 | * vax.md (bicb): Fix typo that caused operand not to be negated. | |
4481 | (jlbs/jlbc): Operand[0] cannot be a constant. | |
4482 | ||
4483 | * rtl.h: Put NOTE_INSN_... codes in order. | |
4484 | (find_regno_note): Add missing definition. | |
4485 | ||
4486 | * reload.c (find_reloads_address): Handle an indexed stack slot that | |
4487 | is made out of range by frame pointer elimination. | |
4488 | ||
4489 | Tue Apr 30 14:09:28 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4490 | ||
4491 | * toplev.c (compile_file): Output gcc2_compiled, not gcc_compiled. | |
4492 | * tm-tower-as.h (ASM_IDENTIFY_GCC): Likewise. | |
4493 | ||
4494 | Tue Apr 30 13:56:40 1991 Tom Wood (wood at dg-rtp.dg.com) | |
4495 | ||
4496 | * varasm.c (output_addressed_constants): Return and indication of | |
4497 | whether the variable requires link-time relocations. | |
4498 | (assemble_variable, get_or_assign_label): Use this value when | |
4499 | choosing the section. Use the data section for variables and | |
4500 | constants that are otherwise read-only when -fpic is given and | |
4501 | when link-time relocations are required. | |
4502 | * tm-*.h (SELECT_SECTION): Accept a new second parameter RELOC. | |
4503 | ||
4504 | Tue Apr 30 10:24:36 1991 Tom Wood (wood at dg-rtp.dg.com) | |
4505 | ||
4506 | * rtl.h (NOTE_INSN_LOOP_VTOP), rtl.c (note_insn_name): Add a new | |
4507 | note indicating the virtual top of a loop. | |
4508 | * jump.c (duplicate_loop_exit_test): Mark the duplicated exit code | |
4509 | in the loop as the virtual top of the converted loop. | |
4510 | (squeeze_notes): Move loop-vtop notes as well. | |
4511 | * loop.c (scan_loop): When a loop-vtop note is encountered, reset | |
4512 | `maybe_never' and `call_passed'. | |
4513 | (strength_reduce): Similarly, reset `not_every_iteration'. | |
4514 | ||
4515 | Tue Apr 30 08:15:50 1991 Michael Meissner (meissner at osf.org) | |
4516 | ||
4517 | * expr.c (do_store_flag): Move the join label after setting the | |
4518 | target value to 0, rather than before, which generates code that | |
4519 | always stores 0 into the target if the machine does not have a | |
4520 | builtin scc operation. | |
4521 | ||
4522 | Tue Apr 30 06:26:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4523 | ||
4524 | * reload1.c (reload): When making reg_equiv_mem and reg_equiv_address | |
4525 | from reg_equiv_memory_loc, clear the one we aren't setting; it might | |
4526 | have been previously set. | |
4527 | ||
4528 | * final.c (final_scan_insn): Correctly handle when the first insn in a | |
4529 | SEQUENCE is a JUMP_INSN that forces restoration of a comparison | |
4530 | previously thought unnecessary. | |
4531 | ||
4532 | * fold-const.c (fold, case PLUS_EXPR): If we have 2 * real_cst, | |
4533 | fold into a new constant instead of making real_cst + real_cst. | |
4534 | ||
4535 | Mon Apr 29 23:09:17 1991 Ken Raeburn (raeburn at watch.com) | |
4536 | ||
4537 | * cplus-decl.c (output_builtin_tdesc_entries): Corrected | |
4538 | declaration of permanent_obstack. | |
4539 | (init_decl_processing): Record declaration of int with name "int" | |
4540 | rather than null. | |
4541 | (finish_decl): Fix typo in comment. | |
4542 | ||
4543 | * cplus-class.c (finish_struct): Made error message for union | |
4544 | member requiring constructor/destructor a little tidier. | |
4545 | (resolve_scope_to_name): Look at fields of current type as well as | |
4546 | tags, in case of local typedefs. | |
4547 | (build_method_call): Permit explicit call of destructor in class | |
4548 | that doesn't have one. (That's what the ARM says....) | |
4549 | ||
4550 | * cplus-decl.c (set_nested_typename): New function, extracted from | |
4551 | within pushtag. Extended to deal with null classname. | |
4552 | (pushtag): Call it. | |
4553 | (pushdecl): For a TYPE_DECL, ensure that the nested typename gets | |
4554 | set. | |
4555 | (pushdecl_class_level): Ditto. | |
4556 | (constructor_name): Test various assertions. | |
4557 | (hack_incomplete_structures): If type is a class template, punt. | |
4558 | ||
4559 | * cplus-input.c (getch): Renamed from get_character. Callers | |
4560 | changed. | |
4561 | cplus-lex.c (old getch): Deleted. | |
4562 | ||
4563 | * cplus-lex.c (save_pending_input, restore_pending_input): New | |
4564 | functions for saving and restoring lexer state. | |
4565 | (process_next_inline): Restore lexer state after each function. | |
4566 | cplus-pt.c (end_template_instantiation): Ditto. | |
4567 | cplus-input.c (struct input_source, getch, feed_input): Preserve | |
4568 | putback_char and lexer state. | |
4569 | ||
4570 | * cplus-input.c (getch): Return magic cookie on end of saved input | |
4571 | for lexer to recognize. | |
4572 | cplus-lex.c (yylex): Turn it into END_OF_SAVED_INPUT. | |
4573 | (process_next_inline): Require it after inline function body. | |
4574 | ||
4575 | * cplus-lex.c (do_pending_inlines): Don't save away current | |
4576 | file/line-no info; character input processing should do that. | |
4577 | (yyungetc): Turn conditional abort into assertion test. | |
4578 | (note_list_got_semicolon): Since variable "type" is available, use | |
4579 | it rather than recompute. | |
4580 | (identifier_type): Now static. | |
4581 | (yylex): Warn about conflicts with class template expansion names. | |
4582 | ||
4583 | * cplus-parse.y (temporary_scope): New variable. | |
4584 | (object and scoped_id actions): Set it to current type. | |
4585 | (many other actions): Clear it. | |
4586 | (scoped_typename): Now derivable also from scoped_id and TYPENAME. | |
4587 | cplus-lex.c (yylex): If temporary_scope is set, use it to | |
4588 | determine type of current token being examined, instead of looking | |
4589 | always in the global scope. (Can't properly do nested template | |
4590 | classes otherwise.) | |
4591 | ||
4592 | * cplus-ptree.c (print_lang_decl): Print out template-info, | |
4593 | original-name, decl-main-variant, and pending-inline-info nodes if | |
4594 | not null. | |
4595 | ||
4596 | * cplus-pt.c (mangle_class_name_for_template): For negative | |
4597 | numbers, use "m" prefix rather than printf's "-". | |
4598 | (overload_template_name): Test more assertions. Use | |
4599 | SET_IDENTIFIER_TYPE_VALUE macro. | |
4600 | (lookup_template_class): Assert template decl node is non-null. | |
4601 | Push to permanent obstacks for new allocations. | |
4602 | (instantiate_template): Return new class type in a list. | |
4603 | ||
4604 | * cplus-pt.c (undo_template_name_overload): Clear type local | |
4605 | definition of template name. | |
4606 | (end_template_instantiation): Call it. | |
4607 | cplus-parse.y (structsp actions): Ditto. | |
4608 | (named_class_head_sans_basetype): Don't call | |
4609 | overload_template_name here. | |
4610 | (named_class_head): Call xref_tag, to define a tag, before calling | |
4611 | it here. | |
4612 | ||
4613 | * cplus-parse.y (tmpl.1, tmpl.2): Delete type declarations, since | |
4614 | they have no values. | |
4615 | (yyprint, YYPRINT): New function and macro to work with debugging | |
4616 | code added to bison. | |
4617 | (datadef -> template_header... actions): Assign yychar, rather | |
4618 | than calling yyungetc and yylex. Require trailing semicolon. | |
4619 | (fn.def1 -> PRE_PARSED_FUNCTION_DECL action): Preserve all of | |
4620 | terminal value, instead of just TREE_PURPOSE. | |
4621 | (tmpl.1 action): Do instantiation only if '{' or ':' not found. | |
4622 | (template_instantiation): Call overload_template_name right away. | |
4623 | (primary -> .scope new '(' typename ')' '[' ...): Detect and warn | |
4624 | about this construct, which appears to be recognizeable, though | |
4625 | disallowed by the ARM. | |
4626 | (primary -> delete[]): Return error_mark_node. | |
4627 | (primary -> obj TYPESPEC::~TYPESPEC()): Catch, parse as valid. | |
4628 | Returned value not determined yet. | |
4629 | (typespec): No longer derived from PTYPENAME. | |
4630 | (LC): Added missing semicolon at end of rule. | |
4631 | (stmt): A PTYPENAME can also be used as a label name. | |
4632 | ||
4633 | Mon Apr 29 22:18:47 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
4634 | ||
4635 | * tm-att386.h (ASM_OUTPUT_LOCAL): Align static local variables. | |
4636 | ||
4637 | Mon Apr 29 15:20:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4638 | ||
4639 | * fold-const.c (fold): Don't assume an address is nonzero. | |
4640 | * cse.c (fold_rtx): Likewise. | |
4641 | ||
4642 | * stmt.c (warn_if_unused_value): No warning for cast of cast of modify. | |
4643 | ||
4644 | * Makefile.in (USER_H): Remove float.h. | |
4645 | ||
4646 | Mon Apr 29 13:46:48 1991 Jim Wilson (wilson at cygnus.com) | |
4647 | ||
4648 | * loop.c (scan_loop): When see a REG_EQUAL note, check for both | |
4649 | the move_insn and the REG_RETVAL case, since they can occur together. | |
4650 | (move_movables): For the move_insn case, handle library calls just | |
4651 | like the older normal case code below, that is, skip to the end of a | |
4652 | library call when when see a REG_LIBCALL note, and delete an entire | |
4653 | library call if when see a REG_RETVAL note. | |
4654 | ||
4655 | Mon Apr 29 12:58:19 1991 Jim Wilson (wilson at cygnus.com) | |
4656 | ||
4657 | * sched.c: (schedule_block): Rewrite code that computes which | |
4658 | registers are live at the end of the block. Compute this from | |
4659 | basic_block_live_at_start info of current block, instead of from | |
4660 | all reachable blocks. Previous code failed if one of the | |
4661 | reachable blocks consisted of dead code. | |
4662 | (sched_note_set): Set bb_live_regs when DEATH is false. | |
4663 | ||
4664 | * sched.c: Update copyright. Correct various problems with | |
4665 | indentation and white space. | |
4666 | (canon_rtx): Delete obsolete code handling INSN_LIST rtx. Add | |
4667 | code to recurse on the operands of a PLUS rtx. | |
4668 | (find_symbolic_term): New function. Recursively search an rtx for | |
4669 | a SYMBOL_REF or a LABEL_REF and return pointer to one if found. | |
4670 | (memrefs_conflict_p): No longer needs to call canon_rtx on | |
4671 | operands of a plus. Now handles case of two addresses with | |
4672 | different base addresses. | |
4673 | (schedule_block): Don't set INSN_DELETED_P bit of ignored notes. | |
4674 | Verify that REG_DEAD notes have a register value. | |
4675 | (sched_analyze_1): Ifdef out obsolete code which calculates cc0 | |
4676 | dependencies. | |
4677 | (sched_analyze): Likewise. | |
4678 | (schedule_block): Likewise. | |
4679 | (launch_links): Delete obsolete code for handling SPARC 'orcc' insns. | |
4680 | ||
4681 | Mon Apr 29 12:09:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
4682 | ||
4683 | * configure: Allow spaces between options and their args. | |
4684 | ||
4685 | Mon Apr 29 06:35:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4686 | ||
4687 | * jump.c (jump_optimize): Don't emit jump to next insn; this would | |
4688 | cause jump_optimize to loop. | |
4689 | (jump_optimize, duplicate_loop_end_test, do_cross_jump): Never put | |
4690 | insn in jump_chain if its INSN_UID is too large. | |
4691 | (redirect_tablejump): Likewise. | |
4692 | ||
4693 | Sun Apr 28 08:00:01 1991 Michael Tiemann (tiemann at cygnus.com) | |
4694 | ||
4695 | * cplus-decl.c (init_decl_processing): Merge changes in builtin | |
4696 | function handling to match the way that c-decl.c now works. | |
4697 | Also add global variables to support that change. | |
4698 | (define_function): Ditto. | |
4699 | ||
4700 | * cplus-decl2.c: Add flags for gc and xref. | |
4701 | * cplus-tree.h (DECL_GC_OFFEST): New macro for gc. | |
4702 | * cplus-tree.h: Rearrange CLASSTYPE_ASSOC and CLASSTYPE_BASETYPES so | |
4703 | that the former now uses TYPE_LANG_SPECIFIC storage, and the latter | |
4704 | uses TYPE_BASETYPES. | |
4705 | * cplus-tree.h: Change overload names of new and delete to `nw' and | |
4706 | `dl'. Formerly, `new' was being seen as `ne', the encoding for `not | |
4707 | equal'. | |
4708 | ||
4709 | * cplus-xref.c: New file. Adds support for generating | |
4710 | cross-reference information such as a class browser or program | |
4711 | analyzer would use. | |
4712 | ||
4713 | * cplus-gc.c: New file. Add support for garbage collection. | |
4714 | * cplus-decl.c (finish_decl): Tie decls to their places in the | |
4715 | garbage collector. | |
4716 | * cplus-init.c (build_new): Added hooks for gc. | |
4717 | * cplus-typeck.c (convert_arguments): protect arguments from the | |
4718 | garbage collector if -fgc. | |
4719 | (build_modify_expr): More gc-related changes. | |
4720 | ||
4721 | Fri Apr 26 07:31:26 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4722 | ||
4723 | * integrate.c (expand_inline_function): Add missing increment of I. | |
4724 | ||
4725 | Thu Apr 25 11:07:11 1991 Tom Wood (wood at dg-rtp.dg.com) | |
4726 | ||
4727 | * m88k.md (various patterns): Use nonimmediate_operand in place of | |
4728 | reg_or_nonsymb_mem_operand and constraint `m' in place of `Q'. | |
4729 | * tm-m88k.h (EXTRA_CONSTRAINT): Only needed for a call address. | |
4730 | * out-m88k.c: reg_or_nonsymb_mem_operand and symbolic_memory_p are | |
4731 | now unused. | |
4732 | ||
4733 | * m88k.md (symbolic store patterns): These patterns are all | |
4734 | unnecessary and are deleted. | |
4735 | * out-m88k.c (emit_move_sequence): Eliminate the case that | |
4736 | generated a CLOBBER. This was intended to use the symbolic store | |
4737 | patterns, but isn't needed. | |
4738 | (symbolic_memory_operand): Delete, no longer used. | |
4739 | (output_prologue): Don't check for suspicious register elimination | |
4740 | changes. | |
4741 | * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Treat the frame pointer | |
4742 | like the argument pointer as both may change to REG+SMALLINT. | |
4743 | ||
4744 | Tue Apr 23 15:08:03 1991 Jim Wilson (wilson at cygnus.com) | |
4745 | ||
4746 | * out-sparc.c (output_scc_insn): Clean up and expand comments. | |
4747 | Don't assume that JUMP_LABEL fields are always valid, they aren't | |
4748 | when compiling without optimization. | |
4749 | ||
4750 | Mon Apr 22 13:56:43 1991 Michael Tiemann (tiemann at cygnus.com) | |
4751 | ||
4752 | * cplus-class.c (prepare_fresh_vtable): Thoroughly update virtual | |
4753 | function tables that come from baseclasses to contain the latest | |
4754 | overrides from derived classes. This was done (in a different way) | |
4755 | for virtual baseclasses, but left undone for non-virtual | |
4756 | baseclasses. | |
4757 | (finish_struct_bits): Use assoc lists instead of class basetype list | |
4758 | to walk through the classes base classes. This gives us more | |
4759 | relavant classes to check against. | |
4760 | * cplus-init.c (init_vfields): New function to recursively walk | |
4761 | objects and make sure their vfields are initialized. | |
4762 | * cplus-init.c (emit_base_init): Call `init_vfields' from top level. | |
4763 | ||
4764 | * cplus-tree.h (TYPE_IDENTIFIER): New macro, gives the | |
4765 | IDENTIFIER_NODE for a given aggr TYPE. | |
4766 | * cplus-class.c (add_method): Use TYPE_IDENTIFIER. | |
4767 | * cplus-cvt.c (various places): Ditto. | |
4768 | ||
4769 | * cplus-class.c (finish_struct): Add TYPE_DECLs to the list of a | |
4770 | class's members that come from the types implicitly declared tags. | |
4771 | ||
4772 | * cplus-decl.c (grokdeclarator): If a function is declared `static | |
4773 | inline', don't give it global visibility, regardless of what #pragma | |
4774 | interface/implementation suggests. | |
4775 | ||
4776 | * cplus-decl.c (finish_function): ??? Questionable change for PIC: | |
4777 | don't let constructors and destructors that manipulate vtables go | |
4778 | inline, since this somehow reduces page sharing. Really??? | |
4779 | ||
4780 | * cplus-except.c (init_exception_processing): Use `pushdecl' to | |
4781 | install global info that this function sets up. That way later | |
4782 | decls can override this info (such as with an inline function). | |
4783 | ||
4784 | * cplus-init.c (build_vec_delete): Set TREE_SIDE_EFFECTS of | |
4785 | controller. Otherwise the loop won't execute. | |
4786 | ||
4787 | * cplus-method.c (prepare_inline): Rewritten and simplified. | |
4788 | (do_inline_method_hair): Ditto. | |
4789 | ||
4790 | * cplus-tree.c (lang_output_debug_info): Only output nested type if | |
4791 | we would also output enclosing type. | |
4792 | ||
4793 | * cplus-typekc.c (c_expand_return): Use pseudo for intermediate | |
4794 | return value if necessary. GCC can't read the function return | |
4795 | registers in an inline functino when the return value is being | |
4796 | ignored. | |
4797 | ||
4798 | Mon Apr 22 14:36:01 1991 Jim Wilson (wilson at cygnus.com) | |
4799 | ||
4800 | * sched.c (init_alias_analysis): Handle REG_EQUIV notes just like | |
4801 | REG_EQUAL notes. | |
4802 | ||
4803 | * sched.c (sched_analyze_2): Don't recurse on constant rtx's. | |
4804 | This is necessary so that the cc0_rtx in CONST_DOUBLEs won't be seen. | |
4805 | (sched_analyze): Call sched_analyze_insn for JUMP_INSNS also, so | |
4806 | that cc0 users will get an automatic dependence on their previous | |
4807 | insn. | |
4808 | (launch_links): Ifdef out special treatment of insns which set the | |
4809 | condition codes. This is obsolete, and was SPARC specific anyways. | |
4810 | (new_sometimes_live): Clarify code that aborts if regno is greater | |
4811 | than max_regno. | |
4812 | (schedule_block): If the last insn sets cc0, then it must always | |
4813 | be left in place. | |
4814 | (new_insn_dead_notes): New function. Determines whether a SET or | |
4815 | CLOBBER in an insn created by splitting needs a REG_DEAD or | |
4816 | REG_UNUSED note added. | |
4817 | (update_links): Ignore REG_EQUIV and REG_EQUAL notes on insns that | |
4818 | have more than one set. Generalize flow analysis of the sets in | |
4819 | the new insns so that it can handle new insns which have multiple | |
4820 | sets or new clobbers. | |
4821 | ||
4822 | Mon Apr 22 08:15:50 1991 Michael Meissner (meissner at osf.org) | |
4823 | ||
4824 | * gcc.c (input_suffix): New global var; holds current file's suffix. | |
4825 | (handle_braces): Substitute X in %{.S:X} if the current file has | |
4826 | suffix .S. Similarly, substitute X in %{!.S:X} if the current file | |
4827 | does not have suffix .S. | |
4828 | (validate_switches): Ignore .S part in %{.S:X} construct. | |
4829 | ||
4830 | Sat Apr 20 14:41:17 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
4831 | ||
4832 | * final.c (leaf_function_p): Define this in any event. | |
4833 | ||
4834 | Sat Apr 20 10:45:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4835 | ||
4836 | * loop.c (check_dbra_loop): Use GET_RTX_CLASS when appropriate. | |
4837 | Check for setting biv with single_set rather than only allowing a SET. | |
4838 | If a loop has a `break', we can't reverse it. | |
4839 | ||
4840 | * cse.c (cse_insn): Fold inside operands of a CALL (mostly to find the | |
4841 | best address form to use). | |
4842 | ||
4843 | * cse.c (simplify_unary_operation): Convert (neg (neg ..)) to NEG. | |
4844 | Similarly for NOT. | |
4845 | (simplify_binary_operation): Simplify things like (-a) + b. | |
4846 | Convert UDIV with divisor a constant power of two into LSHIFTRT. | |
4847 | Similarly for UMOD. | |
4848 | Only fold shifts of a zero by a value into zero if the value has | |
4849 | no side effects. | |
4850 | Remove code to handle negative shift counts. | |
4851 | ||
4852 | * tm-a29k.h (OPTIMIZATION_OPTIONS): Allow insn scheduling to be | |
4853 | enabled, now that it works for the 29k. | |
4854 | ||
4855 | * tm-rs6000.h (LINK_SPEC): Add "-bhalt:4" to LINK_SPEC (don't ask!). | |
4856 | ||
4857 | Fri Apr 19 13:18:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4858 | ||
4859 | * explow.c (memory_address): Test `cse_not_expected' instead of | |
4860 | `optimize' so that we don't make new pseudos after flow is run. | |
4861 | ||
4862 | * genflags.c (gen_insn): If extra condition is more than one line, | |
4863 | use \'s to make proper multi-line macro definition. | |
4864 | ||
4865 | Thu Apr 18 13:40:01 1991 Jim Wilson (wilson at cygnus.com) | |
4866 | ||
4867 | * loop.c (check_dbra_loop): Reenable no_use_except_for_counting code | |
4868 | which was mistakenly ifdefed out as buggy. The actual bug was in | |
4869 | strength_reduce, and has already been fixed. | |
4870 | ||
4871 | Thu Apr 18 09:47:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
4872 | ||
4873 | * loop.c (record_giv): Allow for the case where regno_last_uid | |
4874 | of DEST_REG has been moved or deleted. | |
4875 | ||
4876 | * rtlanal.c (replace_regs): Add missing argument in recursive call. | |
4877 | ||
4878 | * recog.c (nonmemory_operand): Only call general_operand for | |
4879 | a SUBREG if it is a MEM, just like register_operand. | |
4880 | ||
4881 | * local-alloc.c (block_alloc): Handle case where the last insn of | |
4882 | a REG_NO_CONFLICT block requires some CLOBBERs, but is a single SET. | |
4883 | ||
4884 | * out-romp.c, out-rs6000.c (next_insn_tests_no_unsigned): If a | |
4885 | REG_UNUSED note for (cc0) is present on INSN, return 1. | |
4886 | ||
4887 | * jump.c (delete_jump): If the previous insn sets cc0 but we can't | |
4888 | delete it for some reason, add a REG_UNUSED note for cc0 in that insn. | |
4889 | ||
4890 | * out-a29k.c: Rename input_operand to in_operand and output_operand | |
4891 | to out_operand to avoid conflict with output_operand in final.c. | |
4892 | * a29k.md: Likewise. | |
4893 | (call patterns): Don't put SYMBOL_REF in MEM for recursive call; | |
4894 | it might not be recursive if inlined; let cse do it later. | |
4895 | * tm-a29k.h (RTX_COST, ADDRESS_COST): All addresses have the same | |
4896 | cost, but MEM is expensive. | |
4897 | ||
4898 | Tue Apr 16 16:01:47 1991 Michael Meissner (meissner at osf.org) | |
4899 | ||
4900 | * configure: Add osfrose, osf, and mips/dec-osfrose. | |
4901 | ||
4902 | * out-mips.c (toplevel): Include necessary include files so | |
4903 | out-mips.c can be compiled separately. | |
4904 | (g_switch_value): New variable to hold -G xx value. | |
4905 | (g_switch_set): New variable to indicate if -G xx used. | |
4906 | (current_function_file): New variable to hold last .file. | |
4907 | (file_in_function_warning): New variable to hold if we've warned the | |
4908 | user that ECOFF can't switch files within a function. | |
4909 | (mips_rtx_classify): New array to classify an insn. | |
4910 | (mips_reg_names): New array to hold the register names. | |
4911 | REGISTER_NAMES initializes all elements to point into here, and | |
4912 | override_options resets the names if -mrnames is used. | |
4913 | (mips_sw_reg_names): New array to hold the alternate register names. | |
4914 | (mips_regno_to_class): New array to map hard register number to | |
4915 | register class. | |
4916 | (uns_arith_operand): Rewrite so call to register_operand is done | |
4917 | last, not first. | |
4918 | (arith_operand): ditto. | |
4919 | (arith32_operand): ditto. | |
4920 | (large_int): New function to return true if int constant will take 2 | |
4921 | instructions to load into a register. | |
4922 | (reg_or_0_operand): New function to return true if a register or | |
4923 | constant 0 is the operand for use in store patterns. | |
4924 | (md_register_operand): New function to return true if either the hi | |
4925 | or lo register is used. | |
4926 | (mips_const_double_ok): New function to return true if a | |
4927 | CONST_DOUBLE can be used as a constant in a RTL expression. At | |
4928 | present, only DImode constants and 0.0 is allowed. | |
4929 | (simple_memory_operand): New function to return true if a memory | |
4930 | reference is a simple register + small offset. | |
4931 | (gp_memory_operand): New function to return true if a memory | |
4932 | reference uses the global pointer. | |
4933 | (mips_move_instructions): New function to handle all data movement | |
4934 | of one word or less. | |
4935 | (mips_move_2words_instructions): New function to handle all data | |
4936 | movement of two words. | |
4937 | (init_cumulative_args): Remove print_tree debug call. | |
4938 | (function_arg_partial_nregs): Fix bug in passing structures where | |
4939 | the wrong field was used. | |
4940 | (print_options): Enable this function, body was in #if 0. | |
4941 | (override_options): Spell function name with two r's. Change how | |
4942 | the -G xx and -mGx options are handled. If neither passed use the | |
4943 | appropriate default. If -mgas make sure debug format is DBX, and if | |
4944 | not -mgas, use SDB debug format. If -mrnames and -mgas, give an | |
4945 | error message, otherwise set up mips_reg_names. Set up the | |
4946 | mips_rtx_classify array. | |
4947 | (print_options): New function instead of a long macro. Add %C to | |
4948 | print part of the opcode for a branch condition, %N to print the | |
4949 | inverted branch condition, %( to do .set noreorder, %) to do .set | |
4950 | reorder, %[ to do .set noat, %] to do .set at, %& to do .set | |
4951 | noreorder if filling delay slots, and %# to print nop if delay slot | |
4952 | not filled. | |
4953 | (print_operand_address): New function instead of a long macro. | |
4954 | (compute_frame_size): New function to abstract all the frame related | |
4955 | information like frame size, saved registers, etc. | |
4956 | (save_restore): Common function between the prologue and epilogue to | |
4957 | save/restore the registers in the proper order. Make $31 saved at | |
4958 | function pc +4. | |
4959 | (function_prologue): Call compute_frame_size and save_restore. Make | |
4960 | sure the appropriate .file is done before any statement in the | |
4961 | prologue since the MIPS ECOFF requires this. | |
4962 | (function_epilogue): Call compute_frame_size and save_restore. | |
4963 | ||
4964 | * tm-decstatn.h (CPP_PREDEFINES): Define the appropriate macros. | |
4965 | (*_SPEC): Move the DECstation related specs here from tm-mips.h. | |
4966 | ||
4967 | * tm-decrose.h (new file): File to support OSF/1 with OSF/rose | |
4968 | object format. | |
4969 | ||
4970 | * tm-mips-sysv.h (CPP_PREDEFINES): Define the appropriate macros. | |
4971 | (*_SPEC): Move the DECstation related specs here from tm-mips.h. | |
4972 | ||
4973 | * tm-mips-bsd.h (CPP_PREDEFINES): Define the appropriate macros. | |
4974 | (*_SPEC): Move the DECstation related specs here from tm-mips.h. | |
4975 | ||
4976 | * tm-mips-news.h (CPP_PREDEFINES): Define the appropriate macros. | |
4977 | (*_SPEC): Move the DECstation related specs here from tm-mips.h. | |
4978 | ||
4979 | * tm-iris.h (CPP_PREDEFINES): Define the appropriate macros. | |
4980 | (*_SPEC): Move the DECstation related specs here from tm-mips.h. | |
4981 | (SET_FILE_NUMBER): Define, so that .file number is always 1. | |
4982 | (LABEL_AFTER_LOC): Define, so that a label appears after .loc. | |
4983 | (STACK_ARGS_ADJUST): Iris frames require 32 bytes at the top of the | |
4984 | call frame instead of the normal MIPS 16. | |
4985 | ||
4986 | * mips.md (all): Add first cut at attributes to identify insn type. | |
4987 | (all): Where appropriate, use @ form for alternates, instead of | |
4988 | using C code. | |
4989 | (define_delay): Put arithmetic and one word stores in call, jump, | |
4990 | branch delay slots. | |
4991 | (define_function_unit): Add functional unit definitions for memory | |
4992 | and integer multiply/divide. | |
4993 | (anonymous add/subtract insn): Remove support for reg + large offset | |
4994 | that omitting the frame pointer caused in 1.xx to see if it is | |
4995 | needed anymore. | |
4996 | (mulsi3): Add clobbers for the hi/lo registers. Add a define_split | |
4997 | and an anonymous define_insn to separate the mult instruction from | |
4998 | the mflo. | |
4999 | (divmodsi4): Add clobbers for the hi/lo registers. | |
5000 | (udivmodsi4): Add clobbers for the hi/lo registers. | |
5001 | (divsi3): Add clobbers for the hi/lo registers. Restrict divides | |
5002 | and modulus to register / register. | |
5003 | (modsi3): ditto. | |
5004 | (udivsi3): ditto. | |
5005 | (ymodsi3): ditto. | |
5006 | (divide peepholes): Add two peepholes to catch divide followed by | |
5007 | modulus of the same values. | |
5008 | (anddi3): Remove pattern, use default behavior. | |
5009 | (iordi3): Remove pattern, use default behavior. | |
5010 | (xordi3): Remove pattern, use default behavior. | |
5011 | (truncsiqi2): Remove pattern, use default behavior. | |
5012 | (truncsihi2): Remove pattern, use default behavior. | |
5013 | (trunchiqi2): Remove pattern, use default behavior. | |
5014 | (truncdfsf2): Remove asm comment. | |
5015 | (extendhisi2): Add a define_split for shift case. | |
5016 | (extendqisi2): Add a define_split for shift case. | |
5017 | (extendqihi2): Add a define_split for shift case. | |
5018 | (movdi): Turn into a define_expand to guarantee that memory <-> | |
5019 | memory moves go through a register. | |
5020 | (movsi): ditto. | |
5021 | (movhi): ditto. | |
5022 | (movqi): ditto. | |
5023 | (movsf): ditto. | |
5024 | (movdf): ditto. | |
5025 | (movdi_internal): new define_insn. Add fp registers to the | |
5026 | alternatives. Call mips_move_2words_instructions to do the actual | |
5027 | movement. Require memory addresses to be offsetable. | |
5028 | (movdf_internal): ditto. | |
5029 | (movsi_internal): new define_insn. Add storing 0 to memory | |
5030 | directly using $0. Add transfer to/from multiply/divide registers, | |
5031 | and to the fp status register. Call mips_move_instructions to do | |
5032 | the actual work. | |
5033 | (movhi_internal): ditto. | |
5034 | (movqi_internal): ditto. | |
5035 | (movsf_internal): ditto. | |
5036 | (jump): Add %& to turn on .set noreorder if filling delay slot. | |
5037 | (tablejump): Ditto. | |
5038 | (call): Ditto. | |
5039 | (call_value): Ditto. | |
5040 | (indirect_jump): New required pattern, add %& for delay slot. | |
5041 | (nop): Use %( %) to turn on/off .set noreorder. | |
5042 | (probe): Use %[ %] to turn on/off .set noat. | |
5043 | ||
5044 | * tm-mips.h (abort): Define abort to be fancy_abort for now. | |
5045 | (toplevel): Move all extern's to the start of the file, rather than | |
5046 | scattered throughout. | |
5047 | (OPTIMIZATION_OPTIONS): New macro, -O sets -fomit-frame-pointer, and | |
5048 | -fdelayed-branch. -O2 sets -fstrength-reduce, -fcse-follow-jumps, | |
5049 | -fexpensive-optimizations, -fthread-jumps, -frerun-cse-after-loop. | |
5050 | -O3 sets -finline-functions. | |
5051 | (*_SPEC): Move most of the target specific spec's to the appropriate | |
5052 | file, rather than defining them in tm-mips.h. Defaults are for MIPS | |
5053 | RISC-OS with default system. | |
5054 | (CPP_SPEC): If preprocessing .S files, define LANGUAGE_ASSEMBLY | |
5055 | instead of LANGUAGE_C. | |
5056 | (MIPS_VERSION): Add meissner version number. | |
5057 | (MIPS_DEBUGGING_INFO): Define this for the future. | |
5058 | (TARGET_*): reorder which bit means what. Add bits so we can tell | |
5059 | whether any of the -mG[012] options were used. Redefine some debug | |
5060 | switches. | |
5061 | (BYTES_BIG_ENDIAN): Always define to 0/1 now. | |
5062 | (WORDS_BIG_ENDIAN): Always define to 0/1 now. | |
5063 | (MAX_PARM_BOUNDARY): Delete, since it's no longer used. | |
5064 | (BIGGEST_FIELD_ALIGNMENT): Define to be 64. | |
5065 | (CONSTANT_ALIGNMENT): New macro, make sure strings are aligned. | |
5066 | (DATA_ALIGNMENT): New macro, make sure byte arrays are aligned. | |
5067 | (FIRST_PSEUDO_REGISTER): Bump to 67, add hi, lo, fcr31. | |
5068 | (FIXED_REGISTERS): Add initializations for hi, lo, and fcr31. | |
5069 | (CALL_USED_REGISTERS): Add initializations for hi, lo, and fcr31. | |
5070 | (MD_REG_P): New macro to return if hi/lo register. | |
5071 | (ST_REG_P): New macro to return if fp control register. | |
5072 | (HARD_REGNO_NREGS): Return 4 for single precision complex. | |
5073 | (MODES_TIEABLE_P): Add complex float type support. | |
5074 | (FRAME_POINTER_REQUIRED): Make this always 0. | |
5075 | (NO_RECURSIVE_FUNCTION_CSE): New macro, define as 1. | |
5076 | (enum reg_class): Add class for the hi register, lo register, either | |
5077 | hi or lo registers, status registers. | |
5078 | (REG_CLASS_NAMES): Support new register classes. | |
5079 | (REG_CLASS_CONTENTS): ditto. | |
5080 | (REG_CLASS_FROM_LETTER): ditto. | |
5081 | (REGNO_REG_CLASS): Use an array to map register # -> class. | |
5082 | (CONST_OK_FOR_LETTER_P): Add `L' for constants which have bottom 16 | |
5083 | bits all zero, and `M' which require two instructions to load. | |
5084 | (CONST_DOUBLE_OK_FOR_LETTER_P): Use `CONST_DOUBLE_HIGH' and | |
5085 | `CONST_DOUBLE_LOW'. | |
5086 | (EXTRA_CONSTRAINT): New macro, `Q' for gp memory references, and `R' | |
5087 | for reg + small offset references. | |
5088 | (struct mips_frame_info): New structure to hold all frame related | |
5089 | information, calculated by compute_frame_size. | |
5090 | (INITIAL_FRAME_POINTER_OFFSET): New macro, use compute_frame_size to | |
5091 | calculate where the frame should go. | |
5092 | (ACCUMULATE_OUTGOING_ARGS): New macro, define so stack pushes are | |
5093 | folded into the frame. | |
5094 | (REG_PARM_STACK_SPACE): Redefine to take an argument and return 16. | |
5095 | (OUTGOING_REG_PARM_STACK_SPACE): New macro, define to say we must | |
5096 | allocate stack space for arguments passed in registers. | |
5097 | (TARGET_FLOAT_FORMAT): New macro, define as IEEE_FLOAT_FORMAT. | |
5098 | (FUNCTION_ARG_BOUNDARY): New macro to determine argument padding | |
5099 | requirements. | |
5100 | (MIPS_STACK_ALIGN): New name for AL_ADJUST_ALIGN macro. | |
5101 | (FIX_FRAME_POINTER_ADDRESS): Delete, no longer used. | |
5102 | (FUNCTION_PROFILER): No longer have to switch between different | |
5103 | register names, override_options now sets up reg_names correctly. | |
5104 | (TRAMPOLINE_TEMPLATE): New macro, define as a dummy. | |
5105 | (TRAMPOLINE_SIZE): ditto. | |
5106 | (INITIALIZE_TRAMPOLINE): ditto. | |
5107 | (INDIRECTABLE_ADDRESS): Delete, fold into GO_IF_LEGITIMATE_ADDRESS. | |
5108 | (GO_IF_LEGITIMATE_ADDRESS): If -mdebuga, don't allow <label>(<reg>) | |
5109 | type addresses, which the machine really doesn't support, but you | |
5110 | currently get better code in some instances by pretending it does | |
5111 | support it. | |
5112 | (LEGITIMATE_CONSTANT_P): Call mips_const_double_ok if CONST_DOUBLE. | |
5113 | (ENCODE_SEGMENT_INFO): New macro, set SYMBOL_REF_FLAG (ie, volatil) | |
5114 | if refering to an item via the gp pointer. | |
5115 | (SLOW_BYTE_ACCESS): Define to 1, it is supposed to generate better | |
5116 | code on RISC machines. | |
5117 | (classify_op): New macro to classify an insn. | |
5118 | (additive_op): Use classify_op to figure out if PLUS or MINUS. | |
5119 | (divmod_op): New macro to identify DIV, MOD, UDIV, UMOD insns. | |
5120 | (unsigned_op): New macro to identify UDIV, UMOD insns. | |
5121 | (REGISTER_NAMES): All names are now pointers into mips_reg_names, so | |
5122 | that we don't have to continually test whether -mrnames is used or | |
5123 | not. The override_options function sets this up appropriately. | |
5124 | (REGISTER_NUMCHAR): Deleted. | |
5125 | (REG_NAME): Deleted. | |
5126 | (ADDITIONAL_REGISTER_NAMES): Define both names for the gp registers, | |
5127 | so people can use either $r4 or a0 in asm statements. | |
5128 | (PRINT_OPERAND): Call print_operand function instead of expanding a | |
5129 | huge macro. Add %C, %N, %(, %), %[, %], %&, %#. | |
5130 | (PRINT_OPERAND_PUNCT_VALID_P): Add `(', `)', `[', `]', `&', and `#'. | |
5131 | (PRINT_OPERAND_ADDRESS): Call print_operand_address function instead | |
5132 | of expanding a huge macro. | |
5133 | (DBX_OUTPUT_SEQEND): New macro, emit .set reorder after filling | |
5134 | delay slot(s). | |
5135 | (ASM_OUTPUT_SOURCE_FILENAME): Add check for doing .file of same file | |
5136 | -- this is needed for the prologue to do a .file before all prologue | |
5137 | instructions, rather than after the instructions which set up the | |
5138 | stack. Also, warn about #line requests that cannot be honored in | |
5139 | MIPS ECOFF binaries. | |
5140 | (ASM_OUTPUT_CASE_END): Delete, since it was only used to go back to | |
5141 | the text section, and GCC does this now automatically. | |
5142 | (READONLY_DATA_SECTION): New macro, define to be rdata_section. | |
5143 | (SELECT_SECTION): Don't force volatile readonly items into .data. | |
5144 | (ASM_COMMENT_START): New macro, define to be '\t\t# ' for -dp. | |
5145 | (SEPARATE_AUX_OUTPUT): New macro, define this to separately compile | |
5146 | out-mips.c. | |
5147 | ||
5148 | Tue Apr 16 15:00:51 1991 Jim Wilson (wilson at cygnus.com) | |
5149 | ||
5150 | * unroll.c (final_giv_value): Use expand_binop instead of | |
5151 | gen_sub2_insn when emitting subtract insns, since expand_binop | |
5152 | will work for any operands. | |
5153 | ||
5154 | * sched.c (schedule_insns): Don't split no-op moves; doing so | |
5155 | breaks the code that handles REG_NO_CONFLICT blocks. | |
5156 | (update_links): Delete the code that prints a warning for | |
5157 | REG_EQUAL notes where the original dest can't be found. This no | |
5158 | longer occurs because of the above change. | |
5159 | ||
5160 | * sched.c: Generalize memory aliasing code so that it will work on | |
5161 | non-RISC machines. Instead of saving just the insn on the pending | |
5162 | lists, now saves both the insn and the mem rtx. Old variables | |
5163 | pending_read and pending_write replaced with pending_read_insns, | |
5164 | pending_read_mems, pending_write_insns, and pending_write_mems. | |
5165 | (read_dependence, true_dependence, anti_dependence, | |
5166 | output_dependence): Now passed a MEM rtx instead of a PATtern. | |
5167 | (add_insn_mem_dependence): New function. Adds an insn and a mem | |
5168 | to a pending list pair. | |
5169 | (sched_analyze_1, sched_analyze_2, sched_analyze): Modified to use | |
5170 | new pending list scheme. | |
5171 | (schedule_block): Likewise. | |
5172 | (schedule_insns): Likewise. | |
5173 | ||
5174 | Tue Apr 16 12:31:07 1991 Jeffrey A. Law (law at mole.gnu.ai.mit.edu) | |
5175 | ||
5176 | * Makefile.in (install-man): Look for protoize.1 and unprotoize.1 | |
5177 | in the current directory, not $(srcdir) | |
5178 | (install-headers): Use basename to strip off $(srcdir) from | |
5179 | include files when installing and changing mode. | |
5180 | ||
5181 | Tue Apr 16 08:10:38 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5182 | ||
5183 | * rs6000.md (extendqixi2): Add CLOBBER to the first SET as well as | |
5184 | the second. | |
5185 | (load_multiple): Fix typo in operand number and add newline. | |
5186 | ||
5187 | * reload.c (find_reloads_address_1): Pass actual location of a | |
5188 | MEM used in an address; also handle the case when the MEM was | |
5189 | copied. Ensure we reload the copy, not the original address. | |
5190 | ||
5191 | * reload1.c (eliminate_regs, case {INSN,EXPR}_LIST): Correctly handle | |
5192 | the cases when one or more operations is (nil). | |
5193 | ||
5194 | * local-alloc.c (block_alloc): Check for REG_EQUAL on list insn | |
5195 | of REG_NO_CLOBBER sequence, not first. | |
5196 | (no_conflict_p): Set LAST and use INSN instead of P for loop start. | |
5197 | ||
5198 | Mon Apr 15 12:55:12 1991 Jim Wilson (wilson at cygnus.com) | |
5199 | ||
5200 | * loop.c (strength_reduce): Don't emit an insn after loop_end to | |
5201 | set the final value of a reversed biv. There is already an insn | |
5202 | there setting the biv's proper final value. | |
5203 | ||
5204 | Sun Apr 14 18:32:05 1991 Michael Tiemann (tiemann at cygnus.com) | |
5205 | ||
5206 | * gnulib1.c (various functions): Added declaration of INTIFY to | |
5207 | every function which has a FLOAT_ARG_TYPE argument or return value. | |
5208 | ||
5209 | Sun Apr 14 18:31:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5210 | ||
5211 | * c-decl.c (store_parm_decls): Traditional float parm becomes double. | |
5212 | ||
5213 | Sat Apr 13 17:35:07 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5214 | ||
5215 | * m68k.md (storing 32-bit field with movl): Allow any immediate arg 3. | |
5216 | ||
5217 | * expmed.c (store_bit_field): For fields bigger than a word: | |
5218 | Avoid special use of SImode, and don't crash if VALUE is CONST_INT. | |
5219 | ||
5220 | Fri Apr 12 02:04:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5221 | ||
5222 | * reload.c (find_reloads): Like prev change here, for optional reloads. | |
5223 | ||
5224 | * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Must set %o0 to the address | |
5225 | LPBX0 by adding in the low part of the address before calling | |
5226 | ___bb_init_func. | |
5227 | ||
5228 | * tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): | |
5229 | New macros. Place reference to constructor or destructor into | |
5230 | constructor or destructor section. | |
5231 | ||
5232 | * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add | |
5233 | new constructor and destructor sections. | |
5234 | ||
5235 | * jump.c (squeeze_block_notes,squeeze_notes): Chage the name of | |
5236 | squeeze_block_notes to squeeze_notes. Also handle LOOP_BEG, LOOP_CONT | |
5237 | and LOOP_END notes, since these must remain in their original order. | |
5238 | ||
5239 | * cccp.c (skip_to_end_of_comment): Handle warn_comment. | |
5240 | ||
5241 | * m68k.md (dbra patterns): Use `=' in constraint of op 0. | |
5242 | ||
5243 | * gcc.c (process_command): Handle -save-temps. | |
5244 | (do_spec_1): Handle %g like %b if -save-temps. | |
5245 | (verbose_flag): Renamed from `vflag'. | |
5246 | ||
5247 | * tm-sparc.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Don't define this. | |
5248 | ||
5249 | Fri Apr 12 00:57:48 1991 Jim Wilson (wilson at cygnus.com) | |
5250 | ||
5251 | * sched.c: Update all comments to reflect source changes. | |
5252 | Make old_live_regs a static global, instead of local to schedule_block. | |
5253 | Schedule_block is now void, since its return value was always 1. | |
5254 | Rename last_function_call_not_const to last_pending_memory flush. | |
5255 | This can not be a CALL_INSN or a INSN that writes memory. | |
5256 | New variable pending_lists_length so that the lists can be flushed | |
5257 | when they get too long. | |
5258 | Use GET_RTX_CLASS instead of multiple GET_CODE calls whenever it | |
5259 | makes sense. | |
5260 | (read_dependence): New Function. Returns one if two reads are | |
5261 | dependent. This can happen if both are volatile reads. | |
5262 | (true_dependence, anti_dependence, output_dependence): Two volatile | |
5263 | memory access are always dependent. | |
5264 | (order_calls): Function deleted. It was very short, it was only called | |
5265 | once, and it no longer did what its name implied. Its one call was | |
5266 | replaced with the body of the function. | |
5267 | (sched_analyze_1): Correctly handle stripping of SUBREGs, etc from | |
5268 | the set dest. | |
5269 | If the pending lists are longer than 32 when processing a memory | |
5270 | write, then make this write depend on all previous and all future | |
5271 | memory accesses so we can flush the pending list. This is necessary | |
5272 | because the algorithms used are O(N*N). | |
5273 | (sched_analyze_2): For memory reads, check whether it is read | |
5274 | dependent on any previous memory read (this can happen if both reads | |
5275 | are volatile). | |
5276 | (sched_analyze_insn): Replace call to order_calls with the body of | |
5277 | that function. | |
5278 | (sched_analyze): Don't clear last_memory_pending_flush for a non-const | |
5279 | call, since any future call must still depend on all previous memory | |
5280 | accesses. | |
5281 | (sched_note_set): Correct handling of SUBREGs, etc. For partial sets | |
5282 | of a register, must treat this exactly the same way as flow.c, i.e. | |
5283 | a partial set of a register does not kill the register. Delete | |
5284 | ifdefed out code which is obsolete. | |
5285 | (attach_deaths): New argument SET_P, which indicates whether this is | |
5286 | a set (if true) or a use (if false) of the rtx X. Correct handling | |
5287 | of REG_DEAD notes, to account for the new REG_UNUSED note. | |
5288 | (attach_deaths_insn): Pass new additional parameter to attach_deaths. | |
5289 | Always call attach_deaths for sets within a parallel. Call | |
5290 | attach_deaths for clobbers. | |
5291 | (new_sometimes_live): Ifdef out code which should never be executed, | |
5292 | and replaced with call to abort. | |
5293 | (schedule_block): Now void. | |
5294 | When processing block to find dead_regs, don't unlink REG_UNUSED notes, | |
5295 | but must mark the indicated register as dead. | |
5296 | (update_links): Completely rewritten to make more general. Now handles | |
5297 | all REG_NOTEs except REG_INC and REG_LABEL. No longer makes simple | |
5298 | assumptions about the form of instructions. New argument orig_insn, | |
5299 | which is the original unsplit insn. | |
5300 | (schedule_insns): Delete unused volatilep code. Pass new parameter | |
5301 | to update_links. | |
5302 | ||
5303 | Thu Apr 11 15:34:44 1991 Tom Wood (wood at dg-rtp.dg.com) | |
5304 | ||
5305 | * out-m88k.c (pic_addressing_base_rtx): Use pic_offset_table_rtx | |
5306 | instead. Otherwise, PIC fails miserably for inline functions. | |
5307 | (legitimize_address): Support -mbig-pic. | |
5308 | (print_operand): Add `g' for printing #got_rel (for -mbig-pic). | |
5309 | * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): PIC_OFFSET_TABLE_REGNUM | |
5310 | is used and is fixed for PIC. | |
5311 | (GO_IF_LEGITIMATE_ADDRESS): Distinguish the -mbig-pic case. | |
5312 | * m88k.md (SImode hi16/lo16): Use %g for -mbig-pic. | |
5313 | ||
5314 | Wed Apr 10 21:53:32 1991 Jim Wilson (wilson at cygnus.com) | |
5315 | ||
5316 | * unroll.c: Change global variable declarations to static. | |
5317 | Four new global variables loop_iteration_var, loop_initial_value, | |
5318 | loop_increment, and loop_final_value, used for communication between | |
5319 | loop_iterations and precondition_loop_p. | |
5320 | (unroll_loop): Before deleteing the insns in the original loop body, | |
5321 | emit a label after the last insn to be deleted, to ensure that no | |
5322 | delete_insn call will delete past that point. | |
5323 | (precondition_loop_p): Use global loop_* variables setup by | |
5324 | loop_iterations, instead of trying to calculate their values again. | |
5325 | (copy_loop_body): Don't emit copies of the start_label. | |
5326 | (approx_final_value): COMPARISON argument now passed as the pair | |
5327 | COMPARISON_CODE and COMPARISON_VALUE. | |
5328 | (find_splittable_regs): When completely unrolling a loop, and the | |
5329 | initial value of a biv is a hard register or itself, then must | |
5330 | create a new register to hold its initial value for splitting. | |
5331 | (loop_iterations): Set the new global variables loop_*. | |
5332 | If the comparison value is an invariant register, then search the insns | |
5333 | before the loop to try to find a constant value for the register. | |
5334 | ||
5335 | Wed Apr 10 16:02:16 1991 Tom Wood (wood at dg-rtp.dg.com) | |
5336 | ||
5337 | * out-m88k.c (pic_addressing_base_rtx): A pseudo register coined | |
5338 | for each function as needed in legitimize_address. | |
5339 | (emit_move_sequence): Use legitimize_address instead of generating | |
5340 | HIGH/LO_SUM. | |
5341 | (legitimize_address): Rework, based on the sparc version, to | |
5342 | implement PIC. | |
5343 | (output_call): Use the #plt form when doing PIC. | |
5344 | (m88k_layout_frame): The addressing base register is no longer | |
5345 | fixed and r1 need not be saved for PIC. | |
5346 | (output_prologue): Output instructions to setup the addressing | |
5347 | base register if one is needed. | |
5348 | (print_operand_address): Support the PIC case. | |
5349 | * m88k.md (most patterns using hi16/lo16): Disable these for PIC. | |
5350 | * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): No longer needed. | |
5351 | (ADDRESSING_BASE_REGNUM): Derived from pic_addressing_base_rtx. | |
5352 | (GO_IF_LEGITIMATE_ADDRESS): Accept the PIC case. | |
5353 | (LEGITIMIZE_ADDRESS): Use legitimize_address instead of HIGH/LO_SUM. | |
5354 | ||
5355 | * make-m88k, make-m88kdgux: Use SysV INSTALL = cp and for DG/UX, | |
5356 | use the bison -l option to allow debugging in c-parse.tab.c. | |
5357 | ||
5358 | * From kenner@vlsi1.ultra.nyu.edu. | |
5359 | * out-m88k.c: Include insn-config.h before conditions.h, which | |
5360 | requires it. | |
5361 | * xm-m88kdgux.h: Define SEPARATE_AUX_OUTPUT before including config.h. | |
5362 | * tm-m88k.h: Declare MD functions only if SEPARATE_AUX_OUTPUT. | |
5363 | ||
5364 | * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h: Rework TARGET_VERSION. | |
5365 | ||
5366 | Wed Apr 10 08:19:02 1991 Richard Stallman (rms at apple-gunkies) | |
5367 | ||
5368 | * caller-save.c (emit_mult_restore): Typo testing offset[regno] sign. | |
5369 | ||
5370 | * fold-const.c (target_isinf): Test real value for infinitude. | |
5371 | * real.h (REAL_VALUE_ISINF): Use target_isinf. | |
5372 | ||
5373 | * configure: Change / to -- in value of `target' in Makefile. | |
5374 | ||
5375 | Tue Apr 9 20:09:49 1991 James Van Artsdalen (james at bigtex.cactus.org) | |
5376 | ||
5377 | * configure: Modify assignment to `target' in Makefile. | |
5378 | (AIX target): Use correct config files. | |
5379 | ||
5380 | * make-aix386: New file. | |
5381 | ||
5382 | Tue Apr 9 19:28:16 1991 Torbjorn Granlund (tege at zevs.sics.se) | |
5383 | ||
5384 | * longlong.h (header): | |
5385 | Modify definition of count_leading_zeros for input = 0. | |
5386 | * (68020): Test for __NeXT__ too. | |
5387 | * (68020 __umulsidi3, umul_ppmm, udiv_qrnnd): | |
5388 | Use constraints "dmi", not "g" (avoid address registers). | |
5389 | * (88000 add_ssaaa, sub_ddmmss): Use r modifier for output | |
5390 | templates, use J, not I, as constraint for the carry-in insns | |
5391 | * (at the end of the file): If UDIV_NEEDS_NORMALIZATION is not | |
5392 | defined, define it as 0. | |
5393 | ||
5394 | Tue Apr 9 19:14:34 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5395 | ||
5396 | * function.c (optimize_bit_field): Fix typo. | |
5397 | ||
5398 | * cccp.c (do_define): Don't crash when a builtin macro is | |
5399 | redefined. | |
5400 | ||
5401 | Tue Apr 9 15:11:42 1991 Richard Stallman (rms at apple-gunkies) | |
5402 | ||
5403 | * expr.c (move_by_pieces): Don't fail to compile if no movqi. | |
5404 | ||
5405 | * emit-rtl.c (get_last_insn_anywhere): Use first nonempty seq. | |
5406 | ||
5407 | * varasm.c (assemble_constructor): Fix typo. | |
5408 | ||
5409 | Fri Apr 5 22:15:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5410 | ||
5411 | * rs6000.md (extendqixi): Add CLOBBER to ASHIFTRT insn. | |
5412 | ||
5413 | * combine.c (simplify_shift_const): Shift operand of PLUS using | |
5414 | correct mode. | |
5415 | Correctly simplify outer_const when done. | |
5416 | ||
5417 | * reload.c (push_reload): Don't de-reference INLOC if it is 0. | |
5418 | ||
5419 | * expr.c (convert_to_mode): Call protect_from_queue. | |
5420 | ||
5421 | Fri Apr 5 13:29:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5422 | ||
5423 | * varasm.c (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): | |
5424 | Accept two arguments. | |
5425 | ||
5426 | Fri Apr 5 08:45:18 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5427 | ||
5428 | * expmed.c (expand_divmod): Convert OP1 to COMPUTE_MODE when we | |
5429 | convert OP0. | |
5430 | ||
5431 | * combine.c (subst): Use gen_binary. | |
5432 | (simplify_comparison): If we have a ZERO_EXTRACT from a constant | |
5433 | with only one bit set, convert into comparison of position with | |
5434 | location of bit in constant; this simplifies ((1 << x) & 1) == 0. | |
5435 | ||
5436 | * combine.c (gen_lowpart_for_combine): Copy code for CONST_DOUBLE | |
5437 | from gen_lowpart instead of calling it; it will abort for certain | |
5438 | floating-point cases, while we will just surround the object with | |
5439 | a SUBREG. | |
5440 | ||
5441 | Thu Apr 4 22:31:36 1991 Jim Wilson (wilson at cygnus.com) | |
5442 | ||
5443 | * unroll.c (new file): Implements loop unrolling. Completely | |
5444 | unrolls small constant bounded loops. Unrolls other constant | |
5445 | bounded loops by an amount modulo the number of iterations so that | |
5446 | only one exit test is needed. Preconditions loops whose iteration | |
5447 | count can be calculated at run time, so that only one exit test | |
5448 | is needed. Can also unroll any other loop by having multiple | |
5449 | copies of the exit tests. Tries to simplify addresses while | |
5450 | unrolling. | |
5451 | ||
5452 | * tree.def: BLOCK trees have 4 fields, not 5. | |
5453 | ||
5454 | * toplev.c: Add new flag -dt to dump RTL after the second cse pass. | |
5455 | Define two new flags, flag_unroll_loops and flag_unroll_all_loops, | |
5456 | and add code to support their use for loop unrolling. Print the | |
5457 | exec time for the shorten-branch pass in the proper place, i.e. | |
5458 | after delayed branch reorganization. | |
5459 | ||
5460 | * stmt.c (find_loop_tree_blocks): New function. Creates a mapping | |
5461 | between BLOCK trees and loops. This info is needed when doing both | |
5462 | loop unrolling and outputting debugger info. | |
5463 | (unroll_block_trees): New function. Makes COPIES copies of the block | |
5464 | trees corresponding the loop indicated by LOOP_NUMBER, so that the | |
5465 | BLOCK notes inside the loop will still match the BLOCK trees for | |
5466 | the loop. | |
5467 | ||
5468 | * rtl.h: Document the new named pattern | |
5469 | "decrement_and_branch_until_zero". Add macros to access new | |
5470 | field of inline_header rtx, which holds a pointer to the function's | |
5471 | original DECL_INITIAL tree. | |
5472 | ||
5473 | * rtl.def: New entry for inline_header to hold a pointer to the | |
5474 | function's original DECL_INITIAL tree. | |
5475 | ||
5476 | * loop.h (new file): Move many declarations from loop.c to the new | |
5477 | file loop.h, and change some from static to extern, so that they | |
5478 | can be shared with unroll.c. Also globalize names for variables | |
5479 | changed from static to extern. | |
5480 | ||
5481 | * loop.c: Move many declarations from loop.c to the new file loop.h, | |
5482 | and change some from static to extern, so that they can be shared | |
5483 | with unroll.c. Add misc comments to better explain the code. | |
5484 | Change name of global arrays loop_start and loop_end to | |
5485 | loop_number_loop_starts and loop_number_loop_ends so that they won't | |
5486 | be confused with local loop_start and loop_end variables. | |
5487 | New variables loop_number_exit_labels, loop_number_first_block, | |
5488 | loop_number_last_block, loop_number_block_level, loop_n_iterations. | |
5489 | Old_max_reg renamed to max_reg_before_loop. Max_uid renamed to | |
5490 | max_uid_for_loop. Induct_var renamed to reg_iv_type. | |
5491 | Induct_struct renamed to reg_iv_info. Class_struct renamed to | |
5492 | reg_biv_class. Iv_list renamed to loop_iv_list. | |
5493 | Rename (struct induction) field always to always_computable. | |
5494 | Rename (struct induction) field family to next_iv. | |
5495 | New (struct induction) field not_replaceable. | |
5496 | (loop_opt): Add code to allocate some new arrays for unrolling | |
5497 | support. Add call to find_loop_tree_blocks to create the BLOCK tree | |
5498 | to loop map needed when unrolling and outputting debugger info. | |
5499 | (scan_loop): Fix setting of maybe_never of label/jump. The old code | |
5500 | always failed. | |
5501 | (prescan_loop): Delete obsolete code. | |
5502 | (find_and_verify_loops): Add code to initialize | |
5503 | loop_number_exit_labels. | |
5504 | (mark_loop_jump): Add code for keep chain of loop_number_exit_labels | |
5505 | for each loop. | |
5506 | (invariant_p): LABEL_REFs are not invariant when doing loop unrolling. | |
5507 | Remove static from definition, so that it can be called from unroll.c. | |
5508 | (strength_reduce): Change name of variable maybe_never to | |
5509 | not_every_iteration, to help emphasize that it is not the same | |
5510 | as the variable maybe_never in the code motion code. Modify code | |
5511 | that computes its value so that it will be false more often, resulting | |
5512 | in better code. | |
5513 | (strength_reduce): Added code to call the new loop unrolling | |
5514 | functions, e.g. unroll_loop, loop_iterations, etc. | |
5515 | (strength_reduce): New code to handle biv's and giv's which must | |
5516 | be set to their final_value after the loop exits. | |
5517 | (strength_reduce): Reversed giv's and biv's must have their values | |
5518 | calculated differently. Add new field reversed to struct induction, | |
5519 | and code to check and use its value. | |
5520 | (strength_reduce): Only check value of bl->nonneg for architectures | |
5521 | that have a decrement_and_branch_until_zero instruction. | |
5522 | (find_mem_givs): New argument loop_start. | |
5523 | (record_giv): New argument loop_start. | |
5524 | The always_computable field for DEST_ADDR givs is always set true. | |
5525 | New code to check for case of spaghetti code, in which case the | |
5526 | giv can never be considered replaceable. | |
5527 | (check_final_value): New function. For givs which are not otherwise | |
5528 | replaceable, try to calculate their final value, and then try | |
5529 | to use this to make them replaceable. | |
5530 | (update_giv_derive): Skip inner loop if giv is known to be underivable | |
5531 | at the beginning. Must set cant_derive if we pass an insn that | |
5532 | modifies the giv's biv, and we can't calculate an adjustment. | |
5533 | (emit_iv_add_mult): Remove static definition so that it is callable | |
5534 | from unroll.c. | |
5535 | (check_dbra_loop): Reversed biv's must be marked as such, so that | |
5536 | they can be treated specially in the rest of loop.c. | |
5537 | (final_biv_value): Moved to unroll.c, alongside the new function | |
5538 | final_giv_value. Extensively rewritten to work for most common | |
5539 | cases. | |
5540 | (update_reg_last_use): Verify that insns have a valid luid before | |
5541 | trying to use it. Don't perform any action if no value luid. | |
5542 | (get_condition): Correct initial comment. | |
5543 | (get_condition_for_loop): Remove static definition so it is callable | |
5544 | from unroll.c. | |
5545 | ||
5546 | * integrate.h: Replace `tree' use in definition with | |
5547 | `union tree_node *' so that tree.h does not have to be included when | |
5548 | this file is included. | |
5549 | ||
5550 | * integrate.c (initialize_for_inline): Pass additional argument, | |
5551 | the DECL_INITIAL (fndecl) tree, to gen_inline_header_rtx. Update | |
5552 | and correct comment. | |
5553 | (save_for_inline_copying): Copy the decl tree, so that virtual reg | |
5554 | instantiation, and loop unrolling, won't affect the saved tree. | |
5555 | (copy_decl_tree): New argument, functionbody, which distinguished | |
5556 | between calls from save_for_inline_copying and calls from | |
5557 | expand_inline_function. | |
5558 | (copy_rtx_and_substitute): Return orig instead of aborting when | |
5559 | inline_target is zero so that loop unrolling can use this code. | |
5560 | ||
5561 | * gcc.texinfo: Document the new optimization flags -funroll-loops | |
5562 | and -funroll-all-loops, the new dump option -dt, and the new named | |
5563 | pattern "decrement_and_branch_until_zero". | |
5564 | ||
5565 | * flags.h: Define two new flags, flag_unroll_loops and | |
5566 | flag_unroll_all_loops. | |
5567 | ||
5568 | * emit-rtl.c (gen_inline_header_rtx): New argument | |
5569 | original_decl_initial. Pass to gen_rtx call. | |
5570 | ||
5571 | * alliant.md, m68k.md: Name the pattern that uses the REG_NONNEG | |
5572 | note to "decrement_and_branch_until_zero". | |
5573 | ||
5574 | * Makefile.in: Add source file unroll.c and header file loop.h to | |
5575 | the cc1 dependencies. Add *.cse2 to the list of files deleted by | |
5576 | `make clean'. | |
5577 | ||
5578 | Thu Apr 4 16:13:37 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5579 | ||
5580 | * varasm.c (assemble_constructor, assemble_destructor): New functions. | |
5581 | They use ASM_OUTPUT_CONSTRUCTOR and ASM_OUTPUT_DESTRUCTOR. | |
5582 | * cplus-decl2.c (finish_file): Use them. | |
5583 | ||
5584 | * reload.c (find_reloads): Pass location as outloc for output reload. | |
5585 | ||
5586 | * objc-actions.c (objc_class_id, synth_module_prologue): | |
5587 | Initialize new variable to hold identifier for "objc_class". | |
5588 | ||
5589 | * objc-actions.c (objc_comptypes): Allow assigning between types | |
5590 | id and Class without warning. | |
5591 | ||
5592 | * c-typeck.c (warn_for_assignment): When there is a type mismatch | |
5593 | in the hidden arguments of a message expression, don't print the | |
5594 | argument number as 0 or -1. Instead print the warning as would | |
5595 | be done for an explicit call to objc_msgSend (this should never | |
5596 | happen, but just in case). | |
5597 | ||
5598 | * emit-rtl.c (gen_lowpart): Reverse #if for CONST_DOUBLE case. | |
5599 | ||
5600 | Thu Apr 4 13:27:02 1991 Michael Meissner (meissner at osf.org) | |
5601 | ||
5602 | * hard-reg-set.h (SET_HARD_REG_BIT, CLEAR_HARD_REG_BIT, | |
5603 | TEST_HARD_REG_BIT): Use unsigned arithmetic to isolate the word and | |
5604 | bit number, which produces better optimized code. | |
5605 | ||
5606 | Thu Apr 4 07:34:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5607 | ||
5608 | * reorg.c (relax_delay_slots): Avoid adjusting LABEL_NUSES if the | |
5609 | insn is a conditional return. | |
5610 | ||
5611 | * reload1.c (reload): If we find that a replacement cannot be | |
5612 | done and that replacement now enables a secondary replacement, | |
5613 | this may disable a third replacement in some cases. | |
5614 | (eliminate_regs, case SET): Don't stop after we find the first | |
5615 | match when looking for modified registers. | |
5616 | ||
5617 | * combine.c (previous_num_undos): New var. | |
5618 | (try_combine): Set it after each call to subst. | |
5619 | When substituting I1 into I2, somtimes make a copy of PATTERN (i2). | |
5620 | (gen_rtx_combine): Start at PREVIOUS_NUM_UNDOS. | |
5621 | ||
5622 | * combine.c (can_combine_p): Start check for volatile references | |
5623 | after INSN, not at INSN. | |
5624 | ||
5625 | * combine.c (try_combine): When we find a split point, ensure | |
5626 | that I2 is a register. If it is of the wrong mode, change the | |
5627 | mode if we can, just like we do with CCmode registers. | |
5628 | (find_split_point): Don't split an extraction if it crosses the | |
5629 | boundary given by the field (i.e., a byte boundary if QImode). | |
5630 | Correct typo: Should generate LSHIFTRT, not LSHIFT. | |
5631 | (subst): Correctly test to see if we can change the mode of | |
5632 | a register for a MODE_CC comparison. | |
5633 | (distribute_notes): If a NOTE references a pseudo-register, | |
5634 | ensure it references the latest copy of that register. | |
5635 | When scanning for last use, don't stop at CALL_INSNs. | |
5636 | ||
5637 | * combine.c (expand_compound_operation): Don't get confused about | |
5638 | (zero_extend (asm_operands ..)) because of the VOIDmode ASM_OPERANDS. | |
5639 | (simplify_and_const_int): Ensure we do computations in proper mode. | |
5640 | Simplify ZERO_EXTRACT and ZERO_EXTEND when we have a PLUS. | |
5641 | (significant_bits): Don't call get_last_value on a SUBREG, just REG. | |
5642 | Correct significant bits for comparison operations. | |
5643 | (simplify_shift_const): When VAROP is logical, use proper mode when | |
5644 | computing shifted constant. | |
5645 | ||
5646 | * combine.c (gen_lowpart_for_combine): Call gen_lowpart if we have | |
5647 | a CONST_DOUBLE. | |
5648 | ||
5649 | * genconfig.c (walk_insn_part, main): Write a definition | |
5650 | for HAVE_lo_sum if a LO_SUM is present in the machine description. | |
5651 | ||
5652 | * combine.c (try_combine): If we have a PARALLEL of a SIGN_EXTEND | |
5653 | and a load of memory, split it into a load and SUBREG assignment. | |
5654 | (find_split_point): If we have LO_SUM for this machine, | |
5655 | split (mem (symbol_ref ..)) using HIGH and LO_SUM. | |
5656 | If we have operation with second operand constant, maybe we couldn't | |
5657 | fit the constant in the insn, so try to split there. | |
5658 | Move NOT to first operand so we'll try to split the other operand | |
5659 | first. | |
5660 | (subst): No reason to avoid making paradoxical SUBREGs and we miss | |
5661 | some optimizations if we don't. | |
5662 | Convert (lo_sum (high FOO) FOO) to FOO. | |
5663 | Convert (C1 + (x + C2) to (C1 - C2) - x. | |
5664 | Use distributive law in more places with logical operations. | |
5665 | (apply_distributive_law): Properly distribute IOR over XOR. | |
5666 | (simplify_shift_const): Simplify (ashift (plus ..) ...). | |
5667 | (simplify_comparison): Add code to remove extraneous AND | |
5668 | operations when comparing result of two comparisons on some machines. | |
5669 | Ignore bits not applicable in our mode. | |
5670 | Treat some SUBREGs as ZERO_EXTENDs. | |
5671 | Convert equality comparison of AND with sign bit into LT or GE | |
5672 | comparison. | |
5673 | ||
5674 | * combine.c (gen_binary, gen_unary): New functions. | |
5675 | (apply_distributive_law, simplify_shift_const): Use gen_binary. | |
5676 | ||
5677 | Wed Apr 3 16:15:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5678 | ||
5679 | * Makefile.in (gnulib): Insert only .o files in combined archive. | |
5680 | (gnulib1.portable): Use $(HPXT). | |
5681 | * make-hp9k320g: Define HPXT. | |
5682 | ||
5683 | * From wilson@cygnus.com. | |
5684 | * sched.c (schedule_block): Delete previously unused variable last_q. | |
5685 | Correct handling of registers with multiple lifetimes within a single | |
5686 | block, always save lifetime info, and clear the appropriate bit in | |
5687 | old_live_regs. Delete now unused variable sched_reg_n_sets. | |
5688 | ||
5689 | Wed Apr 3 07:43:35 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5690 | ||
5691 | * tm-romp.h (CONST_COSTS): All CONST_INTs are cost 0. Symbolic | |
5692 | values cost two insns. | |
5693 | ||
5694 | * function.c (fixup_var_refs_1): Correctly perform position | |
5695 | computation for bit extracts; disallow mode-dependent addresses. | |
5696 | (optimize_bit_field): Likewise. | |
5697 | Remove explicit mention of HImode and QImode by calling mode_for_size. | |
5698 | No need to check for offsettable_address_p; we call change_address | |
5699 | and are not called after reload; don't call adj_offsettable_operand. | |
5700 | * recog.c (validate_replace_rtx_1): Correct endian computation | |
5701 | and don't change mode of a MEM with a mode-dependent address. | |
5702 | ||
5703 | * expmed.c (expand_divmod): Try to figure out what mode will be used | |
5704 | and convert to that once at the beginning, rather than repeatedly, | |
5705 | since we may be writing jumps. | |
5706 | ||
5707 | * vax.md ({zero,sign}_extract patterns): Field width is QImode, not | |
5708 | SImode. | |
5709 | ||
5710 | Tue Apr 2 08:42:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5711 | ||
5712 | * cse.c (simplify_ternary_operation): Add argument for previous | |
5713 | mode of operand 0. | |
5714 | Don't do anything for extractions if bits don't fit in OP0_MODE. | |
5715 | Use OP0_mode instead of mode of OP0 for endian correction. | |
5716 | (fold_rtx): Pass new operand to simpllify_ternary operation. | |
5717 | * integrate.c (subst_constants): Add extra arg to call to | |
5718 | simplify_ternary_operation and call for rtx class 'b'. | |
5719 | * combine.c (find_split_point): Don't split an extract when the | |
5720 | bits are outside the mode of operand 0. | |
5721 | (subst): Pass new parameter to simplify_ternary operation and call | |
5722 | for rtx class 'b'. | |
5723 | (subst, case ZERO_EXTRACT): Don't change the mode of a MEM | |
5724 | if it is a mode-dependent address. | |
5725 | Correctly do endian adjustments so they are correct for fields that | |
5726 | go outside a byte boundary. | |
5727 | (subst, case {ZERO,SIGN}_EXTRACT): Don't adjust MEM here for non-dest | |
5728 | objects; already done in make_compound_operation. | |
5729 | (make_compound_operation): Rework code that makes extracts and | |
5730 | extends to correcty compute positions, taking into account the fact | |
5731 | that field can cross byte boundaries. Remove redundant adjustments. | |
5732 | Use mode_dependent_address_p to validate changing modes of MEM. | |
5733 | (simplify_shift_const): Check for mode-dependent address when | |
5734 | changing mode of a MEM. | |
5735 | (gen_lowpart_for_combine): Likewise. | |
5736 | ||
5737 | * expmed.c (expand_shift): Code to use extzv for logical right shift | |
5738 | had numerous assumptions about specific modes and did not validate | |
5739 | operands properly. | |
5740 | ||
5741 | * expr.c (expand_expr, case NOP_EXPR): If no target was specified, | |
5742 | use convert_to_mode instead of convert_move; this may return a SUBREG. | |
5743 | ||
5744 | * expr.c (do_jump): Conversion isn't NOP if it narrows the object. | |
5745 | If testing A & CONST and the result fits in a smaller mode, try | |
5746 | the compare there. | |
5747 | ||
5748 | * cse.c (simplify_binary_operation): If eliminating reference to | |
5749 | operand, verify that it has no side effects. | |
5750 | Add cases for "a | (~a)" and "a & (~a)". | |
5751 | ||
5752 | * recog.c (register_operand): Only call general_operand for | |
5753 | (subreg (mem ...) X), not all SUBREGs. | |
5754 | ||
5755 | * jump.c (jump_optimize): Remove needless incrementing of LABEL_NUSES | |
5756 | which can cause a dead label not to go away. | |
5757 | ||
5758 | Mon Apr 1 19:08:40 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5759 | ||
5760 | * cse.c (cse_insn): Add missing call to insert_regs. | |
5761 | ||
5762 | Mon Apr 1 18:21:33 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5763 | ||
5764 | * optabs.c (init_optabs): Change #if to #ifdef. | |
5765 | ||
5766 | * loop.c (check_dbra_loop): Take out Feb 24 change. | |
5767 | ||
5768 | Sun Mar 31 22:43:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5769 | ||
5770 | * final.c (insn_counter): New variable. | |
5771 | (final_scan_insn): Increment it. | |
5772 | (output_asm_insn): Use it for %=. | |
5773 | ||
5774 | Sun Mar 31 22:16:31 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5775 | ||
5776 | * out-a29k.c (output_prolog): Correctly write stack size in tag word. | |
5777 | ||
5778 | * out-a29k.c (srcb_operand): If QImode, any constant is OK since | |
5779 | we only care about 8 bits. | |
5780 | (print_operand): Add %Q for QImode srcb values. | |
5781 | * a29k.md (QImode patterns): srcb's that accept constants should have | |
5782 | 'n' constraint, not 'I'; use %Q to output. | |
5783 | ||
5784 | * reload1.c (gen_input_reload): Properly generate reload when we are | |
5785 | adding a pseudo and a hard register. | |
5786 | ||
5787 | * cse.c (simplify_unary_operation): Don't use ffs. | |
5788 | ||
5789 | Sun Mar 31 20:59:52 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
5790 | ||
5791 | * gnulib1.c (perform_ash{l,r}si3): Fix typo that had these | |
5792 | performaces swapped. | |
5793 | ||
5794 | Sun Mar 31 13:35:50 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5795 | ||
5796 | * rtl.h (FIND_REG_INC_NOTE): New macro. | |
5797 | * rtl.h (AUTO_INC_DEC): Define here. | |
5798 | * flow.c (AUTO_INC_DEC): Not here. | |
5799 | * combine.c (can_combine_p, try_combine): Use FIND_REG_INC_NOTE. | |
5800 | Make other scans for REG_INC notes conditional on AUTO_INC_DEC. | |
5801 | * final.c (final_scan_insn): Use FIND_REG_INC_NOTE. | |
5802 | * jump.c (delete_jump): Likewise. | |
5803 | * loop.c (get_condition): Likewise. | |
5804 | * reload.c (find_reloads_address_1, find_equiv_reg): Likewise. | |
5805 | * reload1.c (reload_as_needed): Likewise. | |
5806 | * reorg.c (delete_scheduled_jump, mark_set_resources): Likewise. | |
5807 | * global-alloc.c (global_conflicts): Likewise. | |
5808 | ||
5809 | * dbxout.c (dbxout_type): For integers, reals, and arrays, | |
5810 | use actual type number of int or char, in case those are not 1 and 2. | |
5811 | ||
5812 | * toplev.c (compile_file): Take out last change (regarding lang_init). | |
5813 | ||
5814 | * emit-rtl.c (sequence_element_free_list): Change data type. | |
5815 | (get_last_insn_anywhyere, add_insn_after): Finish last change. | |
5816 | ||
5817 | * expr.c (expand_builtin): Finish last change. | |
5818 | ||
5819 | Sat Mar 30 15:16:16 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5820 | ||
5821 | * function.h (struct sequence_stack): New data type. | |
5822 | (sequence_stack): Declare variable. Use new data type. | |
5823 | * emit-rtl.c (get_last_insn_anywhere, add_insn_after): Adapt to that. | |
5824 | (start_sequence, end_sequence, in_sequence): Likewise. | |
5825 | (start_sequence): Allocate stack links as permanent. | |
5826 | (init_emit_once): Init sequence_stack here. | |
5827 | (init_emit): Not here. | |
5828 | * function.c (push_temp_slots, pop_temp_slots): | |
5829 | (expand_function_end): Use in_sequence. | |
5830 | (fixup_var_refs): Use new data type. | |
5831 | (put_var_into_stack): Don't declare sequence_stack. | |
5832 | ||
5833 | * function.c (expand_function_start): | |
5834 | Trace static chain properly past first link. | |
5835 | ||
5836 | * ns32k.md (andcbhi3, andcbqi3): Constraint shouldn't say commutative. | |
5837 | ||
5838 | Sat Mar 30 02:06:20 1991 North-Keys (erlkonig at apple-gunkies.gnu.ai.mit.edu) | |
5839 | ||
5840 | * c-decl.c (init_decl_processing): Fix typo `integer_tpe_node'. | |
5841 | * dbxout.c (dbxout-symbol): Added char * declaration for `name'. | |
5842 | * objc-actions.c (encode_array): Avoid returning a value. | |
5843 | ||
5844 | Fri Mar 29 15:59:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5845 | ||
5846 | * c-decl.c (init_decl_processing): Define __builtin_constant_p. | |
5847 | * expr.c (expand_builtin): Implement it. | |
5848 | * tree.h (enum built_in_function): New alternative. | |
5849 | ||
5850 | * toplev.c (compile_file): Move lang_init call after debugger init. | |
5851 | ||
5852 | * gcc.c (default_compilers): Define __cplusplus for C++ code. | |
5853 | ||
5854 | * c-decl.c (start_function): Use 0 for name of result decl. | |
5855 | (value_identifier): Variable deleted. | |
5856 | ||
5857 | * dbxout.c (dbxout_type): Handle LANG_TYPE. | |
5858 | (dbxout_symbol): Handle RESULT_DECL. | |
5859 | Handle variables with constant values that are not output. | |
5860 | Use the mangled name when appropriate. | |
5861 | (dbxout_tags): Output equivalent typedef when appropriate. | |
5862 | (dbxout_function): Output the DECL_RESULT if it has a name. | |
5863 | ||
5864 | * varasm.c (assemble_variable): Delete calls to set_current_gdbfile. | |
5865 | ||
5866 | Thu Mar 28 16:14:13 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5867 | ||
5868 | * gcc.c (main): Calculate basename_length to exclude last period. | |
5869 | ||
5870 | * optabs.c (expand_binop, expand_unop): | |
5871 | When widening, don't keep CONST_INT beyond a single word. | |
5872 | ||
5873 | * tm-vax.h (CHECK_FLOAT_VALUE): Change float max to ...444e+38. | |
5874 | ||
5875 | * Makefile.in (gnulib1, gnulib2.portable): | |
5876 | Make test of $$? normally succeed, not normally fail. | |
5877 | (gnulib1): Don't use -e in second loop. Test explicitly instead. | |
5878 | ||
5879 | * dbxout.c (lastfile): New static variable. | |
5880 | (dbxout_init): Initialize lastfile. | |
5881 | * final.c (lastfile): Deleted. | |
5882 | (init_final): Don't set lastfile. | |
5883 | ||
5884 | * final.c (set_current_gdbfile): Function deleted. | |
5885 | (output_source_line): Handling of GDB debugging info deleted. | |
5886 | (final_start_function, final_end_function): Likewise. | |
5887 | ||
5888 | Thu Mar 28 09:58:18 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
5889 | ||
5890 | * cplus-decl.h (decl_context): Add missing declaration for BITFIELD. | |
5891 | ||
5892 | * tm-sparc.h (CC1_SPEC): Change to handle new interpretation of -O2. | |
5893 | (OPTIMIZATION_OPTIONS): Use this macro to control default expensive | |
5894 | optimizations. | |
5895 | (MODES_TIABLE_P): Use GET_MODE_CLASS to simplify this macro. | |
5896 | (FUNCTION_ARG,FUNCTION_ARG_PARTIAL_NREGS): Make sure TYPE is nonzero | |
5897 | before we use it. | |
5898 | (FUNCTION_BLOCK_PROFILER): Fix a bug in the asm code. | |
5899 | (EXTRA_CONSTRAINT): For 'S' constraint, if OP is a register, make | |
5900 | sure it's not a pseudo. Also, change call to `memory_address_p' to | |
5901 | `strict _memory_address_p'. Both of these are for the strict cases. | |
5902 | (SLOW_BYTE_ACCESS): Try going with this set 1. | |
5903 | * sparc.md: Take advantage of new combiner to handle signed bitfield | |
5904 | comparisons and signed sub-word comparisons. | |
5905 | Added peepholes for doing subword memory tests and operations. | |
5906 | ||
5907 | Thu Mar 28 09:43:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5908 | ||
5909 | * emit-rtl.c (start_sequence, gen_sequence): Ensure we allocate rtl | |
5910 | on saveable_obstack since we will be saving it and we may be called | |
5911 | from an optimizer that will reuse allocated memory in current_obstack. | |
5912 | ||
5913 | Wed Mar 27 18:46:27 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
5914 | ||
5915 | * toplev.c (main): Print version with -version, regardless of | |
5916 | -quiet. | |
5917 | ||
5918 | * Makefile.in (gnulib, gnulib2.ready): Put `-' before `if'. | |
5919 | ||
5920 | * make-hp9k320, make-hp9k320g (CC, OLDCC): Delete -lsetjmp. | |
5921 | Add -Wc,-Nw2000. | |
5922 | ||
5923 | * dbxout.c (dbxout_source_file): New name for fn moved from final.c. | |
5924 | * final.c (output_source_file): Moved to dbxout.c. Callers changed. | |
5925 | (output_source_line): Call dbxout_source_file. | |
5926 | ||
5927 | Wed Mar 27 11:09:13 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) | |
5928 | ||
5929 | * version.c: Bumped to version 1.92. | |
5930 | ||
5931 | * final.c (output_source_{file,line}): Fix bug in new handling of | |
5932 | "Ltext". | |
5933 | ||
5934 | * cplus-cvt.c (build_up_reference): Handle BIND_EXPR. | |
5935 | ||
5936 | * Makefile.in (cplus-lex.o): depend on cplus-input.c. | |
5937 | * cplus-input.c: New file. | |
5938 | ||
5939 | * cplus-method.c (do_inline_function_hair): Call a different | |
5940 | `prepare_inline', and don't deal with pending_inlines here. | |
5941 | * cplus-lex.c (do_pending_inlines): Deal with pending_inlines | |
5942 | here... | |
5943 | (reinit_parse_for_method): ...and here. | |
5944 | ||
5945 | * cplus-decl.c (grok_ctor_properties): Use TYPE_NAME_STRING where | |
5946 | appropriate. Also, don't assume that CURRENT_CLASS_TYPE is what we | |
5947 | use for error message; use CTYPE instead. | |
5948 | ||
5949 | * cplus-type2.c (digest_init): Strip NON_LVALUE_EXPRs. | |
5950 | ||
5951 | * cplus-tree.c (__eprintf): Added this function from gnulib2 until | |
5952 | gnulib configuration is worked out. | |
5953 | ||
5954 | * cplus-parse.y (member_init): Call do_member_init. Previous code | |
5955 | was wrong (using a goto to factor common code) because the parse | |
5956 | stack was different in the two contexts. | |
5957 | * cplus-init.c (do_member_init): New function. | |
5958 | ||
5959 | * cplus-typeck.c (build_compound_expr): Convert arrays to pointers. | |
5960 | (build_c_cast): Warn about possible alignment problems. | |
5961 | ||
5962 | Wed Mar 27 05:55:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5963 | ||
5964 | * reload.c (find_reloads): Disallow a PLUS as an operand even if | |
5965 | "g" is in the constraint; this is only valid for "p". | |
5966 | ||
5967 | Tue Mar 26 06:46:48 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
5968 | ||
5969 | * local-alloc.c (block_alloc): Have insn numbers start at 1, not 2. | |
5970 | ||
5971 | * rtlanal.c (replace_regs): Move to here; add new parameter. | |
5972 | * loop.c (replace_regs): Delete from here. | |
5973 | (move_movables, strength_reduce): Pass new parameter to replace_regs. | |
5974 | * jump.c (duplicate_loop_exit_test): Make new pseudos for pseudos | |
5975 | used only in loop exit test; this prevents unnecessay sharing | |
5976 | between code inside and outside of loop. | |
5977 | * toplev.c (rest_of_compilation): Call reg_scan before jump. | |
5978 | ||
5979 | * combine.c (distribute_notes): If we are searching back for the last | |
5980 | use of a register I3 and I2 no longer use and the last use is a SET | |
5981 | of that register, place a REG_UNUSED note instead of a REG_DEAD note. | |
5982 | No longer need handle REG_DEAD note for output of I3; it will now be | |
5983 | a REG_UNUSED note. | |
5984 | ||
5985 | * combine.c (try_combine): If I3SRC is a register and I2 is a | |
5986 | multi-output insn, see if we can replace one of the outputs with | |
5987 | I3DEST. If so, move LOG_LINKS pointing at the other outputs to | |
5988 | now point to I3 instead of I2. | |
5989 | ||
5990 | * rtlanal.c (single_set): Return 0 if not an insn. | |
5991 | Only ignore SET with unused output if it has no side effects. | |
5992 | (side_effects_p): New function. | |
5993 | * combine.c (can_combine_p): Only ignore SET with unused output if | |
5994 | it has no side effect. | |
5995 | Don't extend the life of a hard register. | |
5996 | (try_combine): Always give up if I1 or I2 used reg inc'd in I3. | |
5997 | (significant_bits): Return mode mask if mode wider than host int. | |
5998 | Don't get confused by (zero_extend (const_int ..)) and similar where | |
5999 | the inner mode is VOIDmode. | |
6000 | Arithmetic operations now always have same modes on operands as | |
6001 | on the result. | |
6002 | ||
6003 | * jump.c (jump_optimize): Set this_is_{simple,cond}jump at the start | |
6004 | of loop, not in middle, and use consistently. | |
6005 | Use can_reverse_comparison_p in case where we make scc insn. | |
6006 | Don't use can_reverse_comparison_p when we call invert_jump. | |
6007 | Use indirect_jump instead of indirect_exp. | |
6008 | Check invert_jump's result before making any other changes; handle | |
6009 | failure. | |
6010 | Simplify code that looks for and deletes USE insns. | |
6011 | (jump_back_p): Call can_reverse_comparison_p only if we have to | |
6012 | reverse the comparison. | |
6013 | (can_reverse_comparison_p): Accept comparison expression and insn | |
6014 | it comes from. | |
6015 | Rework to be more general now that we have MODE_CC and tighten | |
6016 | up a bit. | |
6017 | (invert_jump): Allow invert_exp and redirect_jump to fail. | |
6018 | (invert_exp): Only invert jump, don't change target. | |
6019 | If can reverse comparison code, try it using validate_change. | |
6020 | If that doesn't work, swap the arms of the IF_THEN_ELSE. If that | |
6021 | doesn't work, return 0. | |
6022 | (redirect_exp): Now static. | |
6023 | * expr.c (do_jump_for_compare): Call invert_jump to invert jump | |
6024 | to false label after emitting jump; if this fails, convert to | |
6025 | jump around unconditional jump to false label. | |
6026 | (do_store_flag): Set to 1 first, then branch, then set to 0. This | |
6027 | avoids inverting branches. | |
6028 | * reorg.c (optimize_skip, relax_delay_slots): Always allow invert_jump | |
6029 | to fail. | |
6030 | * rtlanal.c (single_set): Return 0 if not INSN, CALL_INSN, | |
6031 | or JUMP_INSN. | |
6032 | ||
6033 | * reload1.c (eliminate_regs): If any eliminable regs occur in a USE, | |
6034 | eliminate them. | |
6035 | ||
6036 | Tue Mar 26 00:09:18 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6037 | ||
6038 | * c-decl.c (implicitly_declare): Always make implicit decl permanent. | |
6039 | ||
6040 | Mon Mar 25 16:38:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6041 | ||
6042 | * genextract.c (walk_rtx): Record operand numbers that are seen. | |
6043 | (gen_insn): If there are gaps in operand numbers, make code to store | |
6044 | something for the operands not used in this pattern. | |
6045 | (main): Initialize data structures. | |
6046 | ||
6047 | * c-typeck.c (initializer_constant_valid_p): | |
6048 | Always allow length-preserving conversions between integer types. | |
6049 | ||
6050 | * regclass.c (reg_class_record): Return right away if operand is 0. | |
6051 | ||
6052 | * c-decl.c (duplicate_decls): Warn if declare fcn inline after calls. | |
6053 | ||
6054 | * reload.c (combine_reloads): | |
6055 | Test reg_overlap_mentioned_p in both directions. | |
6056 | ||
6057 | Mon Mar 25 15:05:29 1991 Tom Wood (wood at dg-rtp.dg.com) | |
6058 | ||
6059 | * genoutput.c (output_epilogue): Choose a name for an unnamed | |
6060 | pattern as an offset from the closest named pattern. Define | |
6061 | `insn_name_ptr' as a pointer to `insn_name' for use by print_rtx. | |
6062 | * final.c (output_asm_insn): Use the pattern name chosen by | |
6063 | genoutput and output the INSN_UID as well. | |
6064 | * rtl.c (insn_name_ptr): Provide an alternate definition to avoid | |
6065 | link errors when rtl.o is not linked with insn-output.o. | |
6066 | (print_rtx): When printing the INSN_CODE field of an insn, print | |
6067 | the name if it is available. | |
6068 | ||
6069 | Mon Mar 25 09:39:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6070 | ||
6071 | * regs.h (reg_first_use): Deleted. | |
6072 | * rtl.h (REG_UNSET): Deleted. | |
6073 | (REG_UNUSED): New note. | |
6074 | * combine.c (combine_instructions): Delete loop fixing up | |
6075 | reg_first_use. | |
6076 | (can_combine_p): Ignore a branch of a PARALLEL if its output is | |
6077 | never used. | |
6078 | (move_deaths): Don't update reg_first_use. | |
6079 | (distribute_notes): Don't handle REG_UNSET; add code for REG_UNUSED. | |
6080 | * flow.c (reg_first_use): Deleted. | |
6081 | (life_analysis): Restore code that marks vars live at start of function | |
6082 | as globals. These are registers that were never set. | |
6083 | (allocate_for_life_analysis): Don't allocate reg_first_use. | |
6084 | (propagate_block): Search for cc0-setting insn with prev_nonnote_insn. | |
6085 | (mark_set_1): Don't set reg_first_use. | |
6086 | If register is never used, make REG_UNUSED note, not REG_DEAD. | |
6087 | (mark_used_regs): Don't set reg_first_use. | |
6088 | * global-alloc.c (global-conflicts): Dead outputs are now denoted by | |
6089 | REG_UNUSED notes, not REG_DEAD. | |
6090 | * reload.c (find_dummy_reload): Delete test of REG_UNSET; add test | |
6091 | of REG_UNUSED. | |
6092 | (find_equiv_reg): Don't re-use an output marked as REG_UNUSED; | |
6093 | we want these notes to be accurate; this would rarely win anyway. | |
6094 | * reload1.c (emit_reload_insns): Test REG_UNUSED to see if an | |
6095 | output won't be used any more. | |
6096 | * reorg.c (mark_target_live_regs): Use REG_UNUSED notes to kill | |
6097 | registers dead after an insn. | |
6098 | * rtl.c (reg_note_name): Delete REG_UNSET, add REG_UNUSED. | |
6099 | * rtlanal.c (single_set): Ignore a SET whose output has a REG_UNUSED | |
6100 | note. | |
6101 | * sched.c (update_first_use): Deleted. | |
6102 | (update_links): No need to call update_first_use. | |
6103 | ||
6104 | * local-alloc.c: Major changes to use REG_UNUSED notes, make | |
6105 | handling of only-set registers more consistent, and allow | |
6106 | two consecutive CLOBBERs to share a register. Also, avoid loops | |
6107 | over all register each basic block; eliminating these make local-alloc | |
6108 | three times faster! | |
6109 | Quantity numbers now start at zero. | |
6110 | (qty_first_reg, reg_next_in_qty): New variables. | |
6111 | (qty_clobber): No longer needed. | |
6112 | (reg_qty): -1 if register cannot be allocated by local-alloc. | |
6113 | Now undefined for hard registers. | |
6114 | (reg_offset): Now char *. | |
6115 | (call_seen): Deleted, never used. | |
6116 | (regs_live_at): Now two entries per insn. | |
6117 | (alloc_qty): Initialize chain of register in quantity. | |
6118 | (local_alloc): Remove all per-block loops over registers. | |
6119 | Only allocate qty_... vars for max_reg - FIRST_PSEUDO_REGISTER. | |
6120 | Initialize reg_qty once per function. | |
6121 | Don't initialize qty_... vars that are always set before use. | |
6122 | (block_alloc): Delete insn_map, max_uid, and call_used. | |
6123 | Insn numbers start at 1 and we have two entries in regs_live_at | |
6124 | for each insn. | |
6125 | Search for REG_NO_CONFLICT block when we see a CLOBBER insn; this | |
6126 | avoids having already seen sets to the output register. | |
6127 | Call wipe_dead_reg for anything in a REG_UNUSED note. | |
6128 | Delete references to reg_first_use. | |
6129 | Don't check for invalid birth and death here. | |
6130 | Don't call qsort if we have 0 or 1 quantities. | |
6131 | Find all registers for a quantity using reg_next_in_qty chain instead | |
6132 | of looping over all pseudos. | |
6133 | (combine_regs): Refine tests to agree with new conventions. | |
6134 | Never tie pseudos if SREG already has a quantity assigned. | |
6135 | When updating size, use reg_next_in_qty instead of looping over | |
6136 | all registers. | |
6137 | (reg_is_set): Just call reg_is_born. Where it is born depends on | |
6138 | whether we have a CLOBBER or not. Birth location is now twice | |
6139 | the insn number. | |
6140 | (reg_is_born): Handle case when a hard reg is born before the | |
6141 | current insn. | |
6142 | Show we don't know the death location. | |
6143 | (wipe_dead_reg): Parameters are now just register and an in/out flag. | |
6144 | Death locations are now twice the insn number. | |
6145 | Support hard regs that die immediately after current insn. | |
6146 | Don't make REG_UNSET notes. | |
6147 | (find_free_reg): Validate BIRTH and DEATH here. | |
6148 | We no longer have qty_clobber. | |
6149 | (post_mark_life): Eliminate CLOBBER parameter. | |
6150 | (no_conflict_p): Now passed CLOBBER at start of block. Return 0 if | |
6151 | can't find death note or if R1 is a hard register. | |
6152 | ||
6153 | * m68k.md (divsi3, udivsi3): Remove patterns. Using divmodsi4 and | |
6154 | udivmodsi4 produces better code. | |
6155 | (divmodsi4, udivmodsi4): If remainder isn't needed, use divsl/divul | |
6156 | instead of divsll/divull. | |
6157 | ||
6158 | * integrate.c (expand_inline_function): Remove change of March 20th. | |
6159 | Instead, expand args in two passes. First, expand all that go | |
6160 | into registers. Then do those in memory with store_expr. | |
6161 | ||
6162 | * integrate.c (initialize_for_inline): Put the original copy of the | |
6163 | address into ARG_VECTOR; the new one will be modified. | |
6164 | ||
6165 | * reload.c (push_reload): Handle paradoxical SUBREGs on an output | |
6166 | as well as an input. | |
6167 | ||
6168 | * flow.c (mark_label_ref): Don't blow up when X is 0. | |
6169 | ||
6170 | * combine.c (make_compound_operation): Fix typos; result of | |
6171 | exact_log2 is interesting if >=0. | |
6172 | ||
6173 | * a29k.md (store_multiple): Allow gen_store_multiple{_no,}_bug to fail; | |
6174 | we fail if they do. | |
6175 | ||
6176 | * reorg.c (emit_delay_sequence): Record that we deleted a BARRIER | |
6177 | and restore it precisely on those occaisions. | |
6178 | ||
6179 | Sun Mar 24 21:19:55 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6180 | ||
6181 | * gcc.c (xmalloc, xrealloc): Change error message. | |
6182 | * toplev.c (various): Change error messages. | |
6183 | ||
6184 | * final.c (final_scan_insn): Handle ASM_OUTPUT_LOOP_ALIGN. | |
6185 | ||
6186 | * calls.c (emit_call_1): Pass number of bytes to pop to call_pop. | |
6187 | * vax.md (call_pop, call_value_pop): Use that arg. | |
6188 | ||
6189 | Sat Mar 23 23:28:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6190 | ||
6191 | * Makefile.in (version): Run awk, not gcc, to get this value. | |
6192 | ||
6193 | Sat Mar 23 18:04:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6194 | ||
6195 | * cse.c (simplify_unary_operation): Add missing cases for ABS and FFS. | |
6196 | ||
6197 | * alliant.md: Eliminate unneeded patterns: HImode zero_extract, | |
6198 | (set (cc0 (subreg ...))), (set (cc0) (and ...)), | |
6199 | (and (zero_extend ...) ...), shift right of 24 and 16. | |
6200 | Use alternatives to select assembler template when possible. | |
6201 | Use const_int_operand instead of immediate_operand when | |
6202 | possible to avoid explicit test for CONST_INT. | |
6203 | Write add-and-branch patterns with PLUS removed, the way combine | |
6204 | produces them. | |
6205 | ||
6206 | * rtlanal.c (refers_to_regno_p): If X is a SUBREG of a hard | |
6207 | register, treat it as if it were the appropriate register. | |
6208 | CLOBBER doesn't refer to anything. | |
6209 | ||
6210 | * final.c (final_scan_insn): Use prev_nonnote_insn, not PREV_INSN, | |
6211 | to find cc0-setting insn from cc0-using insn. | |
6212 | ||
6213 | * global-alloc.c (find_reg): Don't look for other registers to | |
6214 | renumber unless we know that we are sharing registers. | |
6215 | ||
6216 | * emit-rtl.c (end_sequence): Fix typo that prevented speedup of | |
6217 | Dec 26th from doing anything. | |
6218 | ||
6219 | * toplev.c (do_abort): New function, just calls abort. | |
6220 | (main): Set lang_expand_expr to address of do_abort; abort might be | |
6221 | a macro that is more than just a function name. | |
6222 | ||
6223 | * cse.c: (qty_... variables): Refined to be undefined for indices | |
6224 | less than MAX_REG. Thus, we need not intialize them at the start | |
6225 | of a basic block and can instead inialize a quantity as we create it. | |
6226 | (reg_{next,prev}_eqv): These variables will now be defined only when | |
6227 | reg_qty[N] != N and hence need not be initialized every block either. | |
6228 | (new_basic_block): Need not initialize reg_rtx for new block; the | |
6229 | only time we can inherit values from previous blocks is for hard | |
6230 | regs and it doesn't matter in that case. | |
6231 | ||
6232 | * c-parse.y (yylex): Avoid use of size_t; it may not be defined. | |
6233 | Cast alloca to (char *). | |
6234 | ||
6235 | * out-romp.c (update_cc): cc_status.value[12] can also be a COMPARE, | |
6236 | so use reg_overlap_mentioned_p to see if an insn that modifies a | |
6237 | register invalidates cc0. | |
6238 | ||
6239 | * reorg.c (link_cc0_insns): If next insn is a SEQUENCE, the insn | |
6240 | using cc0 is the first insn in the sequence. | |
6241 | (mark_target_live_regs): Don't assume that a REG_DEAD note always | |
6242 | refers to a register. | |
6243 | ||
6244 | Sat Mar 23 15:35:59 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6245 | ||
6246 | * reload1.c (reload_reg_free_before_p): | |
6247 | An input reload is use before an output or output address reload. | |
6248 | ||
6249 | * genoutput.c (validate_insn_alternatives): New function. | |
6250 | Loop over insn's alternatives to find out how many | |
6251 | alternatives the insn pattern is to support. Verify that if | |
6252 | any alternatives are specified for a given operand that the | |
6253 | number of alternatives match the numer of alternatives for | |
6254 | this insn. | |
6255 | (gen_{insn,peephole,expand,split}): Call | |
6256 | `validate_insn_alternatives' after scanning the insn. This | |
6257 | sets up the value N_ALTERNATIVES for the insn so that | |
6258 | `process_template' can check that the number of alternitves | |
6259 | given matches the number of asm choices for `@' constructs. | |
6260 | ||
6261 | Sat Mar 23 08:09:57 1991 Michael Meissner (meissner at osf.org) | |
6262 | ||
6263 | * dbxout.c (toplevel, dbxout_init): Instead of always using `Ltext' | |
6264 | as the label at the beginning of the text region, properly localize | |
6265 | it, so that machines which do not put leading underscores in front | |
6266 | of external names do not have a problem if the user uses `Ltext'. | |
6267 | (dbxout_init): Call text_section before putting out localized | |
6268 | `Ltext', in case ASM_FILE_START put us into a different section. | |
6269 | ||
6270 | Fri Mar 22 19:26:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6271 | ||
6272 | * a29k.md (jumpfdec): Simplify pattern to match what combine will | |
6273 | produce; remove reversed pattern. | |
6274 | * out-a29k.c (gen_reg_operand): Speed up by not calling | |
6275 | register_operand; check register number ourself. | |
6276 | ||
6277 | * out-romp.c (update_cc, case CC_COMPARE): Call CC_STATUS_INIT. | |
6278 | * romp.md: In pattern that sets cc0 and copies a register to another | |
6279 | register, allow the output to be in memory so that we don't get an | |
6280 | output reload, which will cause problems. | |
6281 | ||
6282 | * varasm.c (assemble_variable): Ensure DECL_INITIAL is non-zero | |
6283 | before we reference it; it might be zero if -fno-common. | |
6284 | ||
6285 | Fri Mar 22 16:11:35 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6286 | ||
6287 | * toplev.c (abort): Don't declare if defined as macro. | |
6288 | ||
6289 | Fri Mar 22 11:49:43 1991 Tom Wood (wood at dg-rtp.dg.com) | |
6290 | ||
6291 | * m88k.md (bxxu): Don't attempt to use bcnd. | |
6292 | (umulsi3, ashift/and): Remove these patterns. | |
6293 | (dummy): This must be a define_expand. | |
6294 | * out-m88k.c (m88k_handle_pragma_token): Handle #pragma weak. | |
6295 | * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h, tm-v88r32.h: Various | |
6296 | changes to support SVR4, including support for #pragma weak. | |
6297 | (SLOW_BYTE_ACCESS): Better code if this is true. | |
6298 | ||
6299 | Thu Mar 21 09:15:47 1991 Tom Wood (wood at gen-rtx) | |
6300 | ||
6301 | * c-parse.y (MULTIBYTE_CHARS): New macro. | |
6302 | (init_lex): Change to the native locale. | |
6303 | (yylex): Process wide character literals and wide character string | |
6304 | literals using mbtowc and mbstowcs based on MULTIBYTE_CHARS. | |
6305 | ||
6306 | Thu Mar 21 15:46:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6307 | ||
6308 | * rtlanal.c (dead_or_set_p): A register is dead if it is assigned | |
6309 | via a SUBREG that references the all the words in the register. | |
6310 | ||
6311 | * tm-vax.h (CONST_OK_FOR_LETTER_P): Define `I' to be constant zero. | |
6312 | (CONST_DOUBLE_OK_FOR_LETTER_P): Define `G' to be floating zero. | |
6313 | (CONST_COSTS): +/- 1 should be very cheap due to decl/inc/aob/sob. | |
6314 | (PRINT_OPERAND): Add `P', `N', `H', and `B'. | |
6315 | * vax.md: Rework many patterns to avoid C code for output template; | |
6316 | use "@" construct whenever possible. | |
6317 | Use INSN_DELETED_P. | |
6318 | Remove extendsidi2; the supplied pattern does exactly what convert_move | |
6319 | will do when the pattern is not present. | |
6320 | Use constm1_rtx to check for constant of -1. | |
6321 | Add mulsidi3 and related add-multiply pattern for emul insn. | |
6322 | Use const_int_operand as predicate instead of checking for CONST_INT. | |
6323 | Remove unneeded (set (pc) (if_then_else (ne (and ...) ...) ...)) | |
6324 | patterns. | |
6325 | Merge jlbs and jbs and similarly for jlbc and jbc. | |
6326 | Remove unneeded reverse branch patterns for above insns. | |
6327 | Rewrite patterns for add-and-branch insns to take into account | |
6328 | simplifications done by combine and remove reversed cases. | |
6329 | Convert peepholes for optimizing extzv followed or preceeded by andl | |
6330 | into patterns for a single insn. | |
6331 | ||
6332 | Thu Mar 21 15:46:21 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6333 | ||
6334 | * toplev.c (abort): Declare it. | |
6335 | ||
6336 | Thu Mar 21 08:16:12 1991 Michael Meissner (meissner at osf.org) | |
6337 | ||
6338 | * va-mips.h (whole file): Replace with the 1.39 version of this | |
6339 | file, which was a total rewrite of the 1.37.1 version. Add | |
6340 | primitive support for 2.00. | |
6341 | ||
6342 | Wed Mar 20 18:31:42 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6343 | ||
6344 | * jump.c (duplicate_loop_exit_test): Make copy of contents of | |
6345 | register note; if it was a REG_EQUAL note, it might have been an | |
6346 | arbitrary expression and sharing it can cause problems in cse. | |
6347 | ||
6348 | * rtl.def (UMULT): Remove unsigned multiply code. | |
6349 | * combine.c (subst, significant_bits): Remove code UMULT and | |
6350 | support for indicating widening multiply with different modes | |
6351 | on the MULT operation vs. its operands. | |
6352 | * cse.c (simplify_binary_operation): Remove support for widening | |
6353 | multiply. | |
6354 | (rtx_code, exp_equiv_p, simplify_binary_operation, cse_insn): Remove | |
6355 | code UMULT. | |
6356 | * function.c (instantiate_virtual_regs_1): Likewise. | |
6357 | * reload1.c (eliminate_regs): Likewise. | |
6358 | * local-alloc.c (block_alloc): Likewise; replace with GET_RTX_CLASS. | |
6359 | * loop.c (simplify_giv_expr, expr_benefit): Remove code UMULT | |
6360 | and support for widening multiply. | |
6361 | * optabs.c (init_optabs): Set code of widening multiply tables | |
6362 | to UNKNOWN. | |
6363 | ||
6364 | * a29k.md (mulsidi2, umulsidi2): Rewrite using SIGN_EXTEND and | |
6365 | ZERO_EXTEND. Also fix typo in SUBREG_WORD when splitting. | |
6366 | * tm-alliant.h, tm-m68k.h (NOTICE_UPDATE_CC): Remove code UMULT. | |
6367 | * alliant.md, m68.md (mulhisi3, umulhisi3): Rewrite using | |
6368 | SIGN_EXTEND and ZERO_EXTEND. | |
6369 | (divhisi3, udivhisi3, modhisi3, umodhisi3): Rewrite using TRUNCATE. | |
6370 | * alliant.md, ns32k.md (umulsi3, umulhi3, umulqi3): Remove unneeded | |
6371 | patterns that use UMULT. | |
6372 | * ns32k.md (umulsidi3): Rewrite using ZERO_EXTEND. | |
6373 | ||
6374 | * tm-alliant.h (NOTICE_UPDATE_CC): MOD and (trunc (mod ...)) | |
6375 | clobber CC. | |
6376 | * alliant.md (mod*, umod*): No longer need CC_STATUS_INIT. | |
6377 | ||
6378 | * recog.c: Include insn-attr.h. | |
6379 | (general_operand): If we have insn scheduling, don't allow paradoxical | |
6380 | SUBREGs since they can prevent scheduling memory references; they | |
6381 | aren't helpful on RISCs anyway and can cause poor register allocation. | |
6382 | * Makefile.in (recog.o): Includes insn-attr.h. | |
6383 | ||
6384 | * cse.c (COST): A register only in NO_REGS isn't a specially-cheap reg. | |
6385 | (simplify_unary_operation, case {ZERO,SIGN}_EXTEND): If OP_MODE was | |
6386 | given as VOIDmode, use MODE; allow mode size of HOST_BITS_PER_INT. | |
6387 | (cse_insn): Don't make SET_SRC equal SET_DEST if doing so will cause | |
6388 | two registers to be live containing the same value. | |
6389 | (cse_end_of_basic_block): Count SETs in CALL_INSNs and JUMP_INSNs. | |
6390 | ||
6391 | Wed Mar 20 15:40:48 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6392 | ||
6393 | * gcc.c (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): New macros. | |
6394 | (md_exec_prefix, md_startfile_prefix): New variables. | |
6395 | (process_command): Put those prefixes on the paths. | |
6396 | ||
6397 | * toplev.c (main): Use abort, not fancy_abort. | |
6398 | ||
6399 | * integrate.c (expand_inline_function): Use emit_block_move | |
6400 | to copy BLKmode parm value. Save size and alignment for this. | |
6401 | ||
6402 | * gnulib2.c (__builtin_saveregs)[MIPS]: Go to text section. | |
6403 | ||
6404 | * final.c (final_scan_insn): Don't go to text after jump-tab label. | |
6405 | ||
6406 | Tue Mar 19 21:27:09 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6407 | ||
6408 | * tm-a29k.h (SETUP_INCOMING_VARARGS): Always write registers to | |
6409 | 0(ap), no matter how many named args are present. | |
6410 | ||
6411 | * combine.c (subst): In IF_THEN_ELSE, canonicalize to put the (pc) | |
6412 | in the second operand if we can reverse the comparison. | |
6413 | (significant_bits): Support TRUNCATE and SIGN_EXTEND. | |
6414 | ||
6415 | * tm-romp.h (CC_UNSIGNED): New flag for cc_status. | |
6416 | * out-romp.c (update_cc, case CC_COMPARE): Record the operands of the | |
6417 | compare and mark whether the test will be signed or unsigned. | |
6418 | (restore_compare_p): New function. | |
6419 | * romp.md (conditional branch and return patterns): Use new | |
6420 | restore_compare_p to see if we need to tell final to reinclude | |
6421 | deleted compare insn. | |
6422 | ||
6423 | * output.h (const_int_operand): Define. | |
6424 | * recog.c (const_int_operand): New function. | |
6425 | * out-a29k.c, out-romp.c, out-rs6000.c (const_int_operand): Remove from | |
6426 | these. | |
6427 | ||
6428 | * tree.c (rtl_in_saveable_obstack): New function. | |
6429 | * varasm.c (immed_double_const, immed_real_const_1): Ensure that things | |
6430 | that get placed on the chain are always put into saveable_obstack. | |
6431 | ||
6432 | Tue Mar 19 17:21:30 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) | |
6433 | ||
6434 | * stddef.h (wchar_t): New typedef. | |
6435 | ||
6436 | * out-sparc.c (output_block_move): Handle NO_UNDERSCORES syntax. | |
6437 | ||
6438 | * tm-pbd.h, xm-pbd.h: New files. | |
6439 | ||
6440 | * toplev.c (report_error_function): Don't crash if between functions. | |
6441 | ||
6442 | Tue Mar 19 12:58:13 1991 Michael Tiemann (tiemann at cygnus.com) | |
6443 | ||
6444 | * sched.c (memrefs_conflict_p): C was being used as offset for X, | |
6445 | not for Y. Flipping + and - in offset uses cleared up this problem. | |
6446 | ({true,anti,output}_dependence): Add declaration for INSN. | |
6447 | (order_calls): Interface changed; now returns void. All callers | |
6448 | changed. | |
6449 | (sched_analyze_{1,2}): Make dependence between calls and | |
6450 | call-clobbered registers explicit. | |
6451 | (sched_analyze): Track last_function_call_not_const. | |
6452 | (sched_note_set): New parameter DEATH says whether X is marked for | |
6453 | death. Also, look through SUBREGs and extractions. | |
6454 | (rank_for_schedule): Stabilize for qsort. | |
6455 | (attach_deaths): We should not end up with more REG_DEAD notes than | |
6456 | we started with, so abort if we run out early. | |
6457 | (attach_deaths_insn): Handle more complicated cases of registers | |
6458 | dying in insns. | |
6459 | (unlink_notes): Work from back-to-front instead of front-to-back. | |
6460 | (new_sometimes_live): Fix code that looks for an element already in | |
6461 | the table. | |
6462 | (schedule_block): New variable TAIL_PRIORITY used to help determine | |
6463 | max IPC of scheduled code. Also, for now we analyze (schedule) all | |
6464 | blocks, even ones which won't benfit from scheduling. This is | |
6465 | necessary to keep register live info correct, but has the | |
6466 | disadvantage of screwing *all* debug info, not just for the blocks | |
6467 | that were scheduled. | |
6468 | (update_links): Fix complicated code that was to be a simple | |
6469 | head-cons to be a simple head-cons. | |
6470 | (schedule_insns): Update REG_LIVE_LENGTH and REG_N_CALLS_CROSSED | |
6471 | after scheduling. | |
6472 | ||
6473 | * sparc.md (cmpdf): Define an expand pattern for this. (Dropped by | |
6474 | mistake when converted from old-style to new-style condition codes). | |
6475 | ||
6476 | * out-sparc.c (singlemove_string): Catch case where `sethi' can be | |
6477 | used instead of `mov'. | |
6478 | ||
6479 | * gcc.texinfo (Optimize Options): Add documentation about the | |
6480 | `-finline' option (actually, the `-fno-inline' option). | |
6481 | ||
6482 | * out-sparc.c (output_block_move): Use `rtx_alloc' instead of | |
6483 | `gen_rtx' to cons a CONST_INT whose INTVAL we can change. | |
6484 | ||
6485 | * toplev.c (main): Recognize all -O strings (i.e. -O3, -O69), not | |
6486 | just -O and -O2. | |
6487 | ||
6488 | Mon Mar 18 22:30:21 1991 Richard Stallman (rms@mole.ai.mit.edu) | |
6489 | ||
6490 | * expr.c (expand_expr): For TRUTH_ANDIF_EXPR, don't use hard target | |
6491 | if not optimizing. | |
6492 | ||
6493 | * combine.c: Fix some comments; reorder the variable declarations. | |
6494 | ||
6495 | Mon Mar 18 12:07:03 1991 Matthew Self (mself@next.com) | |
6496 | ||
6497 | * tm-next.h (WORD_SWITCH_TAKES_ARG): Return number of args taken. | |
6498 | ||
6499 | * tm-next.h (CPLUSPLUS): Deleted (obsolete). | |
6500 | ||
6501 | * out-next.c (flag_no_mach_text_sections, handle_pragma): | |
6502 | Handle #pragma CC_NO_MACH_TEXT_SECTIONS. | |
6503 | ||
6504 | Mon Mar 18 12:12:13 1991 Richard Stallman (rms at goldman) | |
6505 | ||
6506 | * cplus-pt.c: Renamed from cplus-template.c. | |
6507 | * Makefile.in (cplus-pt.o): New target. | |
6508 | ||
6509 | * c-typeck.c (initializer_constant_valid_p): | |
6510 | Allow casts that change width only for explicit values. | |
6511 | * tree.c (really_constant_p): New function. | |
6512 | * expr.c (expand_expr): Handle MINUS_EXPR with EXPAND_SUM. | |
6513 | ||
6514 | * tm-m68k.h (FUNCTION_EXTRA_EPILOGUE): Don't normally define this. | |
6515 | * out-m68k.c (use_return_insn): Don't look at FUNCTION_EXTRA_EPILOGUE. | |
6516 | ||
6517 | * out-sparc.c (normal_comp_operator): Replace comparison_code_p. | |
6518 | ||
6519 | Sun Mar 17 22:53:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6520 | ||
6521 | * m68k.md: Delete patterns now converted by combine to simpler | |
6522 | patterns or otherwise obsolete. Specifically: ZERO_EXTRACT from | |
6523 | an HImode object, setting cc0 to SUBREG or AND, umulhi3, umulsi3, | |
6524 | AND of a ZERO_EXTRACT, shifts of 24 and 16 from MEM, and patterns with | |
6525 | constants as first operand of comparison operator. | |
6526 | Remove COMPARE except as a SET_SRC. | |
6527 | ||
6528 | * alliant.md, tahoe.md, rs6000.md: Remove COMPARE except as a SET_SRC. | |
6529 | ||
6530 | * flags.h (flag_combine_regs): Deleted. | |
6531 | * toplev.c: Likewise. | |
6532 | * tm-a29k.h, tm-romp.h, tm-rs6000.h (OVERRIDE_OPTIONS): No longer | |
6533 | turn on flag_combine_regs. | |
6534 | ||
6535 | * tm-romp.h, tm-rs6000.h (SLOW_BYTE_ACCESS): Set to 1. | |
6536 | ||
6537 | * Makefile.in (combine.o): Include insn-codes.h and insn-attr.h. | |
6538 | ||
6539 | * combine.c: Major rework to support many more simplifications in | |
6540 | a more regular manner and support combining three insns into two. | |
6541 | The most significant changes are the following: | |
6542 | (subst): Remove simplifications involving ZERO_EXTRACT, SIGN_EXTRACT, | |
6543 | ZERO_EXTEND, SIGN_EXTEND, AND, and shifts. | |
6544 | Call new routines below; in the case of comparisons, handle call | |
6545 | find_next_use if we need to change the comparison code or the | |
6546 | particular MODE_CC mode required. | |
6547 | No need to ever change ASHIFT to MULT here. | |
6548 | (expand_compound_operation): New function to convert | |
6549 | {ZERO,SIGN}_{EXTRACT,EXTEND} into the appropriate pair of shifts. | |
6550 | (make_compound_operation): New function to make | |
6551 | {ZERO,SIGN}_{EXTRACT,EXTEND} operations from shifts and ANDs. | |
6552 | If we are on a machine (like a Vax) that has only arithmetic shifts, | |
6553 | convert logical to arithmetic shifts when it doesn't matter | |
6554 | which shift is used (simplify_shift_const canonicalizes to | |
6555 | logical shifts). | |
6556 | If inside an address, convert ASHIFT to MULT. | |
6557 | (significant_bits): New function to determine which bits of | |
6558 | a value are known to be zero. | |
6559 | (simplify_and_const_int): Use significant_bits. | |
6560 | Call expand_compound_operation when required. | |
6561 | Handle AND of an ASHIFTRT with a constant. | |
6562 | Don't make ZERO_{EXTEND,EXTRACT} here. | |
6563 | (simplify_shift_const): New function to simplify a shift of an | |
6564 | an object by a constant integer. | |
6565 | (gen_lowpart_for_combine): When applied to a comparison operator, | |
6566 | return comparison operator in requested mode. | |
6567 | (simplify_set_cc0_and): Deleted. | |
6568 | (try_combine): No longer call simplify_set_cc0_and. | |
6569 | (reversible_comparison_p): New function. | |
6570 | (simplify_comparison): New function. | |
6571 | ||
6572 | (combine_instructions): Allocate and initialize new vars | |
6573 | reg_last_set_{table_tick,label,invalid}. | |
6574 | (update_table_tick, record_value_for_reg): New functions. | |
6575 | (get_last_value_validate, get_last_value): New functions. | |
6576 | (record_dead_and_set_regs): Call record_value_for_reg. | |
6577 | ||
6578 | (find_split_point): New function to locate a place where a complex | |
6579 | pattern can be split into two insns. | |
6580 | (try_combine): If we are combining three insns and can't recognize the | |
6581 | new pattern, try to split it. | |
6582 | Call new functions below to update insn status. | |
6583 | Return insn at which to continue scan. | |
6584 | (adjacent_insns_p, add_links, remove_links): Deleted. | |
6585 | (add_incs, add_no_conflicts, remove_death, move_deaths_2): Deleted. | |
6586 | (move_deaths): Generalize to include movements in both directions. | |
6587 | Update reg_first_use when we make an earlier use. | |
6588 | (distribute_notes, distribute_links): New functions. | |
6589 | (combine_instructions): No longer need check for LOG_LINKS | |
6590 | pointing at a NOTE. | |
6591 | Rescan from location indicated by try_combine, if any, when | |
6592 | combining three insns. | |
6593 | Update reg_first_use if we moved a use to a later insn. | |
6594 | ||
6595 | (try_distrib): Deleted. | |
6596 | (apply_distributive_law): New function, contains code from old | |
6597 | try_distrib. | |
6598 | (subst): Call apply_distributive_law for applicable operations. | |
6599 | Try to apply associative law. | |
6600 | (combine_instructions): No longer call try_distrib. | |
6601 | (dump_combine_stats, dump_combine_total_stats, combine_instructions): | |
6602 | No longer count distributer statistics. | |
6603 | ||
6604 | (can_combine_p): New function to see if I2 or I1 is combinable. | |
6605 | Be more precise about when we can combine insns involving cc0. | |
6606 | Eliminate -fcombine-regs; always do it. | |
6607 | (try_combine): | |
6608 | Call can_combine_p to validate I2 and I1. | |
6609 | If -fexpensive-optimizations, try to simplify I1 or I2. | |
6610 | Handle (set (foo) (const_int 0)) followed by a STRICT_LOW_PART | |
6611 | assignment to FOO as a ZERO_EXTEND. | |
6612 | (subst): Quit very early if X is a root node (like PC0). | |
6613 | Remove most canonicalizations done in first switch statement; now | |
6614 | done elsewhere. | |
6615 | Call simplify_{unary,binary,ternary}_operation. | |
6616 | Add cases involving logical and arithmetic operations applied | |
6617 | to comparison operators or values with only one significant bit. | |
6618 | Add more cases involving ABS since comparisons returning values | |
6619 | can be done with ABS. | |
6620 | Avoid generating (const (const ...) ...). | |
6621 | Convert (xmult (x_extend ...) ...) to a widening multiply. | |
6622 | ||
6623 | (gen_rtx_combine): New function to search for an operation in | |
6624 | undobuf. Many callers to gen_rtx changed to call this function. | |
6625 | (copy_substitutions): Only copy a substitution if it was placed into | |
6626 | more than one location. | |
6627 | ||
6628 | Sun Mar 17 17:26:09 1991 Richard Stallman (rms@mole.ai.mit.edu) | |
6629 | ||
6630 | * c-common.c (shorten_compare): Warn for (unsigned char) == -1. | |
6631 | ||
6632 | * final.c (final_scan_insn): Set debug_insn before first output. | |
6633 | (output_asm_insn): Clear it here. | |
6634 | ||
6635 | * expr.c (do_jump): Don't try to split non-integers. | |
6636 | ||
6637 | * fixincludes (dnetdb.h): Fix missing semi in nodeent. | |
6638 | (rusers.h): Code to fix this file was duplicated. | |
6639 | ||
6640 | * toplev.c (decl_printable_name): Now given an extra arg. | |
6641 | (decl_name): Accept that arg. | |
6642 | (announce_function, report_error_function): Pass that arg. | |
6643 | (error_with_decl, warning_with_decl): Likewise. | |
6644 | ||
6645 | * dbxout.c (getwd) [USG]: Define as macro. | |
6646 | ||
6647 | * c-decl.c (init_decl_processing): Indicate byte alignment for void. | |
6648 | ||
6649 | * expr.c (do_jump_by_parts_*): Compute nwords from compare arg. | |
6650 | Pass 0 as size and alignment to compare_from_rtx. | |
6651 | (do_jump_by_parts_greater): Compare high word first. | |
6652 | Handle unsigned compares properly. | |
6653 | Fix logic for dropping through versus failing. | |
6654 | ||
6655 | * expr.c (expand_builtin): Change cmpstrsi4 to cmpstrsi as in optabs.c. | |
6656 | ||
6657 | * c-common.c (truthvalue_conversion): Handle ptr vs int in MINUS_EXPR. | |
6658 | ||
6659 | Sun Mar 17 15:43:48 1991 Matthew Self (mself@next.com) | |
6660 | ||
6661 | Allow multiple return points in some framless functions (2/2/91): | |
6662 | ||
6663 | * m68k.md (return): New insn pattern for rts (and rtd). | |
6664 | ||
6665 | * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, | |
6666 | USE_RETURN_INSN): Call new functions to avoid giant macros | |
6667 | which are hard to edit. | |
6668 | ||
6669 | * out-m68k.c (output_function_prologue, | |
6670 | output_function_epilogue): New functions. | |
6671 | ||
6672 | * out-m68k.c (use_return_insn): New function. Determines | |
6673 | whether the epilogue will consist of a single insn. Some | |
6674 | code was duplicated from output_function_epilogue. There | |
6675 | should be probably a new layout routine to do this common | |
6676 | work. Also #include "flags.h". | |
6677 | ||
6678 | *out-m68k.c (output_function_epilogue): Don't output | |
6679 | anything if the epilogue was output as RTL. We detect this | |
6680 | by the barrier insn which is always placed after a return | |
6681 | insn. This machine-independent test should probably be moved | |
6682 | back into final.c and removed from out-sparc.c and out-m88k.c. | |
6683 | ||
6684 | * out-next.c: Don't #include "flags.h". | |
6685 | ||
6686 | Sun Mar 17 00:07:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6687 | ||
6688 | * genemit.c (gen_exp): Support constm1_rtx. | |
6689 | * genrecog.c (add_to_sequence): Likewise. | |
6690 | ||
6691 | Sat Mar 16 17:26:58 1991 Richard Stallman (rms@mole.ai.mit.edu) | |
6692 | ||
6693 | * c-lang.c (maybe_building_objc_message_expr): New dummy function. | |
6694 | * c-typeck.c (warn_for_assignment): Use it. | |
6695 | ||
6696 | * toplev.c (compile_file): Write out all static consts that are used. | |
6697 | ||
6698 | Sat Mar 16 14:08:12 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6699 | ||
6700 | * integrate.c (subst_constants): Don't replace registers in USE or | |
6701 | CLOBBER expressions. | |
6702 | ||
6703 | * genattrtab.c (main): Properly set up a default DEFINE_ASM_ATTRIBUTES. | |
6704 | ||
6705 | * cse.c (cse_insn): Correctly check for a hash table element equal to | |
6706 | the destination of a SET. | |
6707 | ||
6708 | Fri Mar 15 16:55:32 1991 Ron Guilmette (rfg at pepper.ncd.com) | |
6709 | ||
6710 | * Makefile.in (OBJS): Added dwarfout.o to list of things to be | |
6711 | built. | |
6712 | ||
6713 | * Makefile.in (dwarfout.o): Added this rule. | |
6714 | ||
6715 | * dwarfout.c (FT_*_long_long): Added default definitions for all of | |
6716 | these extended fundamental type codes to cater to plain vanilla | |
6717 | <dwarf.h> file which do not define codes for these fundamental types. | |
6718 | ||
6719 | * dwarfout.c (TREE_UID): Added a local definition of this macro | |
6720 | because gcc v2 no longer provides a definition for it and because | |
6721 | dwarfout.c needs some way of getting a unique numeric code for each | |
6722 | type. | |
6723 | ||
6724 | * dwarfout.c (CLASSTYPE_*): Added some local default definitions | |
6725 | for these macros in order to get around the fact that they are | |
6726 | currently defined only in cplus-tree.h (and rms wants dwarfout.c | |
6727 | to be language independent). | |
6728 | ||
6729 | * dwarfout.c (BITFIELD_OFFSET_*): Added some local macros to help | |
6730 | compute various quantities relating to bitfield offsets. | |
6731 | ||
6732 | * dwarfout.c (location_attribute): Changed code which outputs location | |
6733 | attributes for bitfield so that it uses gcc2 macros. | |
6734 | ||
6735 | * dwarfout.c (byte_size_attribute): Changed code which outputs the | |
6736 | byte_size attribute so that it no longer uses the obsolete | |
6737 | DECL_SIZE_UNIT macro (from gcc1). | |
6738 | ||
6739 | * dwarfout.c: Replaced all uses of the obsolete macro TREE_PACKED | |
6740 | to uses of the new gcc2 macro DECL_BIT_FIELD. | |
6741 | ||
6742 | * dwarfout.c (deriv_list_attribute): Fixed typo "decl" => "type". | |
6743 | ||
6744 | * dwarfout.c (output_dies_for_type): Replaced bogus reference to the | |
6745 | non-existant routine "output_member_function_type_die" with a proper | |
6746 | reference to the routine "output_subroutine_type_die". | |
6747 | ||
6748 | * dwarfout.c (output_symbols_for_block): Fixed calling error which | |
6749 | was introduced by rms. | |
6750 | ||
6751 | * dwarfout.c: Replaced all uses of the obsolete macro STMT_SUBBLOCKS | |
6752 | with uses of the new gcc2 macro BLOCK_SUBBLOCKS. | |
6753 | ||
6754 | * dwarfout.c (output_symbol): Removed reference to TAG_DECL. The | |
6755 | use of TAG_DECLs was an early idea which didn't work out. | |
6756 | ||
6757 | * dwarfout.c: (dwarfout_init): Changed name from dwarfout_initialize | |
6758 | because rms failed to do so when he changed the name in the call. | |
6759 | ||
6760 | Fri Mar 15 17:22:14 1991 Richard Stallman (rms@mole.ai.mit.edu) | |
6761 | ||
6762 | * c-decl.c (pushdecl): Add `%s' to some error messages. | |
6763 | ||
6764 | * sparc.md: Add extra assembler alternative in last change. | |
6765 | ||
6766 | * cse.c (simplify_unary_operation, simplify_binary_operation): | |
6767 | Remove error checks that rejected SFmode. | |
6768 | ||
6769 | * expr.c (get_pointer_alignment): Don't lose on casts from integer | |
6770 | to pointer. | |
6771 | ||
6772 | Fri Mar 15 07:57:19 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6773 | ||
6774 | * c-decl.c (pushdecl): Fix typo in previous change. | |
6775 | ||
6776 | * cse.c (simplify_{unary,binary}_operation): Fix usage of | |
6777 | REAL_VALUE_FROM_CONST_DOUBLE in recent change. | |
6778 | ||
6779 | Thu Mar 14 18:56:53 1991 Richard Stallman (rms@mole.ai.mit.edu) | |
6780 | ||
6781 | * c-decl.c (pushdecl): Warn if mismatch with implicit decl. | |
6782 | ||
6783 | * final.c (final_start_function): Handle NON_SAVING_SETJMP. | |
6784 | Include hard-reg-set.h. | |
6785 | * function.c (setjmp_protect, setjmp_protect_args): Likewise. | |
6786 | (expand_function_end): Call those if NON_SAVING_SETJMP. | |
6787 | ||
6788 | Thu Mar 14 14:40:45 1991 James Wilson (wilson at cygnus.com) | |
6789 | ||
6790 | * reload1.c (order_regs_for_reload): When REG_ALLOC_ORDER is defined, | |
6791 | use that definition only to order regs, do not try to put call | |
6792 | used regs first. This eliminates the benefits of defining the macro | |
6793 | in the first place. | |
6794 | ||
6795 | * real.h: New macros for real arithmetic, REAL_VALUE_FIX_TRUNCATE, | |
6796 | REAL_VALUE_UNSIGNED_FIX_TRUNCATE, REAL_VALUE_FIX, | |
6797 | REAL_VALUE_UNSIGNED_FIX. | |
6798 | ||
6799 | * cse.c (simplify_unary_operation): Added code to simplify floating | |
6800 | point rtx. Now simplifies UNSIGNED_FLOAT, ABS, FLOAT_TRUNCATE, | |
6801 | FLOAT_EXTEND, FIX, and UNSIGNED_FIX. Add aborts to default case | |
6802 | of switches. | |
6803 | (simplify_binary_operation): Added code to simplify floating point | |
6804 | rtx. Now simplifies PLUS, MINUS, MULT, and DIV. Add aborts to | |
6805 | default case of switches. | |
6806 | (*): Always use REAL_VALUE_TYPE and REAL_VALUE_FROM_CONST_DOUBLE | |
6807 | when extracting a floating point number from a CONST_DOUBLE. | |
6808 | ||
6809 | Thu Mar 14 14:40:45 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6810 | ||
6811 | * expr.c (get_pointer_alignment): Update ALIGN for NOP_EXPR. | |
6812 | ||
6813 | * c-decl.c (builtin_function): New arg LIBRARY_NAME. | |
6814 | (initialize_decl_processing): Pass that argument. | |
6815 | ||
6816 | * c-decl.c (grokdeclarator): Handle C_TYPE_FIELDS_VOLATILE. | |
6817 | (finish_struct): Likewise. | |
6818 | * c-tree.h (C_TYPE_FIELDS_VOLATILE): Define it. | |
6819 | ||
6820 | * Makefile.in (gnulib1, gnulib2.portable): Test $$? after compilation. | |
6821 | ||
6822 | * c-typeck.c (check_format): Discard multiple NOP_EXPR levels. | |
6823 | ||
6824 | * objc-actions.c (build_message_expr, build_selector_expr, | |
6825 | build_encode_expr, get_class_ivars, start_class): Finding | |
6826 | Objective-C code in c source files is now a fatal error. | |
6827 | (They should recompile with -lang-objc.) | |
6828 | ||
6829 | * objc-actions.c (gen_method_decl): Don't crash for syntax | |
6830 | error in method declaration: -bar: x, y | |
6831 | (encode_array): Treat an undimensioned array the same as a pointer. | |
6832 | ||
6833 | Thu Mar 14 07:39:30 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6834 | ||
6835 | * reorg.c (try_merge_delay_insns): Previous fix had effect of | |
6836 | disabling this function. Rework to take into account things | |
6837 | needed, instead of set. This is still somewhat of a kludge. | |
6838 | ||
6839 | * recog.c (apply_change_group): An insn consisting of just a USE | |
6840 | or CLOBBER is always valid, but recog_memoized returns a -1 for it. | |
6841 | ||
6842 | * genattrtab.c: Count all definitions as well as counting insns; use | |
6843 | definition # in error message. | |
6844 | Most functions that accepted insn_code now accept insn_index as well | |
6845 | and similarly for structures containing insn_code. | |
6846 | ||
6847 | * reorg.c (try_merge_delay_insns): If not an annulling branch, take | |
6848 | into account things set in the delay slot. This prevents merging | |
6849 | two increments into one. | |
6850 | ||
6851 | * reorg.c (dbr_schedule): Fix typo in printing statistics. | |
6852 | ||
6853 | Thu Mar 14 02:11:56 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6854 | ||
6855 | * genemit.c, genoutput.c, genrecog.c: Count all definitions | |
6856 | as well as counting insns; use # of definition in error messages. | |
6857 | ||
6858 | * toplev.c (pipe_closed, float_signal): Give it an explicit arg. | |
6859 | * cplus-decl.c (sigsegv): Likewise. | |
6860 | * cccp.c (pipe_closed): Likewise. | |
6861 | ||
6862 | * cccp.c: Delete trigraph from comment. | |
6863 | ||
6864 | * Makefile.in (realclean): Delete objc parser files. | |
6865 | ||
6866 | * assert.h (__assert for __GNUC__): Don't return value of abort. | |
6867 | ||
6868 | Wed Mar 13 16:12:54 1991 Richard Stallman (rms at churchy.ai.mit.edu) | |
6869 | ||
6870 | * expr.c (do_jump_by_parts_greater): Don't lose if labels are 0. | |
6871 | ||
6872 | * cplus-edsel.c: New name for cplus-cadillac.c. | |
6873 | * Makefile.in (cplus-edsel.o): Fix the compilation rule. | |
6874 | ||
6875 | Wed Mar 13 06:47:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6876 | ||
6877 | * reorg.c (mark_set_resources): Any registers mentioned in REG_INC | |
6878 | notes are set by an INSN. | |
6879 | ||
6880 | * flags.h (flag_expensive_optimizations): Add new flag. | |
6881 | * toplev.c: Support -fexpensive-optimizations and turn on for -O2. | |
6882 | * stmt.c (preserve_subexpressions_p): Use flag_expensive_optimizations | |
6883 | instead of testing for -O2 explicitly. | |
6884 | ||
6885 | * expr.h (operand_subword): Add missing declaration. | |
6886 | ||
6887 | * reload1.c (eliminate_regs): Handle INSN_LIST (found in REG_NOTES). | |
6888 | ||
6889 | * tm-i386.h (RETURN_POPS_ARGS): Don't call aggregate_type_p with | |
6890 | IDENTIFIER_NODE. | |
6891 | ||
6892 | Wed Mar 13 00:00:29 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6893 | ||
6894 | * optabs.c (expand_binop, expand_unop): If wordwise, make target non0. | |
6895 | ||
6896 | Tue Mar 12 15:24:09 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6897 | ||
6898 | * fixincludes: Quote the # in an echo. | |
6899 | * fixincludes: Fix typos handling size_t and ptrdiff_t. | |
6900 | * fixincludes (sys/file.h): Fix incorrect conditional in Ultrix. | |
6901 | ||
6902 | * c-typeck.c (initializer_constant_valid_p): Allow NON_LVALUE_EXPR. | |
6903 | Return a tree that indicates the relocation. | |
6904 | All callers changed. | |
6905 | ||
6906 | * jump.c (jump_optimize): Rerecognize jump insn after inverting it. | |
6907 | ||
6908 | * expr.c (do_jump): | |
6909 | Use can_compare_p on the operand mode, not the comparison's mode. | |
6910 | ||
6911 | * reload.c (subst_reloads): Fix dumb error in last change. | |
6912 | ||
6913 | * expr.c (do_jump_by_parts_equality*): Fix logic errors. | |
6914 | ||
6915 | Mon Mar 11 14:27:40 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6916 | ||
6917 | * reload.c (subst_reloads): Don't make subregs, just new regs. | |
6918 | ||
6919 | * expr.c (do_jump_by_parts_equality, do_jump_by_parts_greater): | |
6920 | (do_jump_for_compare, do_jump_by_parts_equality_rtx): New functions. | |
6921 | (do_jump): Use them to handle wide values. | |
6922 | * optabs.c (can_compare_p): New function. | |
6923 | ||
6924 | * reload1.c (emit_reload_insns): Don't make subreg around RELOADREG; | |
6925 | just make a new REG. | |
6926 | ||
6927 | * cse.c, varasm.c: Fix typos. | |
6928 | ||
6929 | * sparc.md (move SI to reg_or_nonsymb_mem_operand): | |
6930 | Separate third alternative into two alternatives. | |
6931 | * tm-sparc.h (PREFERRED_RELOAD_CLASS): Return CLASS as given. | |
6932 | ||
6933 | * optabs.c (operand_subword): Fix typo. | |
6934 | ||
6935 | * longlong.h (__umulsidi3): Return .ll field. | |
6936 | ||
6937 | Mon Mar 11 11:43:21 1991 Jeffrey A. Law (law at mole.ai.mit.edu) | |
6938 | ||
6939 | * make-hp9k2bsd: New file. | |
6940 | * configure (hp9k200-bsd): Use it. | |
6941 | ||
6942 | Mon Mar 11 07:08:12 1991 Michael Tiemann (tiemann at cygnus.com) | |
6943 | ||
6944 | * cplus-lex.c (check_newline): Clear TREE_INT_CST_HIGH once instead | |
6945 | of clearing TREE_INT_CST_LOW twice. | |
6946 | ||
6947 | Mon Mar 11 06:51:52 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6948 | ||
6949 | * flow.c (mark_used_regs): If we are going to use a later | |
6950 | register to auto-increment, make sure it really is a REG. | |
6951 | In the case above, count any calls crossed by the new register. | |
6952 | ||
6953 | * global-alloc.c (global_conflicts): Mark registers modified by | |
6954 | virtue of a REG_INC note as modified in the insn to make conflicts. | |
6955 | (mark_reg_store): Accept SETTER value of 0. | |
6956 | ||
6957 | Sun Mar 10 16:56:25 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6958 | ||
6959 | * optabs.c (operand_subword): New function to get one word of operand. | |
6960 | (expand_binop, expand_unop): Use it for word at a time case. | |
6961 | ||
6962 | * configure (a29-bsd*): Renamed from a29-sysv*. | |
6963 | ||
6964 | * expr.c (emit_library_call): Handle GNULIB_NEEDS_DOUBLE. | |
6965 | * tm-i860.h (GNULIB_NEEDS_DOUBLE): Define it. | |
6966 | ||
6967 | * tm-harris.h (ASM_FILE_START): Output a .file. | |
6968 | ||
6969 | * reload1.c (constraint_accepts_reg_p): Understand reg classes. | |
6970 | ||
6971 | Sun Mar 10 06:58:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6972 | ||
6973 | * expr.c (move_by_pieces, move_by_pieces_ninsns, emit_push_insn): | |
6974 | If SLOW_UNALIGNED_ACCESS is defined, respect alignment even if | |
6975 | STRICT_ALIGNMENT is not defined. | |
6976 | * tm-a29k.h (SLOW_UNALIGNED_ACCESS): Define this. | |
6977 | ||
6978 | Sun Mar 10 02:57:40 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
6979 | ||
6980 | * cccp.c (handle_directive): If pass_thru and -C, print the | |
6981 | input before removing comments from it. | |
6982 | ||
6983 | Sat Mar 9 21:18:48 1991 Torbjorn Granlund (tege at musta.nada.kth.se) | |
6984 | ||
6985 | * gnulib2.c (div_qrnnd, __umulsidi3, lowpart, highpart, B): Move | |
6986 | to longlong.h. | |
6987 | (udiv_qrnnd): New name of div_qrnnd. Rewrite to work correctly. | |
6988 | (file header): Remove obsolete comment about internal format. | |
6989 | (bits): Remove this function. count_leading_zeros in longlong.h | |
6990 | is similar. | |
6991 | (__udivdi3): Use count_leading_zeros instead of bits. | |
6992 | (__udivdi3): Use umul_ppmm instead of __umulsidi3, as this makes | |
6993 | better code. | |
6994 | ||
6995 | Sat Mar 9 18:02:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
6996 | ||
6997 | * jump.c (jump_optimize): Avoid looking at PATTERN of NOTE | |
6998 | or CODE_LABEL. | |
6999 | ||
7000 | * reload1.c (reg_is_output_reload, count_for_*groups): Use | |
7001 | HARD_REG_SET instead of array to avoid bzero calls. | |
7002 | (reload_reg_used*): Likewise. | |
7003 | ||
7004 | * emit-rtl.c (gen_rtx, init_emit_once): Pre-compute CONST_INTs | |
7005 | from -64 to 64 to save space. | |
7006 | ||
7007 | Sat Mar 9 14:28:37 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7008 | ||
7009 | * reload1.c (choose_reload_regs): Fix typo in last change. | |
7010 | ||
7011 | Sat Mar 9 01:03:01 1991 Michael Tiemann (tiemann at cygnus.com) | |
7012 | ||
7013 | * cplus-decl.c (pushtag): Don't call `pushdecl' for nested type if | |
7014 | the type is already defined. | |
7015 | ||
7016 | Fri Mar 8 17:24:20 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7017 | ||
7018 | * ns32k.md, vax.md (right shift patterns): When generating a right | |
7019 | shift, use xSHIFTRT but use (neg x) as the shift count to | |
7020 | more accurately represent what is supported by the machine. | |
7021 | ||
7022 | * expmed.c (emit_store_flag): Can't narrow result of scc insn before | |
7023 | normalizing. | |
7024 | ||
7025 | Fri Mar 8 12:56:41 1991 Michael Tiemann (tiemann at cygnus.com) | |
7026 | ||
7027 | * cplus-class.c (pushclass): Set CURRENT_FUNCTION_DECL to | |
7028 | appropriate value so that pushtag does the right thing for tags | |
7029 | pushed into scope. | |
7030 | ||
7031 | Fri Mar 8 02:47:53 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7032 | ||
7033 | * gcc.c (delete_temp_files): Delete only ordinary files. | |
7034 | ||
7035 | * tree.c, cplus-tree.c (TYPE_HASH): 777777 was supposed to be octal. | |
7036 | ||
7037 | * reload1.c (choose_reload_regs): Properly ensure EQUIV | |
7038 | is free and of the desired class. | |
7039 | When a reload may be a group, mark all its regs in use. | |
7040 | ||
7041 | * reload.c (push_reload): Don't call reg_overlap_mentioned_p | |
7042 | unless IN is a REG or MEM. | |
7043 | ||
7044 | * c-common.c, cplus-search.c, cplus-class.c (NULL): | |
7045 | Undef before defining. | |
7046 | ||
7047 | * sdbout.c (sdbout_one_type): Don't temporarily clear KNOWN_TYPE_TAG. | |
7048 | ||
7049 | Thu Mar 7 10:53:32 1991 Tom Wood (wood at dg-rtp.dg.com | |
7050 | ||
7051 | * toplev.c (main): Add -dp: annotate the assembly with a comment | |
7052 | describing the pattern and alternative used. Also, make -dm work | |
7053 | for USG systems. | |
7054 | * genoutput.c (output_epilogue): Output the array `insn_name'. | |
7055 | * final.c (debug_insn, final_scan_insn): Record the value of the | |
7056 | last insn processed by final_scan_insn. | |
7057 | (output_asm_insn): Annotate the assembly output. | |
7058 | (ASM_COMMENT_START): Provide a default value. | |
7059 | * tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_COMMENT_START): | |
7060 | Specify "/". | |
7061 | ||
7062 | Thu Mar 7 06:15:04 1991 Michael Tiemann (tiemann at cygnus.com) | |
7063 | ||
7064 | * cplus-class.c (propagate_basetype_offsets): Check ASSOC_TYPE in | |
7065 | addition to return value from assoc value before aborting. ??? | |
7066 | should figure out why assocs are not shared. | |
7067 | ||
7068 | Wed Mar 6 16:29:37 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7069 | ||
7070 | * c-decl.c (NULL): Undef before defining. | |
7071 | ||
7072 | * cccp.c (do_include): Allocate file name permanently. | |
7073 | ||
7074 | Wed Mar 6 09:06:39 1991 Tom Wood (wood at dg-rtp.dg.com) | |
7075 | ||
7076 | * m88k.md (and/ashift): Added for the new combine.c (ashift/and | |
7077 | works with the previous version). | |
7078 | (bcnd insns): Use bcnd to test for sign and zero. | |
7079 | (muldf3, divdf3): Use new method to deal with a power of two. | |
7080 | (andsi3, iorsi3, xorsi3): Split into two insns for some constants. | |
7081 | (call, call_value): Deal properly with a CONST_INT address. | |
7082 | * out-m88k.c (call_address_operand): Don't allow CONST_INT. | |
7083 | (uses_arg_area_p): New function for -moptimize-arg-area. | |
7084 | * tm-m88k.h (TARGET_SWITCHES): Delete -mpic in favor of -fpic. | |
7085 | Add -moptimize-arg-area and -mno-optimize-arg-area. | |
7086 | ||
7087 | Wed Mar 6 00:07:09 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7088 | ||
7089 | * real.h (REAL_VALUE_FROM_CONST_DOUBLE): Takes input and output args. | |
7090 | * integrate.c (copy_for_inline, copy_rtx_and_substitute): | |
7091 | (restore_constants): Calls changed. | |
7092 | ||
7093 | Tue Mar 5 23:06:36 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7094 | ||
7095 | * stmt.c (fixup_gotos): Handle jumping to end of rtl. | |
7096 | ||
7097 | * c-decl.c (store_parm_decls): If -traditional, | |
7098 | allow unsigned int in prototype in place of int. | |
7099 | ||
7100 | * cplus-cadillac.c: Delete all but the stubs. | |
7101 | ||
7102 | Tue Mar 5 16:59:18 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7103 | ||
7104 | * jump.c (jump_optimize): Handle case of only NOTE insns after | |
7105 | NOTE_INSN_LOOP_BEG. | |
7106 | (duplicate_loop_exit_test): Return 0 when we hit a block | |
7107 | start or end, rather than quitting loop and getting confused. | |
7108 | ||
7109 | * integrate.c (subst_constants): Correctly move constants to | |
7110 | second operand of commutative operations. | |
7111 | ||
7112 | * jump.c (comparison_code_p): Deleted. | |
7113 | * combine.c (subst): Use GET_RTX_CLASS instead of comparison_code_p. | |
7114 | * cse.c (find_comparison_args): Likewise. | |
7115 | * recog.c (comparison_operator): Likewise. | |
7116 | * loop.c (get_condition): Likewise. | |
7117 | ||
7118 | Tue Mar 5 14:21:57 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7119 | ||
7120 | * cse.c (fold_rtx): When checking for constant pool addresses, | |
7121 | handle addresses constructed from LO_SUM. | |
7122 | ||
7123 | * recog.c (constrain_operands): If before reload, `m' and `o' | |
7124 | accept all that could be reloaded to fit those constraints. | |
7125 | ||
7126 | * reload1.c (gen_input_reload): Return the first insn emitted by | |
7127 | this function, instead of the last insn emitted. | |
7128 | ||
7129 | * stmt.c (expand_end_loop): When move exit test to loop bottom, | |
7130 | also move a preceeding NOTE_INSN_LOOP_CONT note if it exists. | |
7131 | ||
7132 | * gcc.c (process_command): Check for running out of args after option. | |
7133 | ||
7134 | * out-mips.c, out-romp.c: Test BYTES_BIG_ENDIAN with #if. | |
7135 | * tm-i860.h (*_BIG_ENDIAN): Define as 0. | |
7136 | * tm-mips-news.h (BYTES_BIG_ENDIAN, WORDS_BIG_ENDIAN): Deleted. | |
7137 | (DECSTATION): Deleted. | |
7138 | ||
7139 | * tm-mips.h: Test WORDS_BIG_ENDIAN with #if. | |
7140 | ||
7141 | * tm-mips.h, tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P): | |
7142 | Use CONST_DOUBLE_LOW and CONST_DOUBLE_HIGH. | |
7143 | ||
7144 | * real.h: dconst0, dconst1, dconstm1 are declared twice. | |
7145 | Eliminate the second redundant declaration. | |
7146 | ||
7147 | * cse.c (FIXED_REGNO_P): Exclude OVERLAPPING_REGNO_P registers. | |
7148 | ||
7149 | * cccp.c (path_include): Handle empty names in path. | |
7150 | ||
7151 | * final.c: Use gvarargs.h, not varargs.h | |
7152 | ||
7153 | * configure (i860, i860-bsd): Handle +gas. | |
7154 | * tm-i860g.h, tm-i860bsdg.h: New files. | |
7155 | ||
7156 | Mon Mar 4 22:41:36 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7157 | ||
7158 | * cse.c (simplify_unary_operation): When making a real const, use MODE. | |
7159 | ||
7160 | Mon Mar 4 21:35:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7161 | ||
7162 | * cse.c (cse_end_of_basic_block): Correctly handle case where | |
7163 | we find a "new" branch to follow. | |
7164 | (cse_end_of_basic_block, cse_main, cse_basic_block): PATH_SIZE | |
7165 | is now actual size, not size - 1. | |
7166 | ||
7167 | Mon Mar 4 06:44:27 1991 Michael Tiemann (tiemann at cygnus.com) | |
7168 | ||
7169 | * cplus-decl.c (poplevel): Change test for whether to clobber the | |
7170 | DECL_CONTEXT of local variables. Now we won't clobber context for | |
7171 | any nested types. | |
7172 | ||
7173 | Mon Mar 4 00:39:11 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7174 | ||
7175 | * jump.c (jump_optimize): When deleting x=y after y=x, | |
7176 | don't delete more than one death note, and don't delete any | |
7177 | unless we really do delete x=y. | |
7178 | ||
7179 | * cccp.c (main): Support -lang-objc++. | |
7180 | Eliminate compilation parameter CPLUSPLUS. | |
7181 | ||
7182 | * cccp.c (main): Handle leading or trailing space in `predefs'. | |
7183 | ||
7184 | * fixincludes: Fix typos handling size_t and ptrdiff_t. | |
7185 | ||
7186 | Sun Mar 3 16:41:24 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7187 | ||
7188 | * cccp.c (main): Handle multiple spaces, and tabs, in `predefs'. | |
7189 | * gcc.c (do_spec_1): Allow extra whitespace in CPP_PREDEFINES. | |
7190 | Also transform -Dfoo=bar into -D__foo__=bar correctly. | |
7191 | ||
7192 | * varasm.c (assemble_zeros): Use ASM_BYTE if defined. | |
7193 | ||
7194 | * reload1.c (reload): Only special-case a spill reg alone in a class | |
7195 | if there is non-group need for that class. Be careful not to count | |
7196 | a reg in the usual place if it was counted in the special case. | |
7197 | ||
7198 | * reload1.c (order_regs_for_reload): Make fixed regs and | |
7199 | eliminable regs twice as bad as explicitly mentioned regs. | |
7200 | ||
7201 | * reload1.c (choose_reload_regs): Fix typos in last change. | |
7202 | ||
7203 | * c-decl.c (init_decl_processing): | |
7204 | Return type of memcpy varies if -traditional. | |
7205 | (ptr_ftype_ptr_cptr_sizet): Global var deleted. | |
7206 | ||
7207 | * reload1.c (emit_reload_insns): When updating reg_reloaded_contents, | |
7208 | first always clear, then maybe store nonzero value. | |
7209 | ||
7210 | Sun Mar 3 16:12:17 1991 Ken Raeburn (raeburn at watch.com) | |
7211 | ||
7212 | * cplus-template.c (mangle_class_name_for_template): Add two | |
7213 | leading underscores, to avoid conflicts with programmer's names. | |
7214 | ||
7215 | * cplus-tree.h (struct lang_identifier): New field `template' | |
7216 | points to template info from which this identifier was | |
7217 | constructed. | |
7218 | ||
7219 | * cplus-template.c (current_template_expansion, | |
7220 | current_template_name): Variables deleted. | |
7221 | ||
7222 | * cplus-template.c (lookup_template_class): Top half of old | |
7223 | instantiate_template; returns the id_node. | |
7224 | (instantiate_template): Takes the id_node as argument now. | |
7225 | * cplus-parse.y (template rules): Use separate rule for checking | |
7226 | whether expansion is required. For base classes, always try it; | |
7227 | else do it only if `{' is not next token. | |
7228 | (template_type_name): New nonterminal for template class name | |
7229 | without expansion. | |
7230 | (template_type): Includes expansion, if needed. | |
7231 | ||
7232 | * cplus-input.c (input_from_saved_text): Deleted. | |
7233 | * cplus-template.c (instantiate_template): Call feed_input directly. | |
7234 | ||
7235 | * cplus-parse.y (base_class_visibility_list): Now type <itype>, | |
7236 | cast to tree in base_class action. | |
7237 | ||
7238 | Sun Mar 3 07:46:55 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7239 | ||
7240 | * expr.c (do_store_flag): Consider A & single-bit as cheap. | |
7241 | ||
7242 | * fold-const.c (operand_equal_p): If ARG0 and ARG1 are the same | |
7243 | SAVE_EXPR, they are equal. | |
7244 | ||
7245 | * function.c (fixup_var_refs_1): Move mispositioned code in | |
7246 | (set (zero_extract ...) ...) case; fix incorrect indentation. | |
7247 | ||
7248 | Sun Mar 3 01:11:46 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7249 | ||
7250 | * cccp.c (include_defaults, cplusplus_include_defaults): | |
7251 | Use STANDARD_INCLUDE_DIR. | |
7252 | (STANDARD_INCLUDE_DIR): Define by default as /use/include. | |
7253 | * tm-mips.h (STANDARD_INCLUDE_DIR): Define, if MIPS_BSD43. | |
7254 | (CPP_SPEC): Don't do -I to handle -ZSYSV, -ZBSD43. | |
7255 | ||
7256 | Sat Mar 2 17:20:57 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7257 | ||
7258 | * expr.c (expand_expr, case COND_EXPR): Remove unneeded calls to | |
7259 | safe_from_p in A ? A : FOO cases. | |
7260 | ||
7261 | Sat Mar 2 16:14:24 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7262 | ||
7263 | * reload1.c (choose_reload_regs): Support subreg as reload_override_in. | |
7264 | Likewise reload_reg_rtx. Just don't use REGNO on them. | |
7265 | (emit_reload_insns): Handle subreg as OLDEQUIV. | |
7266 | ||
7267 | * reload1.c (delete_output_reload): Pass the output reload insn, | |
7268 | not a spill reg index. Call in emit_reload_insns changed. | |
7269 | (emit_reload_insns): Don't actually update spill_reg_store | |
7270 | till after all reload insns have been made. | |
7271 | ||
7272 | * reload.c (push_reload): If existing reload has a reload reg, | |
7273 | make sure it fits the class of this reload. | |
7274 | ||
7275 | * stmt.c (fixup_gotos): Fix typo in last change. | |
7276 | ||
7277 | * reload1.c (choose_reload_regs): Don't use equiv reg | |
7278 | that is clobbered in this insn. | |
7279 | ||
7280 | Sat Mar 2 12:19:19 1991 Michael Tiemann (tiemann at cygnus.com) | |
7281 | ||
7282 | * cplus-dem.c (optable): Add op for `operator,'. | |
7283 | ||
7284 | * toplev.c (main): Clear WARN_INLINE if FLAG_NO_INLINE is nonzero. | |
7285 | ||
7286 | * cplus-typeck.c (c_expand_return): Perform conversion to reference | |
7287 | in time that we can warn about the return of more non-lvalues. | |
7288 | Also, fix what appeared to be bugs in the code dealing with | |
7289 | WHATS_RETURNED. | |
7290 | ||
7291 | Sat Mar 2 00:11:18 1991 Ken Raeburn (raeburn at watch.com) | |
7292 | ||
7293 | * cplus-parse.y (base_class): Base class may be a template class. | |
7294 | Split off non-visibility portion into base_class.1. | |
7295 | ||
7296 | * cplus-parse.y: Replaced PUBLIC, PRIVATE, PROTECTED with a single | |
7297 | terminal VISSPEC, with <itype> value, to simplify parser slightly. | |
7298 | * cplus-parse.h (enum rid): Added values for VISSPEC terminal. | |
7299 | * cplus-lex.c (is_reserved_word): Changed token types to VISSPEC, | |
7300 | rid values as appropriate. | |
7301 | (yylex): For VISSPEC, set itype value rather than ttype. | |
7302 | ||
7303 | Fri Mar 1 21:50:23 1991 Ken Raeburn (raeburn at watch.com) | |
7304 | ||
7305 | * cplus-parse.y (.set_base_init): Discarded `preserve' code, which | |
7306 | was doing nothing. | |
7307 | ||
7308 | Fri Mar 1 19:01:25 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7309 | ||
7310 | * reorg.c (redundant_insn_p): Rename second arg to TARGET. | |
7311 | Handle the case where TARGET is a SEQUENCE. | |
7312 | (mark_target_live_regs): Don't get confused by registers conditionally | |
7313 | set in a JUMP_INSN when looking for regs set before used. | |
7314 | ||
7315 | Thu Feb 28 17:25:59 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7316 | ||
7317 | * loop.c (check_dbra_loop): Replace code that thinks it knows | |
7318 | exactly what the RTL looks like (and gets it wrong) with call | |
7319 | to get_condition_for_loop. | |
7320 | ||
7321 | Thu Feb 28 16:35:21 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7322 | ||
7323 | * c-typeck.c (build_compound_expr): Convert array to pointer. | |
7324 | ||
7325 | Wed Feb 27 15:46:54 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7326 | ||
7327 | * gnulib1.c (FLOAT_ARG_TYPE, FLOATIFY): New macros. | |
7328 | (__*sf*): Use them for `float' args. | |
7329 | ||
7330 | * stmt.c (expand_end_case): | |
7331 | Test value of HAVE_casesi and HAVE_tablejump at runtime. | |
7332 | ||
7333 | * stmt.c (fixup_gotos): Check that jump into bindings | |
7334 | really comes from before the start of the bindings. | |
7335 | Use TREE_REGDECL to indicate error message printed. | |
7336 | ||
7337 | Wed Feb 27 15:01:51 1991 Ken Raeburn (raeburn at watch.com) | |
7338 | ||
7339 | * cplus-template.c (end_template_decl): Store correct name in new | |
7340 | decl. Use pushdecl, not pushtag. | |
7341 | (instantiate_template): Use identifier's global value, not its | |
7342 | type. Pass back both template and new class in token value. | |
7343 | * cplus-lex.c (identifier_type): Templates now have type | |
7344 | TEMPLATE_DECL, not TYPE_DECL wrapped around a TEMPLATE_DECL. | |
7345 | ||
7346 | Wed Feb 27 06:27:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7347 | ||
7348 | * loop.c (replace_regs): Don't make nested SUBREGs. | |
7349 | ||
7350 | * reload.c (push_reload): SUBREG_LOC applies only to INLOC, not OUTLOC. | |
7351 | ||
7352 | * cse.c (simplify_binary_operation): Simplify A&A, A|A, and A^A. | |
7353 | ||
7354 | * reload.c (find_reloads_address_1): Correctly handle (post_inc (mem)). | |
7355 | ||
7356 | Tue Feb 26 21:49:15 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7357 | ||
7358 | * expmed.c (store_bit_field, extract_bit_field): Calls to | |
7359 | get_best_mode were passing alignment in bytes rather than | |
7360 | alignment in bits. | |
7361 | ||
7362 | * flags.h (flag_pedantic_errors): Declare it. | |
7363 | ||
7364 | * c-tree.h (C_TYPEDEF_EXPLICITLY_SIGNED): New flag. | |
7365 | * c-decl.c (grokdeclarator): Record that flag in new typedefs. | |
7366 | Check it when determining signedness of bitfields. | |
7367 | ||
7368 | * expr.c (expand_expr): In A ? A : B, make output safe from A and B. | |
7369 | ||
7370 | * reload.c (find_reloads_address, find_reloads_address_1): | |
7371 | Reload any reg that appears in a clobber in the same insn. | |
7372 | (regno_clobbered_p): New function. | |
7373 | ||
7374 | Tue Feb 26 21:41:43 1991 Michael Tiemann (tiemann at cygnus.com) | |
7375 | ||
7376 | * expr.c (expand_expr): Add missing arg to exapnd_exit_loop in | |
7377 | EXIT_EXPR case. | |
7378 | ||
7379 | Tue Feb 26 14:35:47 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7380 | ||
7381 | * c-decl.c (grokdeclarator): Check pedantic error last. | |
7382 | ||
7383 | * tm-i386.h (STRUCT_VALUE, STRUCT_VALUE_INCOMING): Value is 0. | |
7384 | (RETURN_POPS_ARGS): Pop the structure return pointer here. | |
7385 | * out-i386.c (function_epilogue): | |
7386 | current_function_pops_args says how many args to pop. | |
7387 | ||
7388 | * tm-i386.h (CC_Z_IN_NOT_C): New cc flag. | |
7389 | * i386.md (je and jne patterns): Handle this flag. | |
7390 | (pattern using bt insns): Set the flag. | |
7391 | Output test insn instead if bit number is constant. | |
7392 | (insv): Changed constraint. | |
7393 | ||
7394 | * tm-i386.h (enum reg_class): Define ABCI_REGS. | |
7395 | (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Support ABCI_REGS. | |
7396 | Fix the contents for ABC_REGS. | |
7397 | (REG_CLASS_FROM_LETTER): Define `x' for ABCI_REGS. | |
7398 | * i386.md (divsi3, udivsi3): Use `xm' for operand 2 constraint. | |
7399 | (divhi3, udivhi3, divmod*, udivmod*): Likewise. | |
7400 | ||
7401 | * cccp.c (pedwarn): Declare as void. | |
7402 | ||
7403 | Tue Feb 26 06:41:34 1991 Michael Tiemann (tiemann at cygnus.com) | |
7404 | ||
7405 | * tree.h (IDENTIFIER_VIRTUAL_P): New macro for IDENTIFIER_NODE. | |
7406 | Nonzero means that this identifier is used by a function declared | |
7407 | virtual. | |
7408 | * cplus-decl.c (grokfndecl): Set IDENTIFIER_VIRTUAL_P instead of | |
7409 | DECL_VIRTUAL_P. | |
7410 | * cplus-search.c (get_first_matching_virtual): Test | |
7411 | IDENTIFIER_VIRTUAL_P instead of DECL_VIRTUAL_P. | |
7412 | ||
7413 | * cplus-decl.c (pushtag): Handle classes which are nested in | |
7414 | function scope (as opposed to class scope). | |
7415 | (lookup_nested_type): Ditto. | |
7416 | * cplus-method.c (build_overload_nested_name): Ditto. | |
7417 | ||
7418 | * cplus-decl.c (grokdeclarator): Only globalize non-nested classes | |
7419 | declared in class scope (i.e., don't globalize in function scope). | |
7420 | ||
7421 | Tue Feb 26 06:11:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7422 | ||
7423 | * a29k.md (storem): Fix typo in operand number. | |
7424 | ||
7425 | * expr.c (do_store_flag): Add missing cast required for some compilers. | |
7426 | ||
7427 | * tm-a29k.h (REG_CLASS_*, REGNO_REG_CLASS): Add new class Q_REGS | |
7428 | and constraint letter `q' for the Q register. Requested by tege. | |
7429 | ||
7430 | * tm-a29k.h (PRINT_OPERAND_ADDRESS): Allow short constant as address. | |
7431 | ||
7432 | Mon Feb 25 20:46:43 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7433 | ||
7434 | * expr.c (expand_expr): In handling A : A ? FOO, use safe_from_p | |
7435 | against FOO. Fix many incorrect operand refs in A : FOO ? A. | |
7436 | ||
7437 | * sdbout.c (plain_type_1): Record type name only if using forward refs. | |
7438 | ||
7439 | * reload.c (find_reloads): Mark those RELOAD_OTHER reloads | |
7440 | that are used for output addresses, for choose_reload_regs. | |
7441 | ||
7442 | * integrate.c (copy_rtx_and_substitute): | |
7443 | Copy REG_USERVAR_P from original regs to new regs. | |
7444 | ||
7445 | * c-typeck.c (digest_init): Handle STRING_CST before same-type case. | |
7446 | ||
7447 | Mon Feb 25 13:31:51 1991 Michael Tiemann (tiemann at cygnus.com) | |
7448 | ||
7449 | * cplus-decl.c (grokdeclarator): Handle the identification of | |
7450 | constructors declared in nested scope. | |
7451 | ||
7452 | Mon Feb 25 06:27:28 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7453 | ||
7454 | * reorg.c (next_insn_no_annul): New function. | |
7455 | (mark_set_resources, mark_target_live_regs): Don't count insns from | |
7456 | the target of a branch if the branch is annulling. | |
7457 | ||
7458 | * expmed.c (emit_store_flag): Get new register for target if | |
7459 | preserve_subexpressions_p returns nonzero. | |
7460 | Convert to desired mode, then normalize, instead of doing it | |
7461 | the other way around; this allows better combining. | |
7462 | ||
7463 | Sun Feb 24 20:07:02 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7464 | ||
7465 | * cse.c (find_comparison_args): Fix indentation and misplaced paren. | |
7466 | ||
7467 | * Makefile.in (install-headers): Remove extraneous parens from | |
7468 | uses of shelllibsubdir. | |
7469 | ||
7470 | Sun Feb 24 15:49:42 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7471 | ||
7472 | * loop.c (check_dbra_loop): Win if loop biv is used only for counting. | |
7473 | ||
7474 | * cccp.c (struct definition): Record file and line. | |
7475 | (create_definition): Store that information. | |
7476 | (do_define): Identify location of previous definition. | |
7477 | (pedwarn_with_file_and_line): New function. | |
7478 | ||
7479 | Sat Feb 23 13:36:13 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7480 | ||
7481 | * c-decl.c (grokdeclarator): Error for `signed void', etc. | |
7482 | Warning for `signed my_int', and only if pedantic. | |
7483 | ||
7484 | * toplev.c (warn_cast_align): New flag, with -W option. | |
7485 | * c-typeck.c (build_c_cast): Warn if target alignment increases. | |
7486 | ||
7487 | Sat Feb 23 10:22:03 1991 Michael Tiemann (tiemann at cygnus.com) | |
7488 | ||
7489 | * cplus-type2.c (store_init_value): Global variables must be | |
7490 | specially initialized in PIC under SunOS. | |
7491 | ||
7492 | * cplus-dbxout.c (dbxout_tags): Test that the tag's value has not | |
7493 | been cleared before trying to use it as a type. This happens when a | |
7494 | class starts out looking like a nested class, but turns out to be a | |
7495 | reference to an implicitly defined global class. | |
7496 | ||
7497 | Sat Feb 23 06:16:44 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7498 | ||
7499 | * jump.c (true_regnum): If given a pseudo not assigned a hard reg, | |
7500 | return the pseudo register number. | |
7501 | ||
7502 | * out-rs6000.c (update_cc): Remove CC_REVERSE and CC_NONNEG. | |
7503 | * rs6000.md (define_attr "cc"): Remove reverse. | |
7504 | (cmpsi): Only allow second arg to be a constant. | |
7505 | Remove some unneeded comparison patterns. | |
7506 | ||
7507 | * rs6000.md (misc logical patterns): Only add CLOBBER for MQ | |
7508 | when we really clobber it; we used to do so in more cases to | |
7509 | work around a since-fixed restriction in combine.c | |
7510 | ||
7511 | * rs6000.md (extend*): Use DEFINE_EXPAND instead of a pattern | |
7512 | that generates two insns. Remove (sign_extend (ashift ..) ...) | |
7513 | and similar patterns; no longer neeed. | |
7514 | ||
7515 | * rs6000.md (fma instruction): Add missing single-precision case. | |
7516 | ||
7517 | * out-rs6000.c (print_operand, case 's' and 'S'): Truncate to low-order | |
7518 | 5 bits. | |
7519 | ||
7520 | * out-rs6000.c (output_prolog, output_epilog): Correct code to handle | |
7521 | large stack frames; used 65535 instead of 32767 and had a typo. | |
7522 | ||
7523 | * tm-romp.h (CC_IN_NOT_TB): Deleted. | |
7524 | * out-romp.c (update_cc): No longer need CC_REVERSE, CC_NONNEG, or | |
7525 | CC_NOTTBIT. | |
7526 | (print_operand): Remove use of CC_IN_NOT_TB. | |
7527 | * romp.md (define_attr "cc"): Remove reverse,nonneg, and nottbit. | |
7528 | (mttbi): Remove redundant pattern. | |
7529 | (cmpsi): First arg can only be register_operand. | |
7530 | Remove some unneeded COMPARE patterns. | |
7531 | ||
7532 | * romp.md (movhi): Use zero-extend, not sign-extend load. | |
7533 | ||
7534 | * out-romp.c: (float_conversion): Allow CONST_INT as operand. | |
7535 | ||
7536 | * out-romp.c (first_reg_to_save): Ensure we save r14 if we use it. | |
7537 | ||
7538 | * a29k.md (divsf3): Fix typo in name; was divds3. | |
7539 | ||
7540 | * tm-a29k.h: Add new -mno-storem-bug and TARGET_NO_STOREM_BUG. | |
7541 | (TARGET_SWITCHES): -m29050 turns on -mno-storem-bug. | |
7542 | * a29k.md: (store_multiple_bug): New pattern to work around chip bug. | |
7543 | (store_multiple_no_bug): New name for original pattern. | |
7544 | (store_multiple): Choose depending on TARGET_NO_STOREM_BUG. | |
7545 | (storem patterns): Two cases, with and without bug. | |
7546 | ||
7547 | * a29k.md (extend*): Don't define single insn for sign_extend. | |
7548 | Instead, use DEFINE_EXPAND. Delete DEFINE_SPLITs for the old patterns. | |
7549 | ||
7550 | * a29k.md (jumpfdec pattern): Fix typo. | |
7551 | ||
7552 | * tm-a29k.h, tm-romp.h, tm-rs6000.h (CC1_SPEC): Remove optimization | |
7553 | selections. | |
7554 | (OPTIMIZATION_OPTIONS): Turn off insn scheduling by default until | |
7555 | it is fixed. | |
7556 | ||
7557 | * tm-a29k.h, tm-romp.h, tm-rs6000.h (SETUP_INCOMING_VARARGS): | |
7558 | Correctly handle the case of the special argument being other than | |
7559 | the first arg. | |
7560 | ||
7561 | * tm-a29k.h (GO_IF_LEGITIMATE_ADDRESS): A tiny constant (< 255) | |
7562 | is also a valid address. | |
7563 | ||
7564 | * tm-a29k.h, tm-romp.h, tm-rs6000.h (BYTE_LOADS_ZERO_EXTEND): Add to | |
7565 | support combine.c in development. | |
7566 | ||
7567 | * jump.c (jump_optimize, can_reverse_comparison_p, delete_jump): | |
7568 | Consistently allow NOTEs between the set and use of CC0. | |
7569 | * reorg.c (delete_scheduled_jump): Likewise. | |
7570 | ||
7571 | * expmed.c (emit_store_flag): Pass in UNSIGNEDP; can't derive it from | |
7572 | comparison code. | |
7573 | * expr.c (do_store_flag): Add UNSIGNEDP arg to emit_store_flag call. | |
7574 | * jump.c (jump_optimize): Likewise. | |
7575 | * optabs.c (expand_binop): Likewise. | |
7576 | ||
7577 | * local-alloc.c (requires_inout_p): New function. | |
7578 | (block_alloc): Use high-priority preferences if we have a hard | |
7579 | register used in an insn that requires the same register for | |
7580 | input as for the output. | |
7581 | (combine_regs): Rename argument COPY to MAY_SAVE_COPY. | |
7582 | ||
7583 | * cse.c (simplify_binary_operation, case MULT): Convert multiply | |
7584 | by power of two to shift. | |
7585 | (cse_insn): Don't share rtx obtained from the hash table; copy it. | |
7586 | ||
7587 | Sat Feb 23 00:27:26 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7588 | ||
7589 | * rtlanal.c (dead_or_set_p): Don't check for REG_INC. | |
7590 | ||
7591 | * reload.c (push_reload): (subreg:m1 (reg:m2 ...) ...) with M1 wider | |
7592 | than M2 is also a paradoxical SUBREG. | |
7593 | ||
7594 | Fri Feb 22 14:43:44 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7595 | ||
7596 | * reload1.c (possible_group_p): Add missing forward declaration. | |
7597 | ||
7598 | * reload1.c (eliminate_regs, case PLUS): Ensure we handle the | |
7599 | case of (plus reg1 reg2) where REG1 is eliminable and REG2 is | |
7600 | psuedo that didn't get a hard reg and has reg_equiv_constant nonzero. | |
7601 | (choose_reload_regs): If reload_needed_for_multiple, | |
7602 | the reload can't be input-only or output-only. | |
7603 | (emit_reload_regs): Avoid regno_dead_p. | |
7604 | * combine.c (regno_dead_p): Function deleted. | |
7605 | ||
7606 | * Makefile.in (maketest): Finish renaming config to configure. | |
7607 | ||
7608 | * gcc.c (lookup_compiler): Create a new entry to represent | |
7609 | the result of searching for an alias entry. | |
7610 | ||
7611 | * reload.c (combine_reloads): Swap args to reg_overlap_mentioned_p. | |
7612 | ||
7613 | Fri Feb 22 09:40:50 1991 Michael Tiemann (tiemann at cygnus.com) | |
7614 | ||
7615 | * cplus-parse.y (base_class_list): Re-fix precedence so we can use MI. | |
7616 | ||
7617 | * cplus-except.c (init_exception_processing): Push exception ctors | |
7618 | and dtors into scope so they can be inlined. | |
7619 | ||
7620 | Fri Feb 22 08:03:47 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7621 | ||
7622 | * genemit.c (output_init_mov_optab): New function. | |
7623 | (main): Have insn-emit.c include insn-codes.h. | |
7624 | Call output_init_mov_optab. | |
7625 | * optabs.c (gen_move_insn): Handle moving MODE_CC modes; we may have | |
7626 | to find a different mode to do this in. | |
7627 | (init_optabs): Try to initialize CCmode in mov_optab; if we have | |
7628 | EXTRA_CC_MODES, call init_mov_optab. | |
7629 | * Makefile.in (insn-emit.o): Now depends on insn-codes.h. | |
7630 | ||
7631 | * rtl.h (get_last_insn_anywhere): Add missing declaration. | |
7632 | ||
7633 | * stmt.c: Now includes hard-reg-set.h (for n_non_fixed_regs). | |
7634 | (preserve_subexpressions_p): Renamed from inside_loop. | |
7635 | Always return true if optimize >= 2; always return false if | |
7636 | optimize == 0. If optimize == 1, only return true if we aren't | |
7637 | very far into a loop instead of whenever we are in any loop. | |
7638 | * Makefile.in (stmt.o): Now includes hard-reg-set.h. | |
7639 | * expr.c (expand_expr): Use preserve_subexpressions_p instead of | |
7640 | inside_loop. | |
7641 | Only set TARGET to SUBTARGET if TARGET isn't a pseudo register. | |
7642 | (expand_expr, case REAL_CST): Don't call force_reg; now done in | |
7643 | expand_binop, if required. | |
7644 | * optabs.c (expand_binop, expand_twoval_binop, emit_cmp_insn): | |
7645 | If arg is expensive constant and preserve_subexpressions_p is true, | |
7646 | force it into a register. | |
7647 | * out-sparc.c (emit_move_sequence): Call preserve_subexpressions_p | |
7648 | instead of inside_loop. | |
7649 | ||
7650 | * reload1.c (eliminate_regs, case SUBREG): Correct test for paradoxical | |
7651 | SUBREG. | |
7652 | ||
7653 | * varasm.c (output_constant_pool): If entry refers to a deleted label, | |
7654 | write a zero instead of the undefined label. | |
7655 | ||
7656 | Fri Feb 22 02:49:24 1991 Ken Raeburn (raeburn at watch.com) | |
7657 | ||
7658 | * Reversed all changes dated 20 February. | |
7659 | * cplus-template.c (pending_template_expansion): New function; | |
7660 | given template name, returns class name of expansion in progress. | |
7661 | * cplus-parse.y (PTYPENAME -> typespec): Call it. | |
7662 | ('~' PTYPENAME -> notype_declarator): Ditto. | |
7663 | ||
7664 | Thu Feb 21 15:17:13 1991 Craig Burley (burley at geech.ai.mit.edu) | |
7665 | ||
7666 | * c-common.c (check_case_value): If value is NULL_TREE, return it | |
7667 | without any further checking. | |
7668 | ||
7669 | * stmt.c (pushcase_range): If value1 is NULL_TREE, substitute | |
7670 | minimum value for the type, if value2 is NULL_TREE, substitute | |
7671 | maximum value for the type, from then on assume both are not NULL_TREE. | |
7672 | These changes appear to provide minimal support for case ranges. | |
7673 | ||
7674 | * c-typeck.c (digest_init): For explicit array element initializer | |
7675 | case, change check against max value of domain so index may equal it. | |
7676 | For array element initialization, give next initializer a chance to | |
7677 | override the choice of next index before falling out of loop because | |
7678 | next index is out of range. For structure initialization, give next | |
7679 | initializer a similar chance before falling out of loop because no | |
7680 | more fields exist. | |
7681 | ||
7682 | * reload1.c (possible_group_p): Needed a forward decl (static). | |
7683 | ||
7684 | Thu Feb 21 14:37:01 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7685 | ||
7686 | * c-decl.c (grokdeclarator): | |
7687 | Don't make bitfield type unsigned if comes from typedef. | |
7688 | ||
7689 | * reload1.c (reload): Don't require INITIAL_FRAME_POINTER_OFFSET | |
7690 | if cannot eliminate the frame pointer. | |
7691 | ||
7692 | * i860.md (cbranch, inverse_cbranch): Use eq to test cc0. | |
7693 | (negated branch patterns): New patterns. | |
7694 | ||
7695 | * tm-i860.h (INITIALIZE_TRAMPOLINE): Use size_int, not build_int. | |
7696 | ||
7697 | * reload1.c (reload): Save and restore notes around find_reloads. | |
7698 | ||
7699 | * tm-sun2os4.h (LINK_SPEC): New macro. | |
7700 | * tm-sun386i.h (LINK_SPEC): Undef before redefining. | |
7701 | ||
7702 | * cccp.c (do_include): Check for -2, not -1, as value of lookup_import. | |
7703 | ||
7704 | * c-parse.y (initlist): Fix typo. | |
7705 | ||
7706 | Mon Feb 18 02:50:38 1991 Michael Tiemann (tiemann at cygnus.com) | |
7707 | ||
7708 | * cplus-decl.c (grokdeclarator): Try to come up with better magic | |
7709 | for implicitly globalizing classes implicitly declared in class | |
7710 | scope. | |
7711 | ||
7712 | Sun Feb 17 09:27:38 1991 Michael Tiemann (tiemann at cygnus.com) | |
7713 | ||
7714 | * cplus-tree.c (virtual_offset): New function. Returns the offset | |
7715 | of a baseclass that is virtual or comes from a virtual baseclass, or | |
7716 | NULL if there is no such baseclass. | |
7717 | * cplus-class.c (modify_vtable_entries): Call this function instead | |
7718 | of `virtual_member'. `virtual_member' can return the wrong thing if | |
7719 | we try to use it for an offset computation of a baseclass which is | |
7720 | not strictly a virtual baseclass. | |
7721 | ||
7722 | Sat Feb 16 06:21:03 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7723 | ||
7724 | * recog.c (validate_replace_rtx_1): Use correct rtx_code for the | |
7725 | new operation when commuting operands. | |
7726 | Generalize to commute operands on comparison operation. | |
7727 | ||
7728 | Fri Feb 15 23:01:24 1991 Richard Stallman (rms at geech.ai.mit.edu) | |
7729 | ||
7730 | * c-parse.y (initlist): Finish changing `case N:' to `[N]'. | |
7731 | ||
7732 | * combine.c (try_combine): Update reg_first_use. Flush useless links. | |
7733 | ||
7734 | Thu Feb 14 17:06:44 1991 Ken Raeburn (raeburn at watch.com) | |
7735 | ||
7736 | * cplus-parse.y (template_parm): New derivation from `class ID', | |
7737 | for consistent return of `identifier_node' nodes with `class A : | |
7738 | B' case. | |
7739 | * cplus-template (end_template_parm_list): Nothing to strip off of | |
7740 | identifier_nodes now. | |
7741 | (process_template_parm): Strip off one level of tree_list, | |
7742 | discarding (for now) the required base class. Don't need to run | |
7743 | through grok* any more. | |
7744 | ||
7745 | Sun Feb 10 19:23:21 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7746 | ||
7747 | * gcc.c (main, process_command, default_compilers): Fix typos. | |
7748 | ||
7749 | Sat Feb 9 15:06:43 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7750 | ||
7751 | * gcc.c (process_command): Handle separate args for -B, -b, -V. | |
7752 | ||
7753 | * gcc.c (lookup_compiler): New function. Handles alias entries. | |
7754 | (main): Call that. | |
7755 | (default_compilers): Make all real suffixes into alias entries. | |
7756 | (infiles): Now a vector of structures, containing specified language. | |
7757 | (process_command): Handle -x to specify language. | |
7758 | (main): Use specified language if any. | |
7759 | ||
7760 | Fri Feb 8 18:31:00 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7761 | ||
7762 | * fold-const.c (fold): Set TREE_USED when create COMPOUND_EXPR. | |
7763 | * stmt.c (warn_if_unused_value): Don't warn if TREE_USED. | |
7764 | * c-typeck.c (build_unary_op): Handle multiple casts inside ++. | |
7765 | ||
7766 | Fri Feb 8 07:37:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7767 | ||
7768 | * real.h (dconst2): New variable. | |
7769 | * emit-rtl.c (init_emit_once): Initialize dconst2. | |
7770 | * tree.c (real_twop): New function. | |
7771 | * cse.c (simplify_unary_operation): Fold FLOAT, FLOAT_EXTEND, and | |
7772 | FLOAT_TRUNCATE. | |
7773 | (simplify_binary_operation): Convert x*2 to x+x. | |
7774 | (cse_insn): Handle case where constant equivalent is in table. | |
7775 | Fix minor bug with merging src_related_elt. | |
7776 | * fold-const.c (fold): If commutative operation, move a constant | |
7777 | first operand to the second operand. | |
7778 | Remove tests of constants as first operand for commutative operations. | |
7779 | Convert x*2 to x+x. | |
7780 | ||
7781 | Fri Feb 8 03:07:34 1991 Ken Raeburn (raeburn at watch.com) | |
7782 | ||
7783 | * cplus-ptree.c (print_lang_decl): Corrected argument list. Print | |
7784 | address of template info for TEMPLATE_DECL nodes. | |
7785 | ||
7786 | * cplus-decl.c (set_current_level_tags_transparency): New | |
7787 | function, for altering tag-transparency of a context. | |
7788 | ||
7789 | * cplus-parse.y (PRE_PARSED_METHOD_DEF): Was unused; now gone. | |
7790 | (template_instantiation): Handle $-references correctly. Generate | |
7791 | a class_head-like value for LC actions to operate on. | |
7792 | (maybe_base_class_list): New non-terminal: colon and base class | |
7793 | list, or empty. | |
7794 | (named_class_head): Use it. | |
7795 | (unnamed_class_head): Use '{', not LC. | |
7796 | (class_head): If template_instantiation found, use its value. | |
7797 | (template_arg): Apply groktypename to typename args. | |
7798 | ||
7799 | * cplus-template.c (template_text_obstack): Deleted, just use | |
7800 | permanent_obstack instead. | |
7801 | (init_template): Deleted; callers changed. | |
7802 | (current_template_info): New variable: pointer to last-saved | |
7803 | template info record. | |
7804 | (end_template_decl): Use DECL_NAME, DECL_ARGUMENTS, | |
7805 | DECL_LANG_SPECIFIC, rather than TREE_OPERANDs. Save most of | |
7806 | template info here. | |
7807 | (reinit_parse_for_template): Only save text here, in | |
7808 | already-allocated template info record. | |
7809 | (mangle_class_name_for_template): New function. | |
7810 | (instantiate_template): Finally written. | |
7811 | ||
7812 | Thu Feb 7 22:06:56 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7813 | ||
7814 | * tm-i386v4.h (ASM_OUTPUT_COMMON): Specify rounding in the output. | |
7815 | (ASM_OUTPUT_LOCAL): Use .local and .comm. | |
7816 | ||
7817 | * tm-news.h (FUNCTION_PROLOGUE): Correct syntax of link insn. | |
7818 | (PRINT_OPERAND_ADDRESS): Use period, not colon, before index reg width. | |
7819 | ||
7820 | * stmt.c (pushcase, pushcase_range): | |
7821 | Don't warn for code before first `case' if there is a label on it. | |
7822 | ||
7823 | Thu Feb 7 06:23:10 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7824 | ||
7825 | * integrate.c (initialize_for_inline): Accept COPY argument. | |
7826 | Only copy parameter DECL_RTL if COPY non-zero; in that case, | |
7827 | also replace DECL_RTL with copy. All callers changed. | |
7828 | (copy_decl_rtls): New function. | |
7829 | (save_for_inline_copying): Use copy_decl_rtls to copy MEM DECL_RTLs | |
7830 | in the function. | |
7831 | Copy address of pseudos if they are a MEM. | |
7832 | ||
7833 | Wed Feb 6 19:19:25 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7834 | ||
7835 | * c-typeck.c (build_binary_op_nodefault): No warn for RSHIFT by 0. | |
7836 | ||
7837 | Wed Feb 6 17:37:23 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7838 | ||
7839 | * function.c (fixup_var_refs_1): Accept a location in rtx instead | |
7840 | of an rtx. | |
7841 | Unless -fforce-mem, if an insn is valid with MEM, leave it alone. | |
7842 | Rework ZERO_ and SIGN_EXTRACT cases to properly do adjustments | |
7843 | and generalize to support other than QImode MEMs. | |
7844 | (fixup_var_refs_insns): Change call to fixup_var_refs_1. | |
7845 | ||
7846 | Wed Feb 6 08:14:21 1991 Tom Wood (wood at dg-rtp.dg.com) | |
7847 | ||
7848 | * m88k.md (cmp): Use reg_or_0_operand to avoid swapped compares. | |
7849 | (call patterns): Put use of r1 in a parallel construct. | |
7850 | (multiply and divide by a power of two): Now just multiply. The | |
7851 | new combiner will change divide by a power of two into multiply. | |
7852 | (movhi, movqi): Use zero-extend load. | |
7853 | * tm-m88k.h (BYTE_LOADS_ZERO_EXTEND): Use it. | |
7854 | (H constraint): Changed to mean one or two. | |
7855 | * out-m88k.c: Use the proper includes for non-USG systems. | |
7856 | * xm-m88k.h: Include tm.h at the end. | |
7857 | ||
7858 | Wed Feb 6 02:24:38 1991 Michael Tiemann (tiemann at cygnus.com) | |
7859 | ||
7860 | * cplus-decl.c (pushtag): Don't try to nest classes from non-C++ | |
7861 | language scopes. | |
7862 | ||
7863 | Wed Feb 6 01:33:16 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7864 | ||
7865 | * cse.c (simplify_binary_operation): Don't change div into mult. | |
7866 | ||
7867 | Tue Feb 5 10:59:53 1991 Ken Raeburn (raeburn at watch.com) | |
7868 | ||
7869 | * cplus-parse.y (template_instantiation): Supply base class list | |
7870 | and use guts of class declaration. Untested; will have to be | |
7871 | fixed up to deal with template context manipulations. | |
7872 | ||
7873 | Tue Feb 5 00:52:57 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7874 | ||
7875 | * c-common.c (combine_strings): Finish fixing wide strings. | |
7876 | ||
7877 | * reload1.c (possible_group_p): New subroutine. | |
7878 | (reload): Don't kill last group when looking for a non-group. | |
7879 | ||
7880 | * expmed.c (expand_divmod): If emit cmp insn, force op0 into reg. | |
7881 | ||
7882 | * objc-parse.y (init_lex, yylex): max_wide now measured in chars. | |
7883 | (yylex): Treat \r as whitespace if traditional. | |
7884 | ||
7885 | * toplev.c (compile_file): Add missing arg for dbxout_finish. | |
7886 | ||
7887 | * objc-actions.c (lang_finish): New dummy function. | |
7888 | ||
7889 | * calls.c (expand_call): Recognize other names for setjmp-like fns. | |
7890 | ||
7891 | * gcc.c (main): Use obstack_init, not gcc_obstack_init. | |
7892 | ||
7893 | * varasm.c (assemble_zeros): New function. | |
7894 | All calls to ASM_OUTPUT_SKIP elsewhere now use this function. | |
7895 | Handle ASM_NO_SKIP_IN_TEXT. | |
7896 | * toplev.c (compile_file): Use assemble_zeros. | |
7897 | * final.c (end_final): Likewise. | |
7898 | * tm-3b1.h, tm-att386.h, tm-mot3300.h (ASM_NO_SKIP_IN_TEXT): | |
7899 | Define as 1. | |
7900 | * tm-3b1.h (ASM_OUTPUT_SKIP): Don't deal with outputting zeros. | |
7901 | ||
7902 | Mon Feb 4 20:37:33 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7903 | ||
7904 | * m68k.md: Use %$ and %& where appropriate. | |
7905 | (special float_truncate pattern): New, for 68040. | |
7906 | (68881 DF multiply recognizers): Avoid fscale if 68040. | |
7907 | (68881 SF multiply recognizers): Avoid fsglmul if 68040. | |
7908 | ||
7909 | * tm-next.h (SECTION_FUNCTION): Simplify; remove last arg. | |
7910 | (EXTRA_SECTION_FUNCTIONS): Rewrite to go with that change. | |
7911 | ||
7912 | Mon Feb 4 18:22:54 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) | |
7913 | ||
7914 | * reorg.c (link_cc0_isns): New function. | |
7915 | (fill_simple_delay_slots, fill_slots_from_thread): Call it. | |
7916 | (fill_slots_from_thread): Don't make REG_CC_STATUS notes. | |
7917 | (delete_scheduled_jump): Use REG_CC_SETTER instead of REG_CC_STATUS. | |
7918 | Correctly locate compare insn in CC0 case. | |
7919 | (steal_delay_list_from_target): Don't steal an insn that sets cc0; | |
7920 | we can't safely copy it. | |
7921 | (fill_slots_from_thread): Can't put insn that sets CC0 in delay slot | |
7922 | if we don't own its thread; this would otherwise require copying it. | |
7923 | (relax_delay_slots): Don't collapse jump to next insn if it has a | |
7924 | cc0-setting insn in a delay slot. | |
7925 | ||
7926 | * reorg.c (update_block): Accept location to place USE marker; use if | |
7927 | INSN is in a delay slot. | |
7928 | (mark_target_live_regs): Handle the case where we deleted the start | |
7929 | of the basic block that was previously used for a target. | |
7930 | Ignore insns with INSN_FROM_TARGET_P. | |
7931 | (optimize_skip, try_merge_delay_insns, fill_simple_delay_slots): | |
7932 | Pass new argument to update_block. | |
7933 | (try_merge_delay_insns, redundant_insn_p): Clear INSN_FROM_TARGET_P | |
7934 | to show that this insn will be used in both paths of the branch. | |
7935 | (try_merge_delay_insns): Add calls to update_block for insns deleted | |
7936 | from delay slots. | |
7937 | ||
7938 | * reorg.c (mostly_true_jump): If no jumps between target and end of | |
7939 | function, predict as false. | |
7940 | If comparison == 0, predict false; != 0, predict true. | |
7941 | ||
7942 | * reorg.c (steal_delay_list_from_{target,fallthrough}): | |
7943 | Ignore redundant insn even if it can't be placed in our delay slot. | |
7944 | (fill_slots_from_thread): Likewise. | |
7945 | Ensure we don't call redundant_insn_p on any insns that conflict | |
7946 | with what we need and set. | |
7947 | ||
7948 | * reorg.c (fill_eager_delay_slots): Pick up new value of JUMP_LABEL; | |
7949 | it may have been changed by first call to fill_slots_from_thread. | |
7950 | ||
7951 | * rtl.h (REG_TAIL_CALL): Deleted; never documented or used. | |
7952 | (REG_CC_SETTER, REG_CC_USER): Replacements for REG_CC_STATUS. | |
7953 | * rtl.c (reg_note_name): New names. | |
7954 | * final.c (final_scan_insn): Replace REG_CC_STATUS with REG_CC_SETTER; | |
7955 | now only one insn. | |
7956 | * emit-rtl.c (next_cc0_user, prev_cc0_setter): Use REG_CC_SETTER and | |
7957 | REG_CC_USER. | |
7958 | ||
7959 | * cplus-cadillac.c, cplus-class.c, cplus-decl.c, cplus-lex.c: | |
7960 | Replace obstack_init with gcc_obstack_init. | |
7961 | * cplus-search.c, flow.c, gcc.c, loop.c, reload1.c: Likewise. | |
7962 | * reorg.c, stmt.c: Likewise. | |
7963 | ||
7964 | * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo when making | |
7965 | new ASM_OPERANDS. | |
7966 | ||
7967 | * recog.c: Now includes insn-flags.h and insn-codes.h. | |
7968 | (validate_replace_rtx_1): If replacing the source of a ZERO_ or | |
7969 | SIGN_EXTRACT with a MEM, try to put the MEM in the mode to be used for | |
7970 | the MEM. | |
7971 | * Makefile.in (recog.o): Depends on insn-flags.h and insn-codes.h. | |
7972 | ||
7973 | Mon Feb 4 17:39:36 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
7974 | ||
7975 | * c-typeck.c (digest_init): Error if init array with another array. | |
7976 | ||
7977 | Mon Feb 4 04:58:20 1991 Ken Raeburn (raeburn at watch.com) | |
7978 | ||
7979 | * cplus-tree.def (TEMPLATE_DECL): New node type. | |
7980 | (TEMPLATE_PARM_IDX): New node type; like integer, with an extra | |
7981 | field. | |
7982 | ||
7983 | * cplus-method.c (check_text_len): Fix up error message to be more | |
7984 | correct. Moved function before new_text_len so that the latter | |
7985 | can call it and inlining can work. | |
7986 | (new_text_len): Call check_text_len. | |
7987 | ||
7988 | * cplus-method.c (build_overload_name): No longer static. | |
7989 | ||
7990 | * cplus-class.c (unuse_fields): Now static. | |
7991 | (popclass): Use a temporary when building C_C_D. | |
7992 | ||
7993 | * cplus-decl.c (lookup_tag): Don't complain about type mismatch if | |
7994 | the tag found is for a template. | |
7995 | ||
7996 | * cplus-lex.c: New lookup tables, for new "template" keyword. | |
7997 | (reinit_lang_specific): Call init_template. | |
7998 | (init_lex): Ditto. | |
7999 | (file_from_saved_text): Renamed from input_from_saved_text. | |
8000 | ||
8001 | * cplus-lex.c (identifier_type): New function; returns primary | |
8002 | type (IDENTIFIER, TYPENAME, PTYPENAME) indicated by token name. A | |
8003 | PTYPENAME is returned for (TYPE_DECL (TEMPLATE_DECL ...)) nodes. | |
8004 | (see_typename): Call it. | |
8005 | ||
8006 | * cplus-lex.c (yylex): In handling identifiers, use subset of | |
8007 | TYPENAME code for PTYPENAME tokens. | |
8008 | ||
8009 | * cplus-template.c: New file. | |
8010 | (begin_template_parm_list): Push new scope and switch to permanent | |
8011 | obstack. | |
8012 | (end_template_parm_list): Return parameter list as a tree vector. | |
8013 | (end_template_decl): Save away new TEMPLATE_DECL node. | |
8014 | (process_template_parm): Build up tree list of template | |
8015 | parameters. | |
8016 | (instantiate_template): For now, just complain. | |
8017 | (init_template): Set up template obstack. | |
8018 | (reinit_parse_for_template): Gobble up class definition text and | |
8019 | save it away. | |
8020 | ||
8021 | * cplus-parse.y (template_header, template_parm_list): Call above | |
8022 | routines. | |
8023 | (datadef): Put template declarations here, instead of in | |
8024 | class_head. | |
8025 | (named_class_head_sans_basetype, named_class_head, | |
8026 | unnamed_class_head): Break up old class_head derivations. | |
8027 | (class_head): Now any of the above, plus template types with or | |
8028 | without instantiation. | |
8029 | (template_type): Call instantiate_template. | |
8030 | (template_arg_list): Build up list of args. | |
8031 | ||
8032 | * cplus-tree.h (lang_type): Add TEMPLATE field. Also add macro | |
8033 | TYPE_TEMPLATE. | |
8034 | ||
8035 | Sun Feb 3 21:16:36 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
8036 | ||
8037 | * tm-m68k.h (PRINT_OPERAND): Handle `&' and `$'. | |
8038 | (PRINT_OPERAND_PUNCT_VALID): They are valid. | |
8039 | ||
8040 | * out-next.c (handle_pragma): Unread the newline. | |
8041 | ||
8042 | * toplev.c (main): Warn if meaningless optimizations are requested. | |
8043 | Don't enable options by default that would get warnings. | |
8044 | ||
8045 | * m68k.md (extend QI to HI): Typo in clr insn. | |
8046 | ||
8047 | * c-common.c (combine_strings): Decrement LEN properly when copying. | |
8048 | * c-parse.y (init_lex, yylex): max_wide now measured in chars. | |
8049 | ||
8050 | * tree.c (gcc_obstack_init): Fix typo in forward decl. | |
8051 | ||
8052 | Sat Feb 2 09:24:56 1991 Michael Tiemann (tiemann at cygnus.com) | |
8053 | ||
8054 | * cplus-decl.c (poplevel): Change DECL_CONTEXT of decls only of | |
8055 | their context is CURRENT_FUNCTION_DECL. | |
8056 | ||
8057 | Fri Feb 1 13:46:07 1991 Richard Stallman (rms at mole.ai.mit.edu) | |
8058 | ||
8059 | * print-tree.c (print_node): Don't print chain for `c' and `x' nodes. | |
8060 | ||
8061 | * loop.c (record_excess_regs): Moved here. | |
8062 | ||
8063 | See file ChangeLog.2. |