Initial revision
[platform/upstream/gcc.git] / gcc / ChangeLog.0
1
2 Wed Dec 21 02:46:34 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3
4         * Version 1.32 released.
5
6         * toplev.c (main): Vax pcc enforces goto-less programming
7         with fatal error.
8
9         * stmt.c (fixup_memory_subreg): New arg INSN says where to emit insns.
10         (walk_fixup_memory_subreg): Likewise.  All callers changed.
11
12 Tue Dec 20 01:26:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
13
14         * c-decl.c (start_function): Don't clear TREE_PERMANENT in fn decl.
15         Make the result decl a permanent node.
16         (finish_function): Don't clear DECL_RESULT in an inline function.
17         (duplicate_decls): Don't lose DECL_RESULT or DECL_SAVED_INSNS
18         or old decl, when defn is followed by redeclaration.
19         Likewise DECL_ARGUMENTS and DECL_RESULT_TYPE.
20
21         * stmt.c (expand_function_end): End any sequences left unterminated.
22
23         * cse.c (predecide_loop_entry): If "loop" has no label, do nothing.
24
25         * recog.c (asm_noperands): Now return -1 if not that kind of insn.
26         All callers changed.
27         * combine.c (check_asm_operands): Calling changes not quite trivial.
28         * final.c (final): Likewise.
29         * reload.c (find_reloads): Likewise.
30         * recog.c (asm_noperands): Other changes:
31         Loop computing # of SETs in a PARALLEL was off by 1.
32         Validate all elts of any PARALLEL, to block invalid combinations.
33
34         * ns32k.md (andsi3, andhi3): Make new CONST_INTs; don't clobber old.
35
36         * integrate.c (copy_rtx_and_substitute): When looking in `parm_map',
37         if our mode mismatches parm's mode, use change_address to extract part.
38         On BYTES_BIG_ENDIAN machines, adjust the offset.
39
40 Mon Dec 19 23:50:14 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
41
42         * cexp.y ('/' and '%' ops): If divide by 0, print error, don't die.
43
44 Sun Dec 18 14:03:02 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
45
46         * toplev.c (main): Avoid shadowing I in inner block.
47
48         * flow.c (propagate_block): The insn at the end of a libcall
49         may be dead, but the libcall might still be needed if the
50         hard return reg is used later.  Detect this case.
51         (libcall_dead_p): New fn used to check that the libcall is dead.
52
53         * output-m68k.c, tm-m68k.h (standard_sun_fpa_constant_p): Fn renamed.
54
55 Sat Dec 17 13:23:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
56
57         * stmt.c (expand_end_bindings): error_with_file_and_line => ..._decl.
58
59         * combine.o (try_combine): Accept combination making a valid
60         asm with operands.
61         (check_asm_operands): Recognize asm with operands that are valid.
62
63         * loop.c (strength_reduce): Don't accept a reg as a giv
64         if the reg was made by loop-optimize.
65
66         * stmt.c (balance_case_nodes): A list of 3 always splits in middle.
67
68 Fri Dec 16 17:22:07 1988  Tiemann  (rms at sugar-bombs.ai.mit.edu)
69
70         * sparc.md (fetch from constant address): Split into two patterns,
71         one fixed point and one floating.
72         (store at constant address): Handle remembered hi-half differently.
73         Other bug fixes.
74         (fix_truncsfsi2): Use f1, not f0, as temp.
75         (fix_truncdfsi2): Don't clear CC_F1_IS_0.
76
77         * output-sparc.c (singlemove_string): Changed handling of case
78         where op1 is not memory and op0 has varying address.
79         (output_fp_move_double): Avoid reloading high half address
80         in the ldd and std cases with constant address.
81         (make_f0_contain_0): Handle f0 and f1 individually.
82
83         * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): CONST is now illegitimate.
84
85         * rtl.c (note_stores): Pass entire SET rtx, not flag, as 2nd arg to FN.
86         * local-alloc.c (reg_is_set): New type for 2nd arg.
87
88         * Makefile: Comment out cc1plus, since not ready for release.
89
90 Thu Dec 15 16:39:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
91
92         * local-alloc.c (reg_is_set): If a hard reg is clobbered, make it free
93         before and after the insn.
94         * stupid.c (stupid_mark_refs): Likewise.
95         * global-alloc.c (global_conflicts): Likewise.
96         Use note_stores to call mark_reg_{store,clobber}.
97         (mark_reg_store): Changed calling conventions
98         All work done on set/clobbered regs is now done here.
99         Ignore CLOBBERs.
100         (mark_reg_clobber): Similar fn, but ignore SETs and handle CLOBBERs.
101         (regs_set, n_regs_set): New static vars for comm. among the above.
102
103         * stmt.c (expand_asm_operands): call protect_from_queue on operands.
104         This requires preexpanding the outputs into a vector of rtx's.
105
106         * Makefile (install): cd to $(libdir) before ranlib.
107
108         * c-typeck.c (c_expand_asm_operands): emit_queue at the end.
109
110         * reload.c (find_reloads): Count # alternatives properly for
111         an asm insn, and check that all operands correspond.
112
113         * loop.c (verify_loop): Reject loops containg setjmps.
114         * cse.c (cse_main): Don't cse across a call to setjmp.
115
116         * expr.c (expand_expr): Permit any non0 DECL_RTL for a VAR_DECL.
117
118         * stmt.c (balance_case_nodes): Count ranges double when balancing.
119
120 Wed Dec 14 13:50:45 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
121
122         * final.c (output_addr_const): Output just `-', not `+-'.
123
124         * make-cc1.com: Update filenames changed to `c-'.
125         * make-cccp.com: Pass needed -D options when compiling cccp.c.
126         Use /nomap when linking.
127
128         * loop.c (strength_reduce): Paraphrase setting NEW_REG, for Iris cc.
129
130         * output-m68k.c (output_move_const_single): %'s must be doubled twice.
131
132         * loop.c (record_giv): A giv can be replaceable if its uses are
133         all in the same basic block as its sole setting.
134         (last_use_this_basic_block): Subroutine to test that.
135
136 Tue Dec 13 13:41:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
137
138         * expr.c (do_store_flag): Allow for COMPARISON to be a const_int.
139
140         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
141         in a global scope.
142
143         * fixincludes: Fix typo in msg of deleting unchanged file.
144
145         * Makefile (insn-*): Use two-step rules with a separate time-stamp file
146         to avoid rerunning gen* unless md has changed again.
147
148 Mon Dec 12 13:32:05 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
149
150         * i386.md (tstsf, tstdf, cmpsf, cmpdf): Use fnstsw, not fstsw.  Faster.
151
152         * tm-vax.h (ASM_OUTPUT_REG_POP): Use correct asm syntax for pop insn.
153
154         * combine.c (subst): Handle (subreg (mem)) by making a changed mem.
155         This avoids producing any (subreg (mem))s except in the special
156         case they are supposed to be made here.
157         Also set undo_storage in a couple of cases that forgot to.
158
159         * reload.c (push_reload): When handling (SUBREG (MEM)) for IN,
160         if there is an OUT, make that a separate reload.
161         Return its number in `output_reloadnum'
162         (find_reloads): When pushing matching-reloads, note that the
163         two operands can have different reload-numbers.
164
165         * tm-3b1.h (ASM_OUTPUT_CASE_END): Test flag on TABLE, not its pattern.
166         (ASM_OUTPUT_CASE_LABEL): If /i flag set, don't output the dummy entry
167         since the fetcher-insn will not be off by 2 in this case.
168         * m68k.md (casesi_2 recognizer): For 3b1 syntax, compensate for that.
169
170 Sun Dec 11 12:51:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
171
172         * genrecog.c (try_merge_2): No longer put all explicit decompositions
173         before all predicates.  Patterns are now tested in the order written.
174         * vax.md: Move the push-or-move-address patterns to the end.
175         * m68k.md: Move load-address pattern to end.
176         Rearrange the special-case movsi patterns.
177         * ns32k.md: Move special load-reg-17 pattern before movsi.
178         * i386.md: Move the QI and DI push patterns to logical places.
179         This should not actually change anything.
180
181         * stmt.c: Add Andy Hitchins's binary-tree case statement code.
182         (struct case_stmt): case_list field is now a case_node chain.
183         Replace has_default field with default_label field.
184         (pushcase, pushcase_range): Build case_list in its new type,
185         and keep it sorted.
186         (expand_end_case): Use case_list in its new type.
187         Count a range of > 1 as two cases, when choosing strategy.
188         (group_case_nodes, balance_case_nodes): New fns, rearrange case_list.
189         (node_has_{low,high}_bound, node_is_bounded): New fns test
190         relationships of values of various case_list tree nodes.
191         (emit_jump_if_reachable): New fn.
192         (emit_case_nodes): Emit compares and jumps based on tree of case_list.
193
194         * cccp.c (finclude): Handle nonordinary files (stat doesn't give size).
195
196         * tm-3b1.h (PRINT_OPERAND_ADDRESS): Handle case of breg and no ireg.
197
198 Sat Dec 10 16:30:32 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
199
200         * sparc.md (movstrsi): Separate define_expand and define_insn;
201         clobber some pseudos to get temp regs to use in the output.
202         * output-sparc.c (output_block_move): Use those temp regs,
203         guaranteed to be free.
204
205         * sparc.md (andcc patterns for bitfields from memory):
206         Test immed. arg for being in range.
207         (load DFmode constant): Use %m for output in one case.
208         * output-sparc.c (singlemove_string, output_move_double): Likewise.
209
210         * output-sparc.c (singlemove_string): New case for mem-to-mem move.
211
212 Fri Dec  9 11:42:15 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
213
214         * stupid.c (stupid_mark_refs): for CLOBBER of a pseudo,
215         it is born just before this insn and dies just after.
216
217         * tm-vax.h (NOTICE_UPDATE_CC): For aob, sob insns, forget the cc's.
218
219         * basic-block.h (REG_BLOCK_UNKNOWN, REG_BLOCK_GLOBAL): Move defn here.
220         * local-alloc.c: Use them.
221
222         * c-decl.c (store_parm_decls): Additional explanatory message
223         for some prototype mismatches.
224
225         * gnulib.c (SItype): New macro used instead of `int'
226         for SImode operands and values.  Definition is `long int'.
227
228 Thu Dec  8 18:45:48 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
229
230         * reload.c (operands_match_p): Move the label `slow' so that
231         it doesn't cause a REG and a SUBREG to be compared wrong.
232
233         * toplev.c (compile_file): Output a label `gcc_compiled.' for GDB.
234         If new macro ASM_IDENTIFY_GCC is defined, run that instead.
235         * tm-3b1.h (ASM_IDENTIFY_GCC): Define this as no-op.
236
237 Wed Dec  7 12:20:42 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
238
239         * i386.md (adddf3): Typo: paren was in a constraint.
240
241         * c-decl.c (grokparms): Avoid duplicate msgs for incomplete type ptrs.
242
243         * gnulib.c: Rename all fns to start with `__'.
244         * optabs.c, expr.c: Rename all references.
245
246         * gnulib.c (__cmpdi2, __ucmpdi2): New fns.
247         * optabs.c (emit_cmp_insn): Use them.
248
249         * Makefile (stage*): Ignore errors on the main `mv' (for cc1plus).
250         Run ranlib if we have to copy gnulib.
251
252         * expmed.c (expand_divmod): Split `label' into several local vars.
253
254         * jump.c (jump_back_p): Do nothing unless cc's were set from integers.
255
256 Tue Dec  6 12:00:21 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
257
258         * c-parse.y (extend_token_buffer): Use xrealloc, not realloc.
259
260         * integrate.c (output_inline_function): fix args of expand_function_end
261         (expand_inline_function): Add missing arg to expand_end_bindings.
262
263         * cse.c (cse_insn): Add missing MODE arg to canon_hash.
264
265         * reload1.c (reload_as_needed): Del. extra arg of choose_reload_targets
266         (reload): Add missing MODE arg to immediate_operand.
267
268         * expmed.c (expand_mult): Delete extra arg to expand_unop.
269
270         * c-typeck.c (default_conversion):
271         Add missing NOCONVERT arg to build_unary_op.
272
273         * c-decl.c (duplicate_decls, finish_struct): Add missing arg
274         KNOWN_ALIGMENT to layout_decl.
275         * stor-layout.c (layout_record): Likewise.
276         * varasm.c (assemble_variable): Likewise.
277
278         * dbxout.c (dbxout_init): Add missing LOCAL arg to dbxout_symbol.
279
280         * expr.c (clear_storage): Remove excess arg to emit_move_insn.
281
282         * loop.c (consec_sets_invariant_p): Add parens in hairy if-condition.
283
284         * fold-const.c (fold): Typo, missing `case'.
285
286         * cccp.c (main): Typo handling `-I-' option.
287
288         * tm-i386.h (NO_FUNCTION_CSE): Define this; cse is said to slow
289         things down with less than 7 calls.
290
291         * stmt.c (fixup_var_refs_insn): When scanning the reg-notes,
292         don't touch other insns they point at.
293
294         * expr.c (do_jump): Use invert_exp, not reverse_condition,
295         to invert sense of a jump.
296         * jump.c reverse_condition now static, invert_exp now global.
297
298 Mon Dec  5 10:51:39 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
299
300         * tm-sun386.h (ASM_FILE_START): In the .file arg, exclude directories.
301
302         * stmt.c (expand_expr_stmt): If -W, warn if stmt has no side effect.
303
304         * cccp.c (monthnames): Capitalize each name.
305
306         * rtl.def: New code MATCH_OPERATOR.
307         * genconfig.c (walk_insn_part): Handle it.
308         * genextract.c (walk_rtx): Handle it.
309         * genpeep.c (match_rtx): Handle it.
310         * genrecog.c (add_to_sequence): Handle it.
311         * genemit.c (max_operand_1, gen_exp, gen_expand): Handle it.
312         * genoutput.c (scan_operands): Handle it.
313         (insn_n_alternatives): New array in the output.
314         (struct data): New slots n_alternatives and op_n_alternatives.
315         (scan_operands, gen_insn, gen_peephole):
316         Record op_n_alternatives for each operand.
317         (output_epilogue): Verify that all operands have same # of alternatives
318         Also output insn_n_alternatives.
319
320         * reload.c (find_reloads): use insn_n_alternatives to control
321         the loop over all alternatives.
322         An empty constraint or empty alternative in a constraint
323         is always satisfied.
324         * recog.c (constrain_operands): Likewise.
325
326         * c-decl.c (lang_decode_option): For each -f option, recognize a form
327         with `no-' and a form without, as contraries.
328
329         * toplev.c (main): Decode -f options using a table
330         so that each option automatically has a `no-' variant.
331
332         * combine.c (try_combine): Give up if I1 or I2 follows a compare insn.
333
334 Sun Dec  4 12:00:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
335
336         * varasm.c (data_section): If flag_shared, use SHARED_SECTION_ASM_OP
337         if that is defined.
338
339         * cccp.c (include_default): Add /usr/local/include.
340
341         * Makefile (install): Install the makefile.
342
343         * varasm.c (assemble_external): New fn to declare an external.
344         (assemble_variable): Output nothing for externals.
345         * c-parse.y (primary => identifier): Call assemble_variable on 1st use.
346
347         * toplev.c (main): Print version info on stderr, not stdout.
348         * tm-*.h (TARGET_VERSION): Likewise.
349
350         * tm-isi68.h, tm-news800.h: Rename __HAVE_FPU__ to __HAVE_68881__.
351
352         * sparc.md (seq, etc): Entire page rewritten by Tiemann
353         to avoid incorrect use of PARALLEL.
354         * output-sparc.c (gen_scc_insn): Corresponding changes.
355
356 Sat Dec  3 00:03:19 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
357
358         * gcc.c (do_spec_1): %P is an ANSIfied form of %p:
359         put __ at beg and end of each predefined macro name.
360
361         * tm-sun3.h (CPP_SPEC): Don't define -Dmc68010, etc., if -ansi.
362         * tm-sun2.h (CPP_SPEC): Likewise.
363
364         * c-decl.c (shadow_tag): Don't complain if declare a new tag
365         at top level, or if redeclare a tag.
366
367         * c-decl.c (grokparms): Warn if parm points to incomplete type.
368         (We already err if its own type is incomplete.)
369
370         * stmt.c (fixup_var_refs_insns): Fix any (SUBREG (MEM)) in REG_NOTES.
371         (walk_fixup_memory_subreg): New subroutine used for this.
372
373         * integrate.c (copy_rtx_and_substitute): Handle MEM refs to the middle
374         of a stack-parm--at least in the case of reading the parm.
375
376         * rtl.c (rtx_equal_p): REG_FUNCTION_VALUE_P is significant
377         only until end of reload pass.
378         * toplev.c (rest_of_compilation):
379         Control that by setting new var rtx_equal_function_value_matters.
380
381         * c-decl.c (init_decl_processing): Don't declare the builtins
382         that aren't really implemented.
383
384         * output-sparc.c (output_move_double): "in structure" implies
385         8-byte alignment only for DFmode, not for DImode.
386
387         * final.c (output_operand_lossage): Cleaner text for error msg.
388         No longer need to write text into .s file, now that linenum is correct.
389
390         * c-decl.c (pushdecl): -traditional stops warning
391         about "declared extern, later static".
392
393         * c-typeck.c (build_indirect_ref): Don't handle flag_volatile here.
394         * expr.c (expand_expr): Handle it here, in INDIRECT_REF case.
395         This prevents -fvolatile from causing additional warnings.
396
397         * output-sparc.c (output_load_address): Allow REG+REG for operands[3].
398
399         * m68k.md (movsi): If we output the label LIn,
400         set the RTL_INTEGRATED flag in the switch table's pattern.
401         * tm-3b1.h (ASM_OUTPUT_CASE_END): Define LD%n only if LI%n was output.
402
403         * i386.md (push-and-add pattern): Comment it out.
404         It's said to result in slower code.
405
406         * i386.md (tstqi, tsthi, tstsi): Output real `test' insn if op is reg.
407
408         * i386.md (push for DI): Allow `oiF' for 2nd operand.
409
410 Fri Dec  2 13:57:35 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
411
412         * i386.md (movdi): Allow F constraint for 2nd operand.
413
414         * i386.md (push for QI): define pattern to push a QImode
415         which really uses pushw and therefore really pushes a halfword.
416         * tm-i386.h (PUSH_ROUNDING): Round up to multiple of 2.
417
418         * gcc.c (do_spec_1): Handle %e, which means report an error.
419         Use it to prohibit -pg with -fomit-frame-pointer.
420
421         * tree.h (DECL_RESULT_TYPE): New field in FUNCTION_DECL holds the type
422         of the widened returned value (not nec. the declared return type).
423         * c-decl.c (start_function): Set DECL_RESULT_TYPE.
424         * integrate.c (expan_inline_function): Use that, not DECL_RESULT.
425
426 Thu Dec  1 16:44:10 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
427
428         * cse.c (fold_rtx): When reordering constant args, insist on
429         manifest constants; regs with known contents won't do.
430
431         * i386.md (mulsi3): Don't use rtx_equal_p to compare regs.
432
433         * expr.c (move_by_pieces_1): Don't call change_address
434         if address is autoinc, since that may not be memory_address_p.
435         Subroutine-macro add_offset deleted.
436
437         * optabs.c (bcc_gen_fctn, setcc_gen_fctn): Moved to this file.
438         (init_optabs): Init those tables here.
439         * expr.c (init_conditions): Not here.
440
441         * stmt.c (assign_stack_local): Make a list of all stack slots.
442         * emit-rtl.c (unshare_all_rtl): Unshare all the stack slots.
443
444         * final.c (final): Handle BARRIER with ASM_OUTPUT_ALIGN_CODE.
445         * tm-ns32k.h (ASM_OUTPUT_ALIGN_CODE): Align to 4-byte bdry.
446 ??      * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Override: just 2-byte bdry.
447
448         * tm-m68k.h (PRINT_OPERAND): use new macros to print floats.
449         (ASM_OUTPUT_FLOAT_OPERAND): New macro.
450         (ASM_OUTPUT_DOUBLE_OPERAND): New macro.
451         * tm-sun3.h: Override those macros, to check for infinities.
452
453 Wed Nov 30 06:35:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
454
455         * tm-ns32k.h (FUNCTION_{PRO,EPI}LOGUE): if no frame pointer,
456         do explicit push or pop insns.
457
458         * tm-genix.h (PRINT_OPERAND): Fix typo `file'.
459         Extedn decl for paren_base_reg_printed.
460         (MAIN_FUNCTION_PROLOGUE): Deleted.
461         (ASM_OUTPUT_EXTERNAL): Defined.
462
463         * c-parse.y (yyerror): Better error msg for unprintable char in token.
464         (primary => identifier): Set TREE_USED if implicit decl made.
465
466         * Makefile (cleanlinks): New target.
467         (INSTALL): New variable, has program used for installing files in sys.
468
469         * output-ns32k.c (print_operand_address): If addr is sum of 2 consts,
470         output ADDR first, then OFFSET.
471
472         * ns32k.md (addsi3): Allow adding const+reg with result in another reg.
473
474         * tm-seq386.h (FUNCTION_PROFILER): Provide overriding definition.
475
476         * tm-hp9k320.h: Alternate ASM_SPEC if using GAS.
477         Define STANDARD_STARTFILE_PREFIX if using GAS.
478         (FUNCTION_PROLOGUE): on 68020 for big stack frame use link.l.
479
480         * gcc.c (STANDARD_STARTFILE_PREFIX): New cust. macro replaces `/lib/'.
481
482         * va-sparc.h, va-spur.h: Prefix non-interface identifiers with `__'.
483
484         * optabs.c (init_optabs): Don't set up libcalls for ftrunc_optab
485         because (1) they aren't supported and (2) they are never used.
486
487         * gnulib.c (__builtin_saveregs): If not sparc, define the symbol anyway
488         to avoid a warning in ranlib.
489
490 Mon Nov 28 01:46:12 1988  Michael Tiemann  (mdt at choctaw)
491
492         * c-parse.y (yylex): Typo, `=' for `==' making wide strings.
493
494         * sparc.md (various places): make sure that all patterns which store
495         can store using const0_rtx (i.e., make all operands to `st' %rx).
496
497         * output-sparc.c (various places): changed dispatches on SYMBOL_REF
498         to dispatches on CONSTANT_ADDRESS_P since we now recognize any CONST
499         (and not just SYMBOL_REFs).  Don't recognize special case CONST for
500         output_block_move.  Compiler doesn't have enough information to use
501         it.
502
503         * stmt.c (expand_fixup): If the control stack is nested within the
504         nesting stack, then no fixup is needed.  Otherwise, compiler must
505         check for possible fixups between the current nesting stack and the
506         nesting stack that immediately contains the control stack.
507
508         * stmt.c (expand_function_start): functions which are nested use
509         DECL_CONTEXT.  For these functions, test that their DECL_CONTEXT is
510         a LET_STMT node.
511
512         * tree.h: declare `build_offset_type'.
513
514 Sun Nov 27 10:34:53 1988  Richard Stallman  (mdt at yahi)
515
516         * output-sparc.c (output_move_double):
517         Don't try to use ldd/std if OP1 is a constant.
518         * sparc.md (movdi): Allow immediate args moved into general regs.
519
520         * c-decl.c (grokparms): Reject incomplete parm types even if just
521         declarating, not defining.  Change types to error_mark_node
522         in both the PARM_DECL and the list of types.
523
524         * dbxout.c (dbxout_type): It's not a bug if a RECORD_TYPE
525         has a typedef as its TYPE_NAME.  That happens in C++.
526
527         * Make each `asm' with operands record its source file/line
528         with reg-notes.  It doesn't work to emit a special note before the insn
529         because the insn can be moved by loop_optimize.
530         * stmt.c (expand_asm_operands): New args FILENAME, LINE.
531         Record them in the insn, in reg notes.
532         * c-typeck.c (c_expand_asm_operands): New args, passed along.
533         * c-parse.y: Pass those args.
534         (maybe_type_qual): Line #s for asm stmts emitted like all others.
535         * rtl.h (REG_ASM_FILE, REG_ASM_LINE): New kinds of reg notes.
536         * toplev.c (error_for_asm): Get the info from those notes.
537
538         * reload.c (find_reloads): Don't clear BADOP for a reg letter
539         if the alternative ultimately doesn't allow any regs.
540
541         * reload.c (find_reloads): If an `asm' insn gets an error,
542         change it to a USE to avoid duplicate error msgs or later trouble.
543
544         * reload.c (find_reloads_address): Reloading a constant address,
545         specify Pmode as the mode for push_reloads, in case of CONST_INT.
546
547         * expr.c (emit_push_insn): Fix calc. of space needed when PARTIAL > 0.
548         Both scalar case and BLKmode case needed fixing.
549
550         * sparc.md (load/store constant address):
551         Moving DF from mem to cpu regs, don't go via %f0.
552         Don't use std/ltd if alignment is wrong or uncertain.
553
554 Sun Nov 27 10:34:53 1988  Michael Tiemann  (mdt at yahi)
555
556         * reload.c (push_reload): Allow VOIDmode for INMODE, OUTMODE;
557         default the mode from the operand values.
558
559         * sparc.md: remove patterns which generate annulled branch insns.
560         They are correct, but those insns confuse GDB.
561
562         * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS):
563         Treat any constant address like a SYMBOL_REF.
564         * sparc.md: Check for CONSTANT_ADDRESS_P rather than SYMBOL_REF.
565
566         * sparc.md: Peepholes now accept SYMBOL_REF addresses.
567         The output routine can now split them properly even as delay insns.
568
569         * print-tree.c (dump): added entry for METHOD_TYPE and
570         METHOD_CALL_EXPR.  Also added entry for WITH_CLEANUP_EXPR.  Suggest
571         that we make first_rtl of WITH_CLEANUP_EXPR 2 instead of 1.
572
573 Sun Nov 27 00:15:33 1988  Michael Tiemann  (mdt at yahi)
574
575         * print-tree.c (dump): added entry for OP_IDENTIFIER.
576
577         * tree.c (build_op_identifier): new function.  Needed because
578         `build_nt' expects an "e" node, but OP_IDENTIFIER is an "x" node.
579
580         * store_layout.c (layout_record): use DECL_FIELD_CONTEXT instead of
581         DECL_CONTEXT.
582
583         * tree.h (DECL_FIELD_CONTEXT): new macro.  Points to the type that a
584         FIELD_DECL is a member of.  For C, this is just DECL_CONTEXT.
585
586         * tree.c (build_method_type): typo used "==" to assign basetype to
587         TYPE_METHOD_BASETYPE with predictably poor results.
588
589 Sat Nov 26 22:55:32 1988  Michael Tiemann  (mdt at yahi)
590
591         * output-sparc.c (output_sized_memop): new function to output a load
592         or store insn based on the size of the operand loaded or stored.
593         (make_f0_contain_0): use info from condition codes to decide whether
594         the register %f0 needs to have 0 loaded from memory or not in order
595         to contain zero.
596         (gen_scc_insn): new function used by define_expands for
597         set-on-condition-code insns.
598         (output_delay_insn): now knows how to handle load and store
599         scheduling when the load or store operation takes two insns instead
600         of one.  The rewrite is now understands is this:
601
602           sethi %hi(address),%g1        -> sethi %hi(address),%g1
603           ld/st [%g1+%lo(address)],%reg -> b target
604           b     target                  -> ld/st [%g1+%lo(address)],%reg
605           nop                           -> ;; gone
606
607         * jump.c (reverse_condition): make this function publicly visible,
608         now needed in expr.c.
609
610         * output-sparc.c (reg_or_0_operand): new function, returns nonzero
611         if operand is const0_rtx or a register of specified mode.
612         (hardreg): deleted.
613
614         * expr.c, stmt.c: fixed random syntax errors.
615
616         * tree.c (build_method_type): now corresponds to defn in tree.def
617           expr.c (expand_call): removed code to get FUNCTION_TYPE from
618           METHOD_TYPE.  This should probably be looked at harder.
619
620         * tree.def (METHOD_TYPE): Changed definition so that TREE_TYPE (m)
621         (where m is a METHOD_TYPE) is the type of the return value of the
622         method, not the FUNCTION_TYPE from which the METHOD_TYPE is derived.
623         
624         * Makefile: Changed target of BINDIR from /usr/local to
625         /usr/local/bin.
626
627 Sat Nov 26 16:29:22 1988  Michael Tiemann  (mdt at chickasaw)
628
629         * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Allow any SYMBOL_REF.
630         (NOTICE_UPDATE_CC): Remember high half of %g1 as a "condition code"
631         to avoid reloading it if it does not change.
632         (NOTICE_UPDATE_CC): Test SET_SRC, not SET_DEST, for a CALL rtx.
633         (PRINT_OPERAND): New code-letter `m' says output operand as an address.
634
635         * toplev.c (flag_syntax_only): New flag variable.
636         * flags.h: Likewise.
637
638         * toplev.c (error_with_decl): Extra arg, passed to fprintf.
639         (warning_with_decl): Likewise.
640
641         * tree.c (build_offset_type): New function.
642
643         * tree.h (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS.
644         Uses in tree.c and... renamed.
645
646         * combine.c (SUBST_INT): New macro, for replacing an int.
647         (subst): Collapse nested SUBREGs even if SUBREG_WORDs are not 0.
648
649         * expr.c (bcc_gen_fctn, setcc_gen_fctn): new tables,
650         initialized in init_comparisons.
651         Used in expand_expr, do_jump, do_store_flag
652         instead of explicit construction of a jump.
653
654         * expr.c (save_noncopied_parts): New function.
655
656         * expr.c (expand_expr):
657           ARRAY_REF: Special case for array of constants.
658           WITH_CLEANUP_EXPR: Handle it.
659           INIT_EXPR: Case deleted.
660           MODIFY_EXPR: Use save_noncopied_parts.
661
662         * expr.c (expand_call): blkmode_parms_forced can be >0
663         even when no stack arg space otherwise needed.
664         Don't use a hard reg as a target if there are cleanups.
665
666         * stmt.c (struct block): New elt. outer_cleanups.
667         (struct case): New elt. num_ranges.
668         (struct fixup): Changed meaning of cleanup_list_list.
669         Changes in expand_fixup, fixup_gotos.
670         (expand_fixup): Detect some internal forward-jumps
671         that need no fixups--for speed.
672         (fixup_gotos): New arg THISBLOCK.
673         (expand_expr_stmt): Handle flag_syntax_only.
674         (use_variable): No longer static.
675         (use_variable_after): new fn.
676         (expand_end_bindings): handle cleanups like a stack level.
677         (expand_decl): Handle a cleanup with no decl.
678         (move_cleanups_up): Preserve relative order of cleanups.
679         (expand_anon_union_decl): New fn.
680         (pushcase): New fast clause if no ranges yet.
681         (pushcase_range): Turned on.
682         (expand_function_start): New temp var `fntype'.
683         Set TREE_USED for a parm we are ignoring.
684         (expand_function_end): Really use the `filename' arg.
685         Use use_variable_after for SAVE_EXPR regs.
686
687         * dbxout.c (dbxout_type): Handle OFFSET_TYPE.
688
689         * gnulib.c (__builtin_new, etc.): Support for C++.
690
691         * emit-rtl.c (next_insn, prev_insn): New fns.
692
693 Sat Nov 26 16:29:22 1988  Richard Stallman  (mdt at chickasaw)
694
695         * tree.h (TREE_LANG_FLAG_[1234]): New attributes.
696         (TYPE_METHOD_BASETYPE): New name for TYPE_METHOD_CLASS.
697         (TYPE_OFFSET_BASETYPE): New macro.
698         (NUM_TREE_CODE): New macro.
699         (TYPE_NONCOPIED_PARTS): new field in a type-node.
700
701         * varasm.c (make_decl_rtl): Split out from assemble_variable.
702         (assemble_variable): No longer creates the rtl.
703         No longer handles policy of whether to output tentative decl yet.
704         (output_constant_def): Don't lose if wasn't temp allocation
705         when this was called.
706         (output_constant): Handle REFERENCE_EXPR.
707
708         * Makefile (BISONFLAGS): new variable.
709         (prefix): New variable, used in bindir and libdir.
710         (C_OBJS, CPLUS_OBJS): New vars, split off from OBJS.
711         (LIBFUNCS): C++ support functions added.
712         (CPLUS_TREE_H): New variable.
713         (cc1plus): New target.
714         (lang_c, lang_cplus): Combines all targets for one language.
715         (gplus.info): New target.
716         (cplus-*.o): New targets.
717         (realclean): Handle new C++ files and recent renamings.
718         (install, TAGS): Likewise.
719
720         * print-tree.c (prtypeinfo): Handle TREE_LANG_FLAG_[1-4].
721
722         * tm-sparc.h (ASM_OUTPUT_DOUBLE): Special case for infinity.
723         (ASM_OUTPUT_FLOAT): Likewise.
724
725         * gcc.c: Don't define __GNU__.
726         For .cc files, pass -+ to cpp, and don't handle -ansi.
727         Use cc1plus as name of compiler for .cc files.
728
729         * stor-layout.c (layout_type): abort if given a LANG_TYPE node.
730         (layout_union): Complain if union has basetypes or static members.
731         (layout_record): Handle anonymous union members.
732
733         * tree.def (LANG_TYPE): New tree code for language-specific purposes.
734         (WITH_CLEANUP_EXPR): New tree code for expressions whose values
735         need to be cleaned up when they are deallocated.
736         (OP_IDENTIFIER): New tree code for certain C++ purposes.
737
738         * toplev.c (rest_of_decl_compilation): Call make_var_rtl
739         before assemble_variable.
740
741 Wed Nov 23 02:15:45 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
742
743         * xm-sunos4.h: Rename included config files to xm-*.
744         * xm-*.h: Likewise.
745
746         * fixincludes: Avoid altering args to names other than CTRL
747         that end in ...CTRL.
748         If a file isn't actually changed, delete the copy.
749
750 Mon Nov 21 12:48:22 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
751
752         * loop.c (move_movables): Never move a reg w/ # > old_max_reg.
753         (strength_reduce): For nonreplaceable giv, put insn to load it
754         after the insn that used to compute it, in case the latter
755         is the last of a libcall sequence.
756
757         * stmt.c (expand_function_end): If returning BLKmode, also copy
758         address where value is returned to the place that GDB will
759         expect to see it after the return.
760
761         * c-parse.y (readescape): Warn about hex constant out of range
762         for a target integer.
763         (yylex): Warn about escape out of range for non-wide char or string.
764         Use a buffer of ints to read a wide string.
765
766 Sat Nov 19 02:18:02 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)
767
768         * Version 1.31 released.
769
770         * sparc.md: Change `K' to `I' in all constraints.
771
772         * loop.c (gen_iv_mult): Handle TARGET==0.
773
774         * c-decl.c (duplicate_decls): Undo last change.
775
776         * c-decl.c (pushdecl): Instead of that change,
777         save old-decl's file/line before calling duplicate_decls,
778         and pass them later to warning_with_file_and_line.
779         * toplev.c (warning_with_file_and_line): New fn.
780
781 Fri Nov 18 13:07:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
782
783         * stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through
784         in case where a SET was writing in the variable being fixed.
785
786         * recog.c (register_operand, nonmemory_operand, memory_operand):
787         Changes to handle new var reload_completed: 1 means that
788         (SUBREG (MEM)) now counts as a mem-ref, since alter_subreg
789         will make it one.
790         * toplev.c (rest_of_compilation): Set and clear reload_completed.
791
792         * sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg,
793         output a jmpl rather than a call.
794         * tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM.
795
796         * reload.c (push_reloads): Reinstate handling of reg_equiv_constant.
797
798 Thu Nov 17 09:48:14 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
799
800         * reload1.c (constraint_accepts_reg_p): Name changed from
801         constraint_all_regs_p; new arg is reg we are concerned with,
802         and condition tested takes some advantage of that reg.
803
804         * gcc.c (main): Rename var `error' to `error_count' for name conflict.
805
806         * emit-rtl.c (emit_note): Output line #s even if no debug info wanted.
807         (emit_line_note): New fn, does what emit_note did.
808         (emit_line_note_force): New name for emit_note_force.
809         * stmt.c, c-parse.y: Call emit_line_note instead of emit_note.
810
811         * c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note
812         Now we can find the line # of every `asm' from the RTL.
813         * toplev.c (error_for_asm): New fn, gets line # by searching for NOTE.
814         * reload.c (find_reloads): Use error_for_asm.
815         * reload1.c (choose_reload_targets): Likewise.
816         * final.c (output_operand_lossage): Likewise.
817         Variable this_is_asm_operands is now current insn if it's nonzero.
818
819         * loop.c (move_movables): When a reg is moved, update regno_first_uid
820         and regno_last_uid; say life span includes entire loop.
821         * Decrement THRESHOLD per reg moved, not per insn moved.
822
823 Wed Nov 16 08:41:32 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
824
825         * gnulib.c (___builtin_saveregs): New fn, for sparc.
826
827         * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize
828         SYMBOL_REFs, except for the constants pool.
829         But do recognize REG+REG and SMALLINT+REG.
830         * sparc.md: New patterns for fetching and storing memory
831         whose address is symbolic and not "legitimate".
832
833         * sparc.md (movsi): Add `f' to op1 constraint.
834         New output clause for result in fp reg.
835         (Floating point fetch patterns): Output sethi insns.
836         (call_value, related patterns): value-register has `register_operand'.
837
838         * output-sparc.c (hardreg): New function.
839         (COMPATIBLE): Clause added for n_regs == 2.
840         (single_insn_src_p): Return 0 for MEM whose address is absolute.
841
842         * tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines):
843         Redefine, to exclude any possibility of SB-referencing addresses.
844
845         * loop.c (strength_reduce): Can't eliminate a biv if used before
846         start of the loop.  Used before is same as used after, if contained
847         in another loop.
848
849         * recog.c (asm_noperands, decode_asm_operands):
850         Handle case of no outputs, but some clobbers.
851         * stmt.c (expand_asm_operands): Generate right stuff for that case.
852
853         * tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa.
854
855 Tue Nov 15 00:10:26 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
856
857         * loop.c (gen_iv_mult): Arg OP0 may not be a constant.
858         Pay attention to return value of expand_mult.
859         (eliminate_biv): Call changed.
860
861         * output-m88k.c, output-sparc.c (output_move_double):
862         Fix typo `optype0' for `optype1'.
863
864         * c-decl.c (duplicate_decls): Don't alter file, line of old decl.
865
866         * c-parse.y (skip_white_space): Don't recognize comments; rely on cpp.
867
868         * rtl.c (rtx_equal_p): Handle vectors.
869
870         * loop.c (scan_loop): Change elts of n_times_set back to positive
871         for candidates that weren't moved, before doing strength reduction.
872
873         * ns32k.md (movdi, movdf): Use `&' constraint for first operand.
874
875         * reload1.c (reload): Initialize spill_indirect_ok here.
876
877         * config-sun4.h: Recognize `-static' switch.
878
879         * global-alloc.c (set_preference): Avoid using nonsense hard reg #s
880         that result from adding OFFSET.
881
882         * sdbout.c (sdbout_end_function): Line # in .ef should be relative.
883
884         * final.c (output_source_line): For SDB, don't output negative #s.
885
886         * tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg.
887
888 Mon Nov 14 11:03:16 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
889
890         * reload.c: Don't declare refers_to_regno_p.
891
892         * gcc.c (main): Warn if any input files are for the linker
893         but the linker is not being run.
894
895         * jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL.
896
897         * local-alloc.c: qty_birth, qty_death elements are now -1, not 0,
898         when the value is not known.
899
900         * expmed.c (extract_bit_field): Bug computing xbitpos, xoffset
901         when changing units from bytes to words.
902
903         * loop.c: Rename `times_used' field in `struct movable' to `savings'.
904         (scan_loop): When scanning the consecutive sets, for each libcall,
905         increment `savings'--leave `consec'.
906         When making movable for (SET (REG) 0) which is part of zero-extension,
907         set `savings' to 1 initially, since only 1 insn will be moved.
908         And don't let any other reg force that insn.
909         Reduce initial THRESHOLDs.
910         (move_movables): Don't add `consec' into `savings'
911         since the initial `savings' was proportional to `consec'.
912         Decrement THRESHOLD by 3 (not 2) for each move done.
913
914         * reload1.c (choose_reload_targets): Strip subregs from OLD
915         before writing the output-reload move-insn.
916
917         * reload1.c (reload): counted_for_groups and counted_for_nongroups
918         are now file-scope.  Update them both when spilling.
919         (new_spill_reg): No need for counted_for_nongroups as arg.
920         (choose_reload_targets): Don't use for a group
921         any spill regs for which counted_for_nongroups is set.
922
923         * dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously
924         for PARM_DECL.
925
926 Sun Nov 13 08:13:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
927
928         * cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode.
929
930         * loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN.
931         * emit-rtl.c (emit_call_insn_before): New fn.
932         
933         * config-sun4.h (LINK_SPEC): Avoid shared libraries if -g.
934
935         * expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP
936         before computing the arg value.
937
938         * combine.c (use_crosses_set_p): Moving a ref to stack ptr
939         is always forbidden if machine has push insns, since might cross one.
940
941         * vax.md (movqi): Avoid out-of-range immed ops in mcomb.
942
943         * expmed.c (extract_bit_field): Don't say `extzv' in the
944         clause for `extv'.
945
946         * emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared,
947         unshare its address from everything outside that MEM.
948
949         * expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'.
950
951         * expr.c (store_expr): In case where will not return TARGET
952         and must do type conversion, don't fail to store into TARGET.
953
954         * dbxout.c (FORCE_TEXT): New macro used before output `.stabs'
955         to go to the text section on targets that require it.
956         (DEBUG_SYMS_TEXT): Target macro which turns on that feature.
957
958         * reload1.c (reload): Index in spill_regs was wrong
959         when checking counted_for_groups.
960         (choose_reload_targets): When calling find_equiv_reg looking for
961         a reload reg, reject all spill regs, even those not in use now.
962
963         * tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files.
964
965         * cccp.c (main): Don't die if no output file arg given.
966
967         * fixincludes: Tell `find' to find only ordinary files.
968
969         * config.gcc: If symlink fails, make a hard link.
970
971 Sat Nov 12 20:43:20 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
972
973         * Makefile (gnulib): Use cp to make the temporary .c files;
974         less likely to fail than ln.
975
976 Sat Nov  5 12:46:39 1988  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
977
978         * tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable
979         pair of registers to hold a double value.  This is correct for the
980         fpa but incorrect for the 68881.  It was, however, simpler than
981         defining a new regclass.
982
983 Tue Oct 25 12:03:49 1988  Randall Smith  (randy at gluteus.ai.mit.edu)
984
985         * m68k.md: Added some thoughts (comments) on best method to allow
986         68881 code with fpa code.
987
988 Thu Oct 13 14:19:17 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
989
990         * Version 1.30 released.
991
992         * stupid.c (stupid_life_analysis): Init last_call_suid with
993         largest possible value, not 0.
994
995 Wed Oct 12 04:40:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
996
997         * output-i386.c (output_asm_insn_double_reg_op): Compensate for
998         assembler bug that interchanges fsub and fsubr.
999
1000         * reload1.c (order_regs_for_reload): Undo 29 Sept change.
1001         It breaks the 386.
1002
1003         * varasm.c (decode_rtx_const): Don't example value->addr
1004         if what was stored in was value->d.
1005
1006         * toplev.c (set_float_handler): New fn, specify where to jump
1007         on floating exception signal.
1008         * fold-const.c (combine): Use that to handle overflow in arithmetic.
1009
1010         * c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP
1011         when making an array type.
1012
1013         * dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose
1014         addresses we can't represent.
1015
1016         * fold-const.c (fold): don't convert >= to > if both args are constant.
1017         When converting >= to >, don't fail to change CODE.
1018
1019 Tue Oct 11 04:13:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1020
1021         * vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits.
1022
1023         * final.c: Better error checking for %-specs in templates.
1024         (output_operand_lossage): new fn to report errors.
1025         (insn_noperands): new var: # operands in current fn.
1026         (this_insn_asm_operands): new var: 1 for `asm', 0 otherwise.
1027         (output_asm_insn): Check for operand # out of range.
1028         (output_asm_label, output_operand): Call new fn to report errors.
1029
1030         * reload.c (push_reloads): An input reload for (REG N) can match one
1031         for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value
1032         reloaded is the same in any case.
1033
1034 Mon Oct 10 06:19:05 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1035
1036         * recog.c (next_insns_test_no_inequality): Like next_insn_tests...
1037         but check all insns that follow this one and can use it's cc's.
1038         * output-m68k.c (output_btst): Use that.
1039
1040         * vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong.
1041
1042         * expr.c (expand_call): Set current_function_calls_setjmp if appro.
1043         * stmt.c (setjmp_protect): New fn: move all vars into stack
1044         unless declared `register'.
1045         * c-decl.c (finish_function): Call it if -traditional and setjmp used.
1046
1047         * cccp.c (main): Open output after the input.
1048         Handle `-o -'.
1049
1050 Sun Oct  9 00:28:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1051
1052         * tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate.
1053
1054         * c-decl.c (pushdecl): After duplicate_decls, maybe warn about
1055         "declared extern and later static".
1056
1057         * expmed.c (store_bit_field): In insv case, avoid turning
1058         VALUE into a subreg of a subreg.
1059
1060         * loop.c (move_movables): When moving a libcall,
1061         un-cse the function address; put it into the call insn.
1062
1063 Sat Oct  8 01:48:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1064
1065         * cse.c (equiv_constant): Subroutine to find the constant equivalent
1066         of a reg.  Now handles SUBREGs too.
1067         (fold_rtx, fold_cc0): Use that function.
1068         Don't handle SUBREGs like arithmetic.
1069
1070         * reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p
1071         if arg is 0.
1072
1073 Fri Oct  7 01:00:19 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1074
1075         * assert.h: Typo declaring __eprintf.
1076
1077         * config.gcc: New file for making the links.
1078         Fixed bugs for sun-[23]-os4.  Added sun-[234] for sunos 3.
1079         Added sequent-i386.
1080
1081         * emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode.
1082         * varasm.c (immed_double_const): Don't be confused by this.
1083
1084         * expmed.c (negate_rtx): New 1st arg MODE.
1085         * expr.c (push_block): Calls changed.
1086         * m68k.md, ns32k.md, vax.md: Calls changed.
1087
1088         * c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS.
1089
1090         * tree.c (staticp): INDIRECT_REF with constant address is static.
1091         COMPONENT_REF may not be, if component offset isn't constant.
1092
1093         * c-typeck.c (default_conversion): Converting array to ptr, if array
1094         isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs
1095         will be simplified away.
1096
1097         * ns32k.md (tbitd patterns): op 0 constraint: reject constants.
1098         * ns32k.md (extzv for SImode and HImode):
1099         Use adj_offsetable_operand; plus_constant was the wrong thing.
1100
1101 Thu Oct  6 00:10:41 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1102
1103         * Version 1.29 released.
1104
1105         * loop.c (scan_loop): Don't think a `return' insn enters the loop.
1106
1107         * ns32k.md (ashrsi3, etc): New define_expands for right shift.
1108
1109         * reload1.c (choose_reload_targets): Change in the `force_group'
1110         logic to avoid crashes.
1111
1112 Wed Oct  5 04:09:19 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1113
1114         * expr.c (expand_expr, MINUS_EXPR): When negating integer op1,
1115         truncate it to its mode.
1116
1117         * expmed.c (extract_bit_field): SUBREG error check was wrong;
1118         SImode SUBREGs are possible and ok in extzv, extv.
1119
1120         * tm-ns32k.h (REGISTER_NAMES): Had two excess elements; deleted.
1121
1122 Mon Oct  3 01:15:51 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1123
1124         * toplev.c (main, compile_file): If no files spec'd, use stdin, stdout.
1125
1126         * flow.c (propagate_block): When checking for stack-adjust insns,
1127         exclude non-SET patterns.
1128
1129         * jump.c (jump_optimize): When changing jump=>return to return,
1130         must rerecognize the insn.
1131
1132         * toplev.c (compile_file): Allow `-' for main input or output filename.
1133
1134 Sun Oct  2 10:30:09 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)
1135
1136         * final.c (final): NOTICE_UPDATE_CC has extra arg, INSN.
1137         * tm-*.h: Change definitions.
1138
1139         * stmt.c (optimize_bit_field): Use gen_lowpart to make subregs.
1140
1141         * stmt.c (assign_parms): Don't obey regdecls in inline function.
1142         Don't lose existing REG_NOTES when adding one.
1143
1144         * stmt.c (expand_function_start): Make return rtx before
1145         marking parms live.
1146         (expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs.
1147
1148         * stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also.
1149
1150         * stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE,
1151         sometimes TREE_THIS_VOLATILE.
1152
1153         * jump.c (delete_insn): When finding PREV, skip deleted insns.
1154
1155         * varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards.
1156
1157         * emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size.
1158
1159         * final.c (final): Don't delete no-op moves (jump did it if appro.).
1160
1161         * final.c: Support prescan pass.
1162         (final_start_function): init_recog and CC_STATUS_INIT mvd to `final'.
1163         (final): New arg PRESCAN.  Do no output if prescanning.
1164         Don't alter conditionals if PRESCAN < 0 (prescan already done).
1165         If jump becomes no-op, change it to a NOTE.
1166         Remember to free the temp space for ASM_OPERANDS.
1167
1168         * final.c (final): Altering store-flag must check STORE_FLAG_VALUE.
1169         Don't try to do it if that isn't defined.
1170         Don't try it if condition doesn't test CC0.
1171         (alter_cond): No need to check COND != 0.
1172         Handle CC_Z_IN_NOT_N and CC_Z_IN_N.
1173         (m68k.md): Delete code that handled CC_Z_IN_NOT_N.
1174
1175         * conditions.h: New flag CC_Z_IN_N.
1176         * tm-*.h: Renumber all CC_... flags to make room.
1177
1178         * combine.c (use_crosses_set_p): Loop start was 1 off.
1179
1180         * local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in
1181         one insn, make it live immediately before and after that insn.
1182
1183         * global-alloc.c: Hard reg preferences for global pseudos.
1184         Var allocno_preferred_reg deleted; new vars hard_reg_preferences
1185         and regs_someone_prefers.
1186         (global_alloc): Init those vars.  Pass hard_reg_preferences elt
1187         to find_reg.
1188         (set_preference): New function makes entries in those vars.
1189         (global_conflicts): new arg to mark_reg_store.  Call set_preference.
1190         (find_reg): Last arg now a preferred hard_reg_set.
1191         Scan that set first of all.
1192         (mark_reg_store): New arg is offset for renumbered regno.
1193         But the code to use it is turned off.
1194
1195         * global_alloc (check_frame_pointer_required): Handle reg_equiv_address
1196         like reg_equiv_mem.  Don't try to allocate pseudos with equiv mems
1197         that don't use the frame pointer.
1198         * reload1.c (reload): Call changed.
1199
1200         * jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether
1201         it does nothing but set cc0.
1202         (find_cross_jump, delete_jump): Use that fn for these tests.
1203         * loop.c (loop_skip_over): Likewise.
1204         * reload.c (push_reload): Likewise.
1205
1206         * genoutput.c: Output `const' before the data arrays.
1207         Define it as nothing if not __STDC__.
1208
1209 Sat Oct  1 02:19:29 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)
1210
1211         * expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes.
1212
1213         * cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant,
1214         if the arg width is too wide to handle, return safely.
1215
1216         * combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word.
1217
1218         * rtl.c (refers_to_regno_p): Moved from reload.c.  Not static.
1219         (reg_overlap_mentioned_p): New function, calls the above.
1220         * output-*.c: Use that instead of reg_mentioned_p.
1221         * tm-*.h (NOTICE_UPDATE_CC): Likewise.
1222         * reload.c (push_reload, combine_reloads): Likewise.
1223         * reload1.c (choose_reload_targets): Use it to check earlyclobbers.
1224
1225         * reload1.c (choose_reload_targets): Elimination of previous
1226         output-reload feeding our input now limited to pseudo-regs.
1227
1228         * flow.c (life_analysis): Delete any insn copying reg to itself.
1229         (propagate_block): Move update of OLD after special life and death
1230         for CALL_INSNs.
1231
1232         * vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate
1233         the shift count.
1234         * expmed.c (expand_shift): Eliminate negate-the-shift-count feature.
1235
1236         * vax.md (and*i3): define_expands which use complement and bit-clear.
1237         * expmed.c (expand_bit_and): Eliminate feature to do that.
1238         This function could be eliminated.
1239
1240         * expmed.c (store_bit_field): Handle nested subregs.
1241         Allow gen_insv to fail; if it does, delete what we did and then
1242         use store_fixed_bit_field.
1243         (store_fixed_bit_field): Use gen_lowpart to make SUBREGs.
1244         Do that for SUBREGs just as for REGs.
1245         Error check OFFSET must be 0 for REGs.
1246         (store_split_bit_field): Error check OP0 is a SUBREG when expected.
1247         (extract_bit_field): Allow gen_ext{,z}v to fail.
1248         Use gen_lowpart to make subregs.
1249         (expand_shift): If a try fails, delete any insns it made.
1250
1251         * expmed.c (expand_mult): Use expand_unop to negate.
1252         When adding 2 powers of 2, do serial shifts, not parallel.
1253         Handle absval==1 like other powers of 2.
1254
1255         * explow.c (force_reg): Don't lose any existing reg notes.
1256
1257         * stmt.c (expand_start_stmt_expr): Eliminate return value.
1258         (expand_end_stmt_expr): No need for argument.
1259         * c-parse.y (primary): Change calls.
1260
1261 Fri Sep 30 01:50:22 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1262
1263         * integrate.c (copy_rtx_and_substitute, copy_address):
1264         'u' case erroneously returned the translated single element.
1265         (copy_address): Special cases for frame-ptr and sums containing it.
1266         MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute.
1267         (copy_rtx_and_substitute): adjust mode of inline_target for context.
1268
1269         * jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged.
1270
1271 Thu Sep 29 02:50:46 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1272
1273         * i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0.
1274         * vax.md (movsi, movhi): Likewise.
1275
1276         * varasm.c (decode_rtx_const): Was setting un.addr.base wrong
1277         for a CONST.  Should be symbol name, not the SYMBOL_REF.
1278
1279         * rtl.c (rtx_equal_p): When comparing registers, check
1280         REG_FUNCTION_VALUE_P.  If there are `u'-slots in the rtx, ignore them.
1281
1282         * rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated
1283         as uniquified (various constants).
1284
1285         * rtl.c (read_rtx): Element type 'S' is string that may be omitted.
1286         * rtl.def (define_insn, define_peephole): Add a last element, type 'S'.
1287         * genoutput.c: Collect these optional last elements and output as
1288         array `insn_machine_info' of structs `INSN_MACHINE_INFO'.
1289         The last must be defined as a macro.
1290         * recog.h (insn_machine_info): Declare it if appropriate.
1291
1292         * regclass.c (record_address_regs): In PLUS case, look inside SUBREGs.
1293
1294         * reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with
1295         invalid memory addresses.
1296         When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS
1297         on their addresses.
1298         (alter_reg): Check that with reg_equiv_mem.
1299         (spill_hard_reg): If fp reg, spill regardless of basic_block_needs.
1300
1301         * reload1.c (order_regs_for_reload): Don't put invalid regs into
1302         potential_reload_regs at all.  (They used to go at the end.)
1303
1304         * reload.c (find_reloads): Store all earlyclobber operand in
1305         reload_earlyclobbers (# in n_earlyclobbers):
1306         * reload1.c (choose_reload_targets): Don't use value of find_equiv_reg
1307         if it matches an earlyclobber operand.
1308
1309         * reload.c (find_reloads_address for REG):
1310         No need for explicitly excluding hard regs in these tests.
1311         (find_reloads, find_reloads_address_1 for REG): likewise.
1312
1313         * reload.c (push_reload): Code testing reg_equiv_constant should
1314         be obsolete; add error check to verify this.
1315
1316         * reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap.
1317         (refers_to_regno_p): Handle CLOBBERS.  Handle overlap.
1318         New arg ENDREGNO specs end of range to check for;
1319         all callers changed (all in this file).
1320
1321         * reload.c (find_reloads): SUBREG like REG in alternate recovery
1322         for earlyclobber conflict.
1323         The operands to unswap are those that are supposed to commute.
1324         When operands match, copy the regclass of earlier one for later one.
1325
1326         * stmt.c (optimize_bit_field): Don't use gen_extend_insn;
1327         use convert_move, then reorder the insns.
1328         * optabs.c (gen_extend_insn): Deleted.
1329
1330         * optabs.c (emit_cmp_insn): Don't emit queue before recursion.
1331         Don't convert size to SImode for cmpstrqi.
1332
1333         * optabs.c (expand_binop): Keep any old REG_NOTES when adding them.
1334         Always delete_insns_since if returning failure.
1335         (expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them.
1336         * spur.md (movhi): likewise.
1337
1338         * RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE.
1339         * emit-rtl.c (emit_insns): New fn, emit a chain of insns.
1340         * expr.c (expand_expr): Use that.
1341         Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output).
1342         * stmt.c (expand_end_stmt_expr): Use get_insns to get the chain.
1343
1344         * stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain.
1345         (fixup_var_refs): Scan all waiting RTL_EXPRs not yet output.
1346         Also scan all stacked sequences on sequence_stack.
1347
1348         * genemit.c (gen_expand): Generate calls to {start,end}_sequence.
1349         Use `emit' to handle a PARALLEL.
1350         (FAIL, DONE): Change to fit gen_expand changes.
1351
1352         * emit-rtl.c (change_address): abort if arg isn't a MEM.
1353
1354         * emit-rtl.c: Sequences work now by saving and restoring first_insn
1355         and last_insn.  So these variables are used even when in a sequence.
1356         emit_to_sequence has been deleted.
1357         (start_sequence, end_sequence): Save and restore first_insn, last_insn.
1358         (get_last_insn, add_insn): Sequences no longer need special treatment.
1359         (delete_insns_since, reorder_insns): likewise.
1360         (push_to_sequence): Set up to emit to a given existing insn chain.
1361
1362         * emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs.
1363         Insert missing return stmt in MEM case (for MEMs ok to share).
1364         (unshare_all_rtx): Now can copy the REG_NOTES simply.
1365         Copy the LOG_LINKS too.
1366
1367         * emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG.
1368         (delete_insns_since): Don't lose if FROM is the first insn.
1369         (emit): Declare void, since no useful value.
1370         Call simplejump_p properly.
1371         (restore_reg_data_1): When a reg is an address, do mark_reg_pointer.
1372
1373         * dbxout.c (dbxout_types): Call dbxout_symbol to do the work.
1374         (dbxout_type_def): Deleted.
1375         (dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output.
1376         Don't output the same one twice. 
1377
1378         * cse.c (fold_cc0): LABEL_REF is not zero.
1379
1380         * cse.c (cse_insn): Don't insert src, dest if they are the same place.
1381
1382         * cse.c (lookup_as_function): Return entire rtx, not just operand.
1383         (cse_insn): Caller changed.  Also, copy the result before inserting it.
1384
1385         * cse.c (fold_rtx): Put constant arg last if commutative op.
1386         Handle idempotents and identities for mult, div, booleans, shifts.
1387
1388         * cse.c (canon_hash): Parens were missing around shifts in "rotates".
1389
1390         * c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR
1391         like TRUTH_AND_EXPR; OR also.
1392
1393         * c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion
1394         for TRUTH_ANDIF, etc.
1395         (build_unary_op): More simplifications for TRUTH_NOT_EXPR;
1396         uses new fn `invert_truthvalue'.
1397
1398         * recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p
1399         since it no longer needs to renumber.  Also it now really assumes
1400         arg is a REG.  Callers changed.
1401         * reload.c: Callers changed.
1402
1403         * recog.c (general_operand): (SUBREG (MEM...)) need not alter mode.
1404         (register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed.
1405         (memory_operand): (SUBREG (MEM...)) is *not* allowed.
1406         (mode_independent_operand): Operand names were backwards!
1407         (No change in effect of this function.)
1408
1409         * print-tree.c (dump): Some expr nodes contain rtx's.  Print as rtx's.
1410
1411 Wed Sep 28 18:51:12 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1412
1413         * reload1.c (choose_reload_targets): If a reload wanted a group,
1414         don't allow a single register for it.
1415
1416 Tue Sep 27 11:43:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1417
1418         * final.c (output_addr_const): Handle DImode CONST_DOUBLEs.
1419         * tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT.
1420
1421         * vax.md (rotldi3): Insn deleted; it doesn't really exist.
1422
1423         * toplev.c (report_error_function): Also mention the file name,
1424         for parallel makes.  New arg FILE; all callers changed.
1425
1426 Mon Sep 26 15:44:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1427
1428         * expmed.c (expand_shift): When using extzv, convert OP1 to SImode.
1429         * c-typeck.c (build_binary_op_nodefault): Convert shift-count
1430         to int regardless of result type.
1431
1432         * output-spur.c (output_move_double): Fix typo, optype0=>optype1.
1433
1434         * expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG.
1435
1436         * tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax.
1437
1438 Sun Sep 25 12:13:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1439
1440         * fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba.
1441
1442         * reload.c (find_reloads): Make no optional reloads if not -O.
1443
1444         * loop.c (strength_reduce): Can't eliminate a biv if it's used
1445         to compute a DEST_ADDR giv.  Only DEST_REG givs are safe.
1446
1447         * loop.c (general_induction_var): Shift & divide ops are linear
1448         only in 1st operand; don't look for biv or giv in 2nd operand.
1449
1450         * vax.md (fix_truncdfqi2): Use `%#'.
1451
1452 Sat Sep 24 00:25:48 1988  Richard Stallman  (rms at gluteus.ai.mit.edu)
1453
1454         * loop.c (n_times_set, n_times_used): Now file-scope;
1455         no longer passed as args to several functions.
1456
1457         * loop.c (basic_induction_var): Accept reg as source value
1458         only if it's invariant.
1459         (strength_reduce): Benefit calculation and threshold changed.
1460         Check reducibility of givs before trying to reduce them.
1461         Check eliminability of biv before considering the givs;
1462         let this affect the threshold.
1463         (record_giv): New subroutine adds a giv to the chain.
1464
1465         * ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8.
1466
1467         * integrate.c (expand_inline_function): Rename return_label
1468         to local_return_label; avoid shadowing.
1469
1470 Fri Sep 23 13:57:52 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1471
1472         * loop.c (loop_skip_over): Put the new label after the note that ends
1473         the loop.
1474
1475         * loop.c: New function strength_reduce and subroutines.
1476         * toplev.c: New var flag_strength_reduce, set from -fstrength-reduce.
1477
1478         * vax.md (sob insns): They were broken, with plus in one place
1479         and minus in another.  Use plus consistently.
1480
1481         * rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note.
1482         * optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes.
1483         * loop.c (scan_loop, move_movables): Move entire library calls.
1484         Use m->set_src to get the expression, in case it's from a REG_EQUAL.
1485         (consec_sets_invariant_p): Likewise.
1486
1487         * loop.c (scan_loop): Start scan from loop_top, if entry is rearranged.
1488         Watch out for pseudo regs created by strength_reduce;
1489         they can't index regno_last_uid.
1490         (replace_regs): # regs mapped is now an arg.
1491
1492         * loop.c (count_loop_regs_set): Don't increment n_times_set past 127.
1493         (consec_sets_invariant_p): Reject if N_SETS arg is 127.
1494
1495         * toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted.
1496
1497         * c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE
1498         in SPECPARMS indicates a parmlist, not an identifier list.
1499         (get_parm_info): Use only PARM_DECLs when making the list of arg types.
1500
1501         * combine.c (try_distrib): Boolean ops can't distribute through PLUS.
1502         MULT can distribute through PLUS and only PLUS.
1503
1504 Thu Sep 22 15:57:41 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1505
1506         * jump.c (jump_optimize): uncond jump to a return becomes a return.
1507
1508         * integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED.
1509         Avoid inevitable "unused" warning for these decls.
1510
1511         * c-typeck.c (comptypes): When comparing array types,
1512         ignore qualifiers of element type.
1513
1514         * tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros.
1515         * final.c (final_start_function): Use them to protect around
1516         the call to the profiling function.
1517         * stmt.c (expand_function_start): Set current_function_needs_context
1518         and current_function_returns_struct.
1519
1520         * stmt.c (expand_null_return_1): If clear_pending_stack_adjust
1521         doesn't clear it, do the adjust now.
1522         * expr.c (clear_pending_stack_adjust): No-op if -finline-functions.
1523
1524         * cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary.
1525
1526         * reload.c (find_reloads): Delete code to look for an equiv reg
1527         for a reg being input-reloaded.  This isn't safe.
1528         * reload1.c (choose_reload_targets): Do it here.
1529
1530 Wed Sep 21 00:36:22 1988  Richard Stallman  (rms at hobbes.ai.mit.edu)
1531
1532         * tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT.
1533         (STARTFILE_SPEC): Likewise.
1534
1535         * reload1.c (choose_reload_targets): When redirecting prev insn
1536         into this insn's reload-reg, check this doesn't break the prev insn
1537         by giving it a reg it can't accept.  Use new fn constraint_all_regs_p.
1538
1539         * tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common.
1540
1541         * tree.h (TREE_USED): New attribute macro.
1542         * c-parse.y (primary): Set TREE_USED in ..._DECL nodes.
1543         * toplev.c, flags.h: Define and set warn_unused.
1544         * stmt.c (expand_end_bindings): Warn if any var is unused.
1545         * print-tree.c (prtypeinfo): Print this attribute.
1546
1547 Tue Sep 20 15:29:01 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1548
1549         * assert.h: `assert' must expand to an expression.
1550         Error message should show arg before expansion, not after.
1551
1552         * c-decl.c (implicitly_declare): Make decl perm if !warn_implicit
1553         since start_function needs to look inside it in that case.
1554
1555         * toplev.c (announce_function): If we don't print, don't record we did.
1556
1557 Mon Sep 19 15:21:11 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1558
1559         * c-parse.y (structsp): If pedantic, warn if comma at end of enumlist.
1560
1561         * reload.c (find_reloads): Check insn_code_number >= 0 when
1562         looking in insn_operand_strict_low.
1563
1564         * tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__
1565         and put a space after that option.
1566
1567 Sun Sep 18 01:12:56 1988  Richard Stallman  (rms at hobbes.ai.mit.edu)
1568
1569         * reload.c (find_reloads): Make optional reloads for explicit MEMs.
1570
1571         * tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating.
1572         * m68k.md (movdi): Allow F's (can be DImode now).
1573         Don't allow f-regs (experiment).  Don't preference x-regs.
1574         (DImode push): Allow y-regs.
1575         (DFmode push): Allow y-regs, not x-regs.
1576
1577         * reload1.c (modes_equiv_for_class_p): New function.
1578         (reload): Compare multiple modes for reg group with that function.
1579         Allows differing modes in some cases when not tieable.
1580
1581         * c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident.
1582         * tm-3b1.h (ASM_OUTPUT_IDENT):  Define this as no-op.
1583
1584         * emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec.
1585         (get_last_insn): If in a sequence, return last insn of sequence.
1586         (delete_insns_since): If in a sequence, set sequence_last_insn.
1587
1588         * spur.md (CONST_DOUBLE load insn): Use & for most dests.
1589         (cond branches): pass additional args to output_compare.
1590         (movdf, movdi): Use & loading reg from mem.
1591         (trunc*): Enable these.
1592         (add): New pattern for adding large immediate operand.
1593         (shifts): A define_expand for each kind of shift,
1594         plus a recognizer which outputs repeated insns if necessary.
1595         (call*): Use r9 as temp, not r2.
1596
1597         * output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE.
1598         (singlemove_string): Handle reg as operand 1.
1599         (output_add_large_offset): Fake add insn with large immediate arg.
1600         (big_immediate_operand): Match such an arg.
1601
1602         * tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer.
1603         Handle bigger frames.
1604         (TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags.
1605
1606         * va-spur.h: Track position in regs and stack separately.
1607
1608         * c-decl.c (duplicate_decls): Warn if prototype follows
1609         non-prototype definition.
1610
1611 Sat Sep 17 14:30:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1612
1613         * expr.c (expand_builtin): Avoid crash if arg isn't integer type.
1614
1615         * c-decl.c (duplicate_decls): Just warn if redeclaring a builtin,
1616         and leave it built in unless it is redefined.
1617
1618         * vax.md (ashlsi3): Use addl3, moval or movad when useful.
1619         (addsi3): Avoid pushab, movab for constants < 64.
1620         Do use movab when > 64 when operands match.
1621         (mov*i): Use mcom* rather than mneg*.
1622         Use add*3 with two quick immediate args when useful.
1623         (movhi): Don't use movzbw or cvtbw; said to be slow.
1624
1625         * rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P,
1626         INSN_DELETED_P, REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P,
1627         CONSTANT_POOL_ADDRESS_P.
1628         Most places changed to use them.
1629
1630 Fri Sep 16 11:50:15 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1631
1632         * jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously
1633         when looking for no-op move insns.
1634
1635         * cccp.c (handle_directive): Ignore comments between # and directive.
1636
1637         * integrate.c (copy_rtx_and_substitute): Stack-push memrefs need
1638         to be copied.
1639
1640         * tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def.
1641
1642         * reload1.c (alter_reg): Don't reuse spill_stack_slot
1643         if it isn't big enough for this reg's mode.
1644
1645         * expr.c (emit_move_insn): After force_const_mem, ensure
1646         mem address is valid.
1647         (move_block_to_reg, move_block_from_reg): Likewise.
1648
1649         * expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value.
1650
1651         * m68k.md (zero_extend*): Require register_operand for operand 0.
1652
1653         * stdarg.h (va_start): Alternate defn for sparc.
1654
1655 Thu Sep 15 11:39:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1656
1657         * c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc.
1658
1659         * assert.h (__assert): Alternative definition for -traditional.
1660
1661         * output-sparc.c (output_block_move): Initialize xoperands.
1662
1663         * combine.c (try_combine): Never subst for a reg that is incremented.
1664
1665         * m68k.md (cmpm pattern): Make the match_operands match memrefs
1666         and check that they are pushes in the extra condition.
1667         This makes reloading handle the pushes properly.
1668
1669         * expr.c (MOVE_RATIO): Make it 15.  Allow overriding it.
1670
1671 Wed Sep 14 09:50:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1672
1673         * c-decl.c (build_enumerator): Use saveable_tree_cons.
1674
1675         * vax.md (movdf): Use movq when safe.
1676
1677         * Version 1.28 released.
1678
1679         * tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined.
1680
1681 Tue Sep 13 00:11:37 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1682
1683         * tree.c (saveable_tree_cons): New function.
1684         * c-decl.c (pushtag): Use it; lists of tags needed for inlining.
1685         (get_parm_info): Likewise.
1686
1687         * print-tree.c (dump): Handle each kind of statement node individually.
1688
1689         * integrate.c (copy_decl_tree): Don't pass DECL_RTL through
1690         copy_rtx_and_substitute if it's a memref with constant address.
1691
1692         * sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL
1693         has a form we don't understand.
1694
1695         * reload.c (find_reloads_address_1): Don't reload an autoincrement
1696         if it has a suitable hard reg already.
1697
1698         * c-typeck.c (process_init_constructor): Error check after digest_init.
1699
1700         * c-parse.y (is_reserved_word): Now static.
1701
1702 Mon Sep 12 19:19:28 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1703
1704         * i386.md (all push insns): Use `<' for the constraint,
1705         since a push_operand won't fit an `m' constraint on this machine.
1706
1707         * expr.c (expand_call): If fn name is `__builtin_alloca',
1708         it may be alloca.  This case arises if the user redeclares
1709         `__builtin_alloca'.
1710
1711 Sun Sep 11 01:47:01 1988  Richard Stallman  (rms at gluteus.ai.mit.edu)
1712
1713         * Eliminate MAX_SETS_PER_INSN.
1714         * cse.c (cse_insn): Combine all the tables and dynamically allocate.
1715         (cse_main): Count the actual number of SETs; don't estimate.
1716         * genconfig.c: Don't calculate MAX_SETS_PER_INSN.
1717         * stmt.c (expand_asm_operands): No limit on # of output operands.
1718
1719         * expr.c (expand_call):
1720         Store all non-reg parms first, then store all partially-in-reg
1721         parms, then all the (precomputed) wholly-in-reg parms.
1722         Special hair for BLKmode parms which must be passed entirely
1723         in memory; also for BLKmode parms initialized from function calls,
1724         for which it is best to allocate the space before computing value.
1725         Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg
1726         parms "take up space" on the stack below the stack pointer.
1727         (store_one_arg): Handle case of preallocated stack loc for BLKmode.
1728         Update current_args_size here, not in caller.
1729
1730 Sat Sep 10 19:58:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1731
1732         * output-sparc.c (output_scc_insn): Changed asm templates.
1733         Use common code to emit the move insns and label at the end of fn.
1734         (output_mul_by_constant): Use %g1 as temporary reg.
1735
1736         * sparc.md (indexed load pattern): Deleted.
1737         (fix_truncdfsi2): Don't ignore value of output_fp_move_double.
1738         (cse'd multiply): Operand 1 predicate is general_operand.
1739         (return peepholes): Conditionalize on ! TARGET_EPILOGUE.
1740
1741         * tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...):
1742         Use partial regs for args that start in regs but won't entirely fit.
1743
1744         * tm-sparc.h (CONST_COSTS): 0 for args that can be immediate.
1745         (STRUCTURE_SIZE_BOUNDARY): Now 8.
1746         (STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'.
1747
1748         * expr.c (struct arg_data): New component `stack' says where in the
1749         stack to put a BLKmode arg (if it's nonzero).
1750         (store_one_arg): Handle case where it's nonzero.
1751         (target_for_arg): New fn, precompute stack locn for BLKmode arg.
1752
1753 Fri Sep  9 01:41:13 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1754
1755         * cse.c (fold_rtx): Misnested ifs screwed SUBREG case.
1756
1757         * reload.c (find_reloads_toplev): Special case for (SUBREG REG)
1758         where REG is equivalent to a CONST_INT.
1759         (find_reloads): Don't ignore the value returned by find_reloads_toplev.
1760         Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload.
1761
1762         * reload.c (push_reload): Abort if memory subreg is not
1763         paradoxical; the MEM mode should be narrower than the SUBREG.
1764
1765         * stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn
1766         copying VAR to or from a register.
1767
1768         * m68k.md (movdi, movdf): the x-reg constraint accidentally allowed
1769         moving rm to rm with no &.
1770
1771         * vax.md (call_value): Typo.
1772
1773         * expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi
1774
1775         * m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns.
1776
1777 Thu Sep  8 18:22:14 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1778
1779         * c-parse.y: Use YYERROR instead of synonym YYFAIL.
1780         BISON VERSIONS PRIOR TO THIS DATE WON'T WORK!
1781
1782         * c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type.
1783
1784         * tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control
1785         options for CPP and assembler.
1786
1787 Wed Sep  7 13:44:59 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1788
1789         * New handling of reloading of PRE_DEC, etc.
1790         Now reload_in is the PRE_DEC, etc, and reload_inc is always positive.
1791         * reload.c (push_reloads): Old code to set reload_inc deleted.
1792         (find_reloads_address_1): Call push_reload the new way.
1793         (find_inc_amount): Value always positive.
1794         * reload1.c (choose_reload_targets): Detect this case.
1795         (inc_for_reload): New fn; does the real work for this case.
1796         * m68k.md (call, call_value): Fn address must be offsetable.
1797
1798         * combine.c (try_distrib): Reject strange cases such as if
1799         result of PREV1 or PREV2 is used in a memory address in INSN.
1800
1801         * vax.md (movsf): Generate movl instead of movf.
1802
1803         * expr.c (expand_call): If have regparms, store all BLKmode args
1804         before all the other args.
1805         (store_one_arg): New subroutine broken out.
1806
1807         * output-sparc.c (output_block_move): Complete rewrite.
1808
1809         * sparc.md (cse'd multiply insn): Typo in asm-output code.
1810
1811 Tue Sep  6 20:05:48 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1812
1813         * c-parse.y (yylex, etc.) Install Schmidt's perfect hash table.
1814
1815         * gcc.c: handle extension `.cc'.
1816
1817 Mon Sep  5 12:09:58 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1818
1819         * Version 1.27 released.
1820
1821         * tm-i386.h (PREFERRED_RELOAD_REG): When reloading a QImode,
1822         make sure the class doesn't include %esi or %edi.
1823         * i386.md (movqi): Eliminate only use of the class `x',
1824         for which PREFERRED_RELOAD_REG cannot work.
1825         (In next version, get rid of INDEX_CLASS).
1826         Also use `*' to cause preferencing of Q_REGS.
1827         * tm-m68k.h (PREFERRED_RELOAD_REG): When reloading a QImode,
1828         use DATA_REGS.
1829
1830         * reload.c (push_reloads): Braino in last change when IN == 0.
1831
1832         * flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS
1833         returns 0 for VOIDmode reg (inside a CLOBBER).
1834
1835         * c-parse.y (asm_operand): Handle `("REGNAME")' as an operand.
1836         * recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs.
1837         * regclass.c (reg_names): Variable now global.
1838         * stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate.
1839
1840         * stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs.
1841
1842         * varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions.
1843
1844         * c-parse.y (yylex): floatflag is now an enum.
1845         Detect invalid use of decimal points (> 1, or in exponent)
1846         and multiple exponent letters.
1847
1848         * expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE.
1849
1850 Sun Sep  4 00:36:30 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
1851
1852         * c-decl.c (grokdeclarator): A const array becomes an array of consts.
1853         * c-typeck.c (build_array_ref): Array ref is const if array elts are.
1854
1855         * output-sparc.c (output_move_double): Change criteria for ldd, std.
1856         (output_fp_move_double): New alternatives avoid ldd, std for
1857         stack refs that aren't aligned.
1858         (output_block_move): Use %g1 as temp reg.
1859
1860         * sparc.md (floating point load from constant mem address):
1861         Use %g1 as temp reg.  Use output_move_double in DF case, not ldd.
1862         (movsf): Asm insn typo in FPreg to FPreg case.
1863         (floatsi{s,d}f2): Constraint changed.
1864         Also new special case pattern in front of it.
1865         (fix_truncdfsi2): Use output_move_double, not ldd.
1866         (addsi3, subsi3): Use %g1 as temp reg.
1867         (cse-optimized multiply): Constraint now `g'; output generalized.
1868         (andsi3, orsi3, xorsi3): Use %g1 as temp reg.
1869
1870         * reload.c (find_reloads): Force int constants into memory just
1871         like floating ones, if memory is allowed and no regs are.
1872
1873         * expr.c (expand_call): Don't treat structure_value_addr like a parm
1874         if the first parm would be passed in a register.
1875         Also, write comments for all local vars.
1876
1877         * tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o.
1878         (LIB_SPEC): Always use crtn.o.
1879
1880 Sat Sep  3 13:05:50 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1881
1882         * explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF.
1883
1884         * combine.c (subst): Simplify zero- or sign-extend of a constant.
1885
1886         * expr.c (expand_expr): for REAL_CST, etc., check for invalid
1887         memory addresses and copy into registers.
1888
1889         * integrate.c (expand_inline_function): If incoming struct value addr
1890         is in memory, map it like a memory parameter.
1891
1892         * tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument.
1893         * integrate.c (expand_inline_function): Calc., use and save
1894         this fns value of FIRST_PARM_OFFSET.
1895         (copy_rtx_and_substitute): Use that value.
1896         * stmt.c (assign_parms): Likewise.
1897
1898         * tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode.
1899         (STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp).
1900
1901         * tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal.
1902         Avoid excess `+' before a negative offset.
1903
1904         * stmt.c (expand_function_start): Create the return value rtl
1905         before making the tail-recursion loop point.
1906
1907         * combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg
1908         rather than a wider memref.
1909
1910         * reload.c (push_reload): Extend last change to case where OUT != 0.
1911
1912 Fri Sep  2 11:43:20 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1913
1914         * stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns.
1915
1916         * expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth.
1917
1918 Thu Sep  1 16:39:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1919
1920         * reload1.c (choose_reload_targets): Test for canceled reload
1921         before looking inside reload_out.
1922
1923         * jump.c (jump_optimize): Bug in last change.
1924
1925         * m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change.
1926         * ns32k.md, i386.md: likewise.
1927
1928         * emit-rtl.c (emit_note_force): New, like emit_note but always do it.
1929         * stmt.c (expand_function_end): Use emit_note_force.
1930
1931 Wed Aug 31 11:34:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1932
1933         * reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo
1934         was spilled from.  Works with spill_stack_slot.  Callers changed.
1935         Now all pseudos spilled from one hard reg get the same slot.
1936         (reload): Initialize new variable spill_stack_slot.
1937
1938         * cse.c (cse_insn): Don't insert floating point mems if -ffloat-store.
1939
1940         * reload.c (find_equiv_reg): Allow no equivs for volatile memrefs.
1941         Also none for floating mem refs if -ffloat-store.
1942
1943         * output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned.
1944
1945 Tue Aug 30 13:47:12 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1946
1947         * jump.c (jump_optimize): Ignore other NOTEs while looking for
1948         a NOTE_INSN_FUNCTION_END.
1949
1950         * integrate.c (save_for_inline): Flush extra call to max_reg_num.
1951         Don't copy NOTEs that are NOTE_INSN_FUNCTION_END.
1952         (copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END.
1953
1954         * stmt.c (optimize_bit_field): If bit field is SRC, strip subregs
1955         from the DEST.
1956
1957         * expmed.c (expand_mult): Special case for -1 as one operand.
1958
1959 Mon Aug 29 12:14:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1960
1961         * stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN.
1962         (expand_return): Pass that arg in tail-recursive case.
1963         (other callers): Pass 0 for that arg.
1964         (expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE.
1965         (expand_null_return_1): New fn, has guts of old expand_null_return.
1966         (expand_return): Call expand_null_return_1 to pass LAST_INSN arg.
1967         (expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE.
1968         (expand_function_{start,end}): Likewise.
1969         (expand_cleanups): Fix typo in recursive-list case.
1970         (move_cleanups_up): New fn.
1971
1972         * expr.c (expand_call): Execute cleanups_of_this_call on exiting.
1973         Notice calls to __builtin_new (but don't do anything about them yet).
1974
1975         * reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...),
1976         really reload just the MEM in the MEM's own mode.
1977
1978         * sparc.md: Define patterns for insns that set the ccs.
1979         Define set-flag insns.
1980         New patterns for indexed load, and for optimizing signed bit fields.
1981         (mulsi3, umulsi3): Give "r" constraint to operand 0.
1982         Peephole optimizers recognize some cases where delay insns are safe.
1983         Changed patterns for call and return insns as well.
1984
1985         * output-sparc.c (single_insn_src_p): New fn.
1986         (output_delay_insn): New fn.
1987
1988         * tm-sparc.h (TARGET_EPILOGUE): New target flag.
1989         (NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it.
1990
1991         * m68k.md (movqi): Use *'s to ensure preferencing d-regs.
1992
1993         * c-parse.y (datadef): If traditional, no warning about no specs.
1994
1995 Sun Aug 28 14:34:33 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
1996
1997         * tm-i386.h: Define PROMOTE_PROTOTYPES.
1998         POINTER_BOUNDARY now 32.
1999
2000         * regclass.c (reg_scan): Compute `max_parallel', max # of sets and
2001         clobbers in any insn in this function.
2002         * global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN.
2003
2004         * stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops.
2005
2006         * emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero.
2007
2008         * c-decl.c (lang_decode_option): Handle -Wwrite-string.
2009         * c-parse.y (combine_strings): If that flag, make array of const char.
2010
2011         * expr.c (expand_expr): for INTEGER_CST, always use immed_double_const;
2012         never do output_constant_def (it didn't work).
2013         Also heed WORDS_BIG_ENDIAN.
2014
2015         * varasm.c (output_constant): Handle integer CONST_DOUBLEs.
2016         (output_constant_def): Abort if arg is an INTEGER_CST.
2017
2018         * emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode.
2019
2020 Sat Aug 27 12:37:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2021
2022         * c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC
2023         like local ones.
2024
2025         * integrate.c (expand_inline_function): Handle parms that were
2026         passed in registers but whose homes are on the stack.
2027
2028         * varasm.c (force_const_mem): Output ints according to spec'd mode.
2029         ({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const):
2030         Take mode as argument; pass it along.
2031
2032         * c-parse.y (read_escape): No warning for `\{' or `\['.
2033
2034 Fri Aug 26 12:23:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2035
2036         * stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust.
2037
2038         * vax.md (call_value): Handle >255 args as in `call'.
2039
2040 Thu Aug 25 16:00:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2041
2042         * jump.c (delete_jump): Don't delete the cc-setter if it has autoinc.
2043
2044 Wed Aug 24 16:33:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2045
2046         * expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET
2047         if validate_subtarget says ok.
2048
2049         * tree.c (build_index_type): make_index_type moved here and renamed.
2050
2051         * combine.c (move_deaths_2): New function.
2052         (try_distrib): Use that, not move_deaths.
2053
2054         * tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them.
2055
2056         * tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and
2057         locals to spill to the frame if any ins *or* locals are live.
2058
2059         * tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always
2060         cleared the cc's for unrecognized insns.
2061
2062         * reload1.c (reload_as_needed): Don't try to use a spill-reg
2063         in a basic block that wasn't spilled: ignore optional reloads.
2064
2065 Tue Aug 23 09:45:05 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2066
2067         * output-sparc.c (output_scc_insn): New function.
2068
2069         * expr.c (expand_builtin, alloca): Round result of alloca
2070         up to a multiple of STACK_BYTES.
2071
2072         * toplev.c (compile_file): Default main_input_filename is cc1 input.
2073
2074         * tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch.
2075
2076         * i386.md (movdi, movdf): Add `&' where needed in constraints.
2077
2078 Mon Aug 22 11:57:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2079
2080         * symout.c (symout_finish): Allocate typevector after the symout_types.
2081
2082 Sun Aug 21 16:10:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2083
2084         * tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'.
2085
2086         * expr.c (expand_expr): Typo setting MODE for MAX_EXPR.
2087
2088         * Makefile (stage*): If ln fails, copy gnulib to stage*.
2089         (realclean): Do `clean' and then some.
2090         (install): new var USER_H specifies headers to copy.
2091
2092         * c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc.
2093         on ptr vs int failed to set result_type.
2094         (build_conditional_expr): Don't replace nonzero int
2095         with null_pointer_node.
2096
2097         * combine.c (remove_links, try_distrib): New fns.
2098         (subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND.
2099         (combine_instructions): Call try_distrib.
2100         (FAKE_EXTEND_SAFE_P): Allow SUBREGs.
2101
2102         * m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF.
2103
2104 Sat Aug 20 12:04:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2105
2106         * integrate.c (copy_address): Variant of copy_rtx_and_substitute.
2107         (copy_rtx_and_substitute): Use copy_address for MEM address that
2108         doesn't satisfy memory_address_p.
2109
2110         * reload.c (find_reloads): If force_reload set, don't set WIN
2111         for a MEM even if `m', `o' or `g' in constraint.
2112
2113         * i386.md (expendqihi2): Typo in asm template.
2114
2115         * toplev.c (rest_of_compilation): Call clear_const_double_mem.
2116         * varasm.c (init_const_rtx_hash_table): Don't call it here.
2117         (immed_real_const): Don't record the rtx in the REAL_CST node.
2118         (force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0,
2119         as flag for a CONST_DOUBLE not on the chain.
2120
2121         * cccp.c (handle_directive): If traditional, do scan strings
2122         but accept unterminated ones.
2123         (collect_expansion): -traditional: Don't recognize comments in strings.
2124         Stringify arguments that appear within strings.
2125         (skip_quoted_string): -traditional: Always exit at newline.
2126         (macroexpand): -traditional: Don't put `"'s around stringified arg.
2127         (macarg): Set stringified_length accordingly.
2128
2129         * c-decl.c (duplicate_decls): Avoid error redeclaring fcn after
2130         implicit decl if -traditional.
2131
2132         * toplev.c (announce_function, report_error_function):
2133         Change communication logic between these fcns.
2134
2135         * c-decl.c (lang_decode_options): Handle -Wall here.
2136         * toplev.c (main): not here.
2137
2138         * tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h
2139
2140 Fri Aug 19 11:08:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2141
2142         * config-sun4.h: If sparc, include config-sparc.h.
2143         Never include alloca.h.
2144
2145         * tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'.
2146
2147         * c-decl.c (init_decl_processing): If traditional, use signed sizetype.
2148
2149         * gcc.c (main): Use stderr for printing version.
2150
2151 Thu Aug 18 14:42:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2152
2153         * Version 1.26 released.
2154
2155         * m68k.md (movsi): Constraint change for fpa regs.
2156
2157         * reload1.c (choose_reload_targets): Clear reg_reloaded_contents
2158         for all regs of a multi-reg group.
2159
2160         * reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size.
2161         Check properly for overlap against multiword reload regs.
2162
2163 Tue Aug 16 14:54:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2164
2165         * varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed.
2166
2167         * tm-i386.h (SFVALUE): Should be `double'.
2168         * tm-i386v.h (SFVALUE): Don't override it.
2169
2170         * tm-i386.h (ASM_OUTPUT_ASCII): Don't define it.
2171         * tm-att386.h: Definition moved here.
2172
2173         * tm-bsd386.h: New file, for Sequent.
2174         * tm-seq386.h: New file, for Sequent.
2175         * config-i386.h: New file, for Sequent.
2176
2177         * expr.c (push_block): Take account of STACK_POINTER_OFFSET.
2178         (expand_call): Therefore need not do so here.
2179
2180         * optabs.c (expand_fix): Typo if going via DImode.
2181
2182         * reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0.
2183
2184 Mon Aug 15 01:11:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2185
2186         * integrate.c (copy_for_inline): Don't try copying 0-length vector.
2187         (copy_rtx_and_substitute): Likewise.
2188
2189         * m68k.md (andsi3): use clrw instead of andw #0.
2190
2191         * print-tree.c (walk): Don't omit permanent nodes reach from temps.
2192
2193         * m68k.md (zero_extend...): Reinstall the old zero-extend insns
2194         without names, so they can help the combiner.
2195
2196         * expr.c (expand_expr): Don't use hard regs as subtargets.
2197         * combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe.
2198         * reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload.
2199
2200         * c-parse.y (redescape): Don't warn for `\('.
2201
2202         * reload.c (find_reloads_address): #if was backwards.
2203
2204 Sun Aug 14 16:52:22 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2205
2206         * c-typeck.c (shorten_compare): Change switch to chain of ifs.
2207
2208         * tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double
2209         even if it's SFmode.
2210         (FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it.
2211
2212         * cccp.c (file_buf): Rename field `free' to `free_ptr'.
2213
2214         * Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier
2215         customization.  Executables depend on LIBDEPS instead of OBSTACK1.
2216         (cccp): Deps and libs now work like the others.
2217
2218         * output-i386.c (notice_update_cc): Rewritten for clarity.
2219
2220         * tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort.
2221
2222         * recog.c (push_operand): Test for stack_pointer_rtx.
2223
2224         * integrate.c (copy_rtx_and_substitute): Don't submit push-operands
2225         to `memory_address'--it would lose on machines where pushing is
2226         a special insn, not an addressing mode.
2227
2228         * output-i386.c (top_dead_p): No more redundancy--that didn't work.
2229         Now one method if optimized, one for call_insns if noopt, one for
2230         other insns if noopt.
2231         (call_top_dead_p): fp_top_dead_p renamed
2232         and only the call-insn clause remains.
2233
2234         * i386.md (cmpsf, cmpdf): Output was backwards.
2235         (", tstsf, tstdf): Set CC_IN_80387.
2236         (incb pattern): Restrict allowable registers.
2237         (movsf, movdf): Call top_dead_p only when absolutely necessary.
2238         (call_value): Use top_dead_p, not subroutine.
2239
2240 Sat Aug 13 15:19:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2241
2242         * stupid.c (stupid_life_analysis): If only 1 reg class,
2243         call stupid_find_reg only once.
2244
2245         * stmt.c (expand_function_start):
2246         Clear current_function_pretend_args_size.
2247
2248         * expr.c (store_constructor): If target is hard reg, go via a pseudo.
2249
2250         * varasm.c (real_constant_chain): Now static in this file.
2251         (force_const_double_mem): Put R on chain if not already on.
2252         (clear_const_double_mem): Set XEXP (,2) to 0;
2253         also clear real_constant_chain and the chain links.
2254         * emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx.
2255         * cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1.
2256
2257 Fri Aug 12 11:48:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2258
2259         * reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots.
2260
2261         * global-alloc.c (find_reg): error handling REG_ALLOC_ORDER;
2262         also error skipping regs known to be hopeless.
2263         * local-alloc.c (find_free_reg): error skipping hopeless regs.
2264         * stupid.c (stupid_find_reg): likewise.
2265
2266         * local-alloc.c (qty_compare_1): typo, had q1 for q2.
2267
2268         * expr.c (expand_expr): Don't use supplied target when optimizing
2269         arithmetic using a comparison or conditional; that target could be
2270         needed for the result of the comparison.
2271
2272         * reload1.c (reload): Don't set reg_equiv_constant for hard regs.
2273
2274         * stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0.
2275
2276         * symout.c (symout_finish): Use perm. links in permanent_fwd_refs.
2277
2278         * i386.md (movhi, movqi): Check no_labels_between_p.
2279
2280 Thu Aug 11 10:44:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2281
2282         * c-parse.y (yylex): Out-of-range float is just a warning.
2283
2284         * tm-gnx-v3.h: New file for Genix.
2285         * ns32k.md (movsi, call, call_value): GNX_V3 conditionals.
2286         * tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix.
2287
2288         * ns32k.md (insv patterns): Operand 0 is read-write.
2289
2290         * i386.md (tstsf, tstdf): Don't push the arg if already in st(0).
2291
2292         * varasm.c (output_constant_def): If EXP is permanent, the rtl is too.
2293
2294         * tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size
2295         vs unrounded size.
2296         * varasm.c (assemble_variable): Pass new arg.
2297         * symout.c (symout_init): Likewise.
2298
2299         * cccp.c (rescan): Don't let char const cross lines.
2300         (skip_quoted_string, macarg1, discard_comments): Likewise.
2301
2302         * expr.c (expand_expr, VAR_DECL case): handle flag_force_addr.
2303
2304         * tm-i386v.h (TAREGT_DEFAULT): Assume 80387.
2305         * config-i386v.h (alloca): Use __builtin_alloca under GNU C.
2306
2307 Wed Aug 10 11:23:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2308
2309         * reload.c (find_reloads): Alternative loses
2310         if it has no regs for a reg operand.
2311
2312         * tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake.
2313         * tm-m68k.h: New hard regs, reg classes, reg class letters,
2314         target flag and switch, operand syntax and CC handling for fpa.
2315         * m68k.md: Add fpa insn patterns.
2316         * output-m68k.c (standard_SunFPA_constant_p): New fn.
2317         (output_move_const_{single,double}): Handle fpa regs.
2318         (singlemove_string): Handle fpa regs.
2319
2320         * stmt.c (fixup_memory_subreg): Result had wrong mode.
2321
2322         * ns32k.md (insv patterns): Adjust bit-number along with address.
2323
2324         * sparc.md (negdf2, absdf2): Order of the words was backwards.
2325
2326         * reload1.c (new_spill_reg): End confusion about meaning of 1st arg.
2327         Arg counted_for_nongroups had wrong type.
2328
2329         * tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry.
2330
2331 Tue Aug  9 07:53:59 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2332
2333         * tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit.
2334
2335         * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o.
2336
2337         * stmt.c (fixup_var_refs_1): fixup all memory subregs.
2338
2339         * reload1.c (choose_reload_targets): Don't strip paradoxical
2340         subregs from values to be reloaded.
2341
2342         * cccp.c: Comment out text after #endif.
2343
2344         * c-parse.y (init): Allow empty braces as init; warn if pedantic.
2345
2346         * c-decl.c: Move C-specific options from toplev.c.
2347         * c-tree.h: Move their externs from flags.h.
2348         * c-decl.c (lang_decode_option): New fn called by `main'.
2349         * toplev.c (sorry, really_sorry): New error reporting fns.
2350         * c-decl.c (language_string): New var, name of this language.
2351
2352         * c-parse.y: Don't include flags.h.
2353         * dbxout.c: Do include it.
2354
2355         * dbxout.c (dbxout_type): Handle function fields and static fields
2356         and basetypes.  Handle METHOD_TYPE and REFERENCE_TYPE.
2357         Abort on unexpected tree code.
2358         (dbxout_args): New fn to output prototype arg types.
2359         (everywhere): Use IDENTIFIER_LENGTH instead of strlen.
2360         (dbxout_type_name): Cleanup; avoid strlen.
2361
2362         * local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos.
2363
2364         * tree.h (TYPE_BASECLASSES): New field in type nodes.
2365
2366         * ns32k.md (insv patterns): Was adjusting the address wrong.
2367
2368         * c-decl.c (grokdeclarator): Just a warning for inline varargs fn.
2369
2370 Mon Aug  8 08:16:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2371
2372         * varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE.
2373         * expr.c (expand_expr): Use that for 64-bit int constants.
2374
2375         * loop.c (invariant_p): Don't check x->unchanging; it's not safe.
2376
2377         * c-typeck.c (build_indirect_ref): Handle flag_volatile here
2378         so that it propagates to component_refs.
2379         * expr.c (expand_expr): No need to handle it here.
2380
2381         * integrate.c (save_for_inline, expand_inline_function):
2382         Set up insn_map to record mapping of old uids to copied insns.
2383         (copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map.
2384
2385         * emit-rtl (emit_label, emit_barrier): Return what was emitted.
2386
2387         * sdbout.c (sdbout_filename): Split off from sdbout_init.
2388         * tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START):
2389         Call sdbout_filename.
2390
2391         * toplev.c: Better messages for invalid options.
2392
2393         * tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg.
2394
2395         * tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition.
2396         (ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition.
2397         (PUT_SDB_PLAIN_DEF): Prepend `~' to specified name.
2398         (SDB_GENERATE_FAKE): Prepend `~'.
2399
2400         * gcc.c: Include config.h before obstack.h.
2401
2402 Sun Aug  7 11:17:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2403
2404         * stor-layout.c (layout_decl): Do nothing with CONST_DECL.
2405         Treat FRIEND_DECLs like variables.
2406         (layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist.
2407         Handle basetypes (almost like fields).
2408         (layout_type): Handle REFERENCE_TYPE and METHOD_TYPE.
2409
2410         * tree.c (temp_tree_cons): New fn.
2411         (array_type_nelts, simple_cst_equal): New fns.
2412         (lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE.
2413         () Manage TYPE_REFERENCE_TO.
2414         (TYPE_HASH_SIZE): Bigger.
2415         (type_list_equal): Compare the TREE_PURPOSE fields.
2416         (build_reference_type, build_method_type): New fns.
2417
2418         * stmt.c (block_stack): Add field `cleanups' to each element.
2419         (expand_{start,end}_bindings, expand_decl): Update that field.
2420         (stack_block_stack): Now includes blocks that have cleanups.
2421         (goto_fixup_chain): Add field `cleanup_list_list'.
2422         (expand_goto_internal): Execute cleanups for blocks being exited.
2423         (expand_fixup): Make a fixup if any block has cleanups.
2424         (fixup_gotos): New args CLEANUPS and DONT_JUMP_IN.
2425         Execute cleanups for blocks being exited, or add to cleanup_list_list.
2426         (expand_end_bindings): New arg DONT_JUMP_IN.  Execute any cleanups.
2427         (expand_decl): New arg CLEANUP.
2428         (expand_cleanups, fixup_cleanups): New functions.
2429         * c-decl.c: Calls to expand_decl pass new arg.
2430         * c-parse.y: Calls to expand_end_bindings pass new arg.
2431
2432         * stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL.
2433
2434         * stmt.c (case_stack): Add field `has_default' to each element.
2435         (pushcase,expand_end_case): Maintain and use that field.
2436
2437         * stmt.c (pushcase): Handle RANGE_EXPR cases.
2438         (pushcase_range): Create RANGE_EXPR cases.
2439
2440         * final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END.
2441         * tm-3b1.h: Delete offending spaces.
2442
2443 Fri Aug  5 16:17:16 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2444
2445         * integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const
2446         without an intermediate temporary reg.
2447
2448         * print-tree.c (dump): Don't print an identifier's chain.
2449
2450         * toplev.c (compile_file): Treat `.i' suffix like `.co'.
2451
2452         * gcc.c: New config macro CC1_SPEC: extra switches for cc1.
2453         Make a new spec for `.i' files.
2454
2455         * c-decl.c (pushdecl, finish_decl): Delete duplicate tests.
2456
2457         * varargs.h: Maybe include va-sparc.h or va-spur.h.
2458         * va-sparc.h: New file.
2459         * va-spur.h: renamed file.
2460
2461         * tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to
2462         language-specific structures containing other info.
2463         * print-tree.c (dump): Hooks for printing the language-specific
2464         data in types and decls.
2465
2466 Thu Aug  4 08:54:30 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2467
2468         * tree.def: Add some tree codes for C++.
2469
2470         * Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c,
2471         typecheck.c -> c-typeck.c.
2472         Part of tree.c split out to c-convert.c.
2473
2474         * expr.c (push_block): No longer static.
2475         (expand_expr): Handle REFERENCE_EXPR and INIT_EXPR.
2476         (expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE.
2477         This is probably not all that is required.
2478
2479         * parse.y (yylex): Use p->rid to check for `signed' and `inline'.
2480
2481         * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo.
2482
2483         * sparc.md: Add a pattern for andcc.
2484         (cmpsf): Clobber reg 32 in DFmode.
2485         (branches): There are no unsigned floating branches; abort.
2486         (bgt): Correct name of floating variant.
2487         (mov?i): Load small constants via mov.
2488         (movdf for constants): Use mov, not add, to move regs.
2489         (movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation.
2490         (trunc*): Use mov, not or, to move regs.
2491         (negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax.
2492         (call...): Generate "call" insns; handle #-reg-parms value.
2493         * Define some peepholes for return insns.
2494
2495         * tm-sparc.h (TARGET_SUN_ASM): New target flag.
2496         (TARGET_DEFAULT): Now 1.
2497         (FRAME_POINTER_REQUIRED): Now 1.
2498         (STARTING_FRAME_OFFSET): Now -16.
2499         (LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail.
2500         (FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten.
2501
2502         * output-sparc.c (small_int): Test for int that mov can load.
2503         (singlemove_string): Use mov, not add.
2504         (output_move_double): Changes for overlap and for use of ldd, std.
2505         (output_fp_move_double): Use ldd, std when safe.
2506         (make_f0_contain_0): Simplify.
2507
2508         * integrate.c (expand_inline_function): Some special CALL_INSN
2509         handling no longer needed due to REG_FUNCTION_VALUE_P.
2510
2511         * m68k.md (movqi): Constraints allow moving areg to areg.
2512
2513 Wed Aug  3 08:29:31 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2514
2515         * Version 1.25 released.
2516
2517         * integrate.c (expand_inline_function): Don't let MEM be inline_target.
2518
2519 Tue Aug  2 09:13:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2520
2521         * integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here.
2522         (function_cannot_inline_p): Use it.
2523
2524         * rtl.h (REG_FUNCTION_VALUE_P): New macro.
2525         * stmt.c (expand_function_start): Set that flag in the return reg.
2526         * integrate.c (expand_inline_function, copy_rtx_and_substitute):
2527         Test that flag to test for the return value.
2528         * expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto.
2529         FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed.
2530
2531 Mon Aug  1 02:46:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2532
2533         * integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE,
2534         don't break out constant fcn addresses here.
2535
2536         * expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P
2537         were backwards.
2538
2539 Sun Jul 31 13:10:07 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
2540
2541         * recog.c (indirect_operand): New function.
2542
2543         * output-i386.c (print_operand): define %*. eliminate %s.
2544         (fp_top_dead_p): In nonopt case, skip stack-adjusts while looking
2545         for the insn that uses the function value.
2546
2547         * varasm.c (text_section, data_section): New functions.
2548         Replaced explicit printfs elsewhere with calls to them.
2549         * final.c (final_start_function): Use these fns.
2550         * sdbout.c (sdbout_one_type): Use text_section.
2551         * tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section.
2552
2553         * expr.c (prepare_call_address): Don't pass const via reg if no -O.
2554
2555         * tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved
2556         registers.  Fix bug counting saved registers.
2557
2558         * tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro.
2559
2560         * tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1.
2561
2562         * expr.c (expand_builtin, alloca case): Adding stack offset needs
2563         special code if TARGET is a MEM.
2564
2565         * dbxout.c (dbxout_init): Define Ltext: after the reference to it.
2566
2567         * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug;
2568         `short L%nn-L%nn' supposedly works.
2569
2570 Sat Jul 30 00:25:52 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2571
2572         * sparc.md (floatsidf2): Minor change in output.
2573         (fix_trunc{sf,df}si2): Similar.
2574
2575         * output-sparc.c (output_fp_move_double): Minor change in output.
2576
2577         * stmt.c (assign_parms): Don't count stack space for struct value
2578         address if the function does not have one.
2579
2580         * sdbout.c: Output .dim's and total size for arrays.
2581         Detect bit-fields properly.
2582         Changed handling of structure tags.
2583
2584         * reload1.c (new_spill_reg): counted_for_nongroups is a new arg;
2585         store 1 in it if this reg is needed for max_nongroups.
2586
2587         * reload1.c (choose_reload_targets): Allow inheritance of DFmode
2588         if it needs only one register.
2589
2590         * reload1.c (choose_reload_targets): Delete the death-note from the
2591         store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P.
2592
2593         * reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS.
2594         (find_reloads): Smarter handling of forcing CONST_DOUBLE into mem.
2595         Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS.
2596
2597         * reload.c (subst_indexed_address): Handle case with 2 regs
2598         and no constant term.
2599
2600         * local-alloc.c: New variable qty_n_refs, set from reg_n_refs
2601         and tested in qty_compare{,_1}.
2602         (combine_regs): Update qty_n_refs.
2603         Update qty_preferred_or_nothing more intelligently.
2604
2605         * regclass.c (regclass, reg_class_record, record_address_regs):
2606         Count the number of refs to each reg along with the costs,
2607         and use it when computing the preferred_or_nothing flag.
2608         (Can't use reg_n_refs since that is weighted by loop depth).
2609
2610         * global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P
2611         for setting no_global_alloc_regs.
2612
2613         * expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV.
2614
2615         * optabs.c (can_{fix,float}_p): Return enum insn_code, not a function.
2616         (init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab.
2617         (expand_{fix,float}): Change calls to can_{fix,float}_p.
2618         Also, use emit_unop_insn to make the actual insns.
2619
2620 Fri Jul 29 02:42:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2621
2622         * cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0,
2623         set entries for `$' to 0.
2624         Set entries to 1 rather than incrementing them.
2625
2626 Tue Jul 26 11:14:22 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2627
2628         * varasm.c (assemble_variable): Make SDB output only if top-level.
2629
2630         * local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty.
2631
2632         * output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS
2633         * tm-sequent.h: Define that flag.
2634
2635         * Makefile: add some missing deps.
2636
2637         * tm-encore.h (ASM_FILE_START): Changed to do nothing.
2638
2639         * sdbout.c (sdbout_init): Fix two dumb errors.
2640
2641         * sdbout.c (sdbout_end_epilogue): No longer takes arg.
2642         Examine current_function_decl here, not in caller.
2643         * final.c: Call changed.
2644
2645 Mon Jul 25 01:32:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2646
2647         * stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS.
2648
2649         * tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter
2650         parts of obstack.h.
2651
2652 Sun Jul 24 17:56:53 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2653
2654         * Padding for an arg may now go below or above it; new macro
2655         FUNCTION_ARG_PADDING can now choose which, or can inhibit padding.
2656         This makes for compatibility with PCC.
2657         * expr.h: Default definition of that macro.
2658         * expr.c (emit_push_insn): Put the padding above or below.
2659         (expand_call): Don't count the padding if none wanted.
2660         * stmt.c (assign_parms): Adjust parm stack addr if padded below.
2661         Don't count the padding if none wanted.
2662         * tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes.
2663
2664         * final.c (alter_subreg): Now returns the altered value
2665         (but may still modify the original structure).
2666         Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE.
2667
2668         * m68k.md (DImode push): now allows `F'.
2669         * ns32k.md (movdi): now allows `F'.
2670
2671         * tm-m68k.h (FIX_FRAME_POINTER_ADDRESS):
2672         Handle indexed references to frame pointer.
2673         * tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise.
2674
2675         * cse.c (predecide_loop_entry): Must search for the loop top label.
2676
2677 Sat Jul 23 08:53:01 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
2678
2679         * parse.y (yylex): typo in wide strings.
2680
2681         * tm-vaxv.h, config-vaxv.h: New files for sysV on vax.
2682
2683         * config-sun4.h: If sparc and not compiling with GCC, include alloca.h.
2684
2685 Fri Jul 22 02:38:02 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
2686
2687         * tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place.
2688
2689         * tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab.
2690         * final.c (final_start_function): Don't output a tab before those.
2691
2692         * sdbout.c (PUT_SDB_EPILOGUE_END): New macro.
2693         * sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN.
2694         Like former sdbout_mark_end_function.  Uses that macro.
2695         * final.c (final_end_function): Call that function.
2696         * tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB...
2697
2698         * tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL,
2699         ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels.
2700         (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT):
2701         New macros, for same reason.
2702         (FUNCTION_PROFILER): New macro, for % and also to put addr in a0.
2703
2704         * final.c (output_source_line): For fcn's first line, use lineno 1.
2705         * sdbout.c (sdbout_end_function): Clear sdb_begin_function_line
2706         so can recognize first line of next function.
2707
2708         * sdbout.c (sdbout_init): Output the .file pseudo here.
2709         * tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here.
2710
2711         * sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros.
2712         * tm-3b1.h (PUT_SDB_VAL): Likewise.
2713
2714         * regclass.c (regclass): Cast enums to int, not char.
2715         * varasm.c (record_constant): Likewise.  Avoids 3b1 PCC bug.
2716
2717         * decl.c (pushdecl): Better choice of error message for extern/static.
2718
2719         * emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM.
2720
2721 Thu Jul 21 02:13:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2722
2723         * cse.c (canon_hash): CONST_INT case failed to add to prev. value
2724         of HASH; was inconsistent with cse_insn mem address hashing.
2725
2726         * m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn.
2727
2728 Wed Jul 20 18:27:10 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2729
2730         * m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs
2731         since they are mode-dependent.
2732
2733 Tue Jul 19 13:01:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2734
2735         * parse.y (check_newline): Handle #ident by writing .ident to output.
2736         * cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals.
2737
2738         * stmt.c (expand_end_case): In compares, put constant arg second.
2739
2740         * jump.c (jump_optimize): Delete conditional jump if followed by
2741         an unconditional jump to the same place.
2742
2743 Mon Jul 18 17:49:13 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2744
2745         * emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an
2746         expression for an rtx.  It can make a MEM.  Likewise STRUCT_VALUE
2747         for outgoing structure value addresses.
2748
2749         * stmt.c (assign_parms): If incoming struct addr on stack, leave room.
2750         * expr.c (expand_call): If outgoing addr on stack, push it like an arg.
2751
2752         * PROMOTE_PROTOTYPES means if proto says `char', pass `int'.
2753         * decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this.
2754         * typecheck.c (actualparameterlist): Convert value for this.
2755         * tm-m68k.h: Define PROMOTE_PROTOTYPES.
2756
2757 Sun Jul 17 14:25:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2758
2759         * jump.c (jump_optimize): peephole can delete insns following INSN.
2760         Set NEXT after peephole.
2761
2762         * decl.c (finish_decl): Always restart perm alloc if global.
2763
2764         * stmt.c (assign_parms): When a float is passed as double, store the
2765         float in low-numbered word.  Avoids trouble with parm_map in integrate.
2766
2767         * vax.md: New pattern for decrement and compare against -1.
2768
2769 Sat Jul 16 14:18:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2770
2771         * decl.c (pushdecl): Ignore previous decl if it's really an error_mark.
2772
2773         * stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE.
2774
2775         * combine.c (subst): In the simplification for
2776         (set (zero_extract ...) (and/or/xor (zero_extract ...) const)),
2777         require same memory location in both extracts.
2778
2779         * *386*: New files.
2780
2781         * cse.c (fold_rtx): Save time in memory address if it didn't change.
2782         Don't replace cheaper expression with coslier one.
2783         (cse_insn): Reenable generation of REG_WAS_0.  It wasn't obsolete.
2784
2785         * cccp.c: `ident' has 5 letters.
2786
2787         * final.c (output_source_line): SDB can't handle multiple source
2788         files, so ignore line-NOTEs for other files.
2789
2790         * hard-reg-set.h: New var reg_class_size (# regs in the class).
2791         * regclass.c (init_reg_class): Set it up.
2792
2793         * reload.c (find_reloads): If an earlyclobber is in a class of size 1
2794         as an output, reload it as input instead of as output.
2795
2796         * reload1.c (choose_reload_targets): Improve elimimation of spilled
2797         pseudos made dead by reloading: if pseudo is limited to one block
2798         and that block contains just stores, delete all the stores.
2799
2800         * reload1.c (choose_reload_targets): reg_has_output_reload is now
2801         static and survives through reload pass.
2802         (forget_old_reloads): Don't cancel data on spilled regs of output
2803         reloads of the insn just made.
2804
2805         * sdbout.c (sdbout_one_type): Go to .text before defining a type.
2806         (sdbout_block): Test against do_block was backwards.
2807
2808         * stmt.c (expand_end_function): New args to make a NOTE for last line.
2809         * decl.c (finish_function): Pass the args.
2810
2811         * rtl.c (no_labels_between): New function.
2812         * vax.md (movsi): Call it.
2813
2814         * print-tree.c (dump): Don't follow chain of a decl.
2815
2816         * rtl.c (volatile_refs_p): Moved from flow.c.
2817
2818 Fri Jul 15 13:36:20 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
2819
2820         * sdbout.c (PUT_SDB...): Allow config to override any of them.
2821         * sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros.
2822         * tm-3b1.h: Override all of them.
2823         * sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name.
2824         (gen_fake_label): Use SDB_GENERATE_FAKE.
2825         * tm-3b1.h: Override its defn.
2826
2827         * sdbout.c (sdbout_mark_function_end): Unused; deleted.
2828
2829         * tm-3b1.h: Define SDB_DEBUGGING_INFO.
2830
2831 Thu Jul 14 01:55:15 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
2832
2833         * config-sunv4.h: New file for Sunos version 4.
2834
2835         * tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending.
2836
2837 Tue Jul 12 15:31:30 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2838
2839         * stmt.c (expand_fixup, expand_goto_internal): New functions to
2840         emit a jump that can restore the stack level, even without tree node.
2841         (expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal.
2842         (expand_end_function): Do fixup_gotos after emitting return_label.
2843
2844         * cse.c (predecide_loop_entry): Avoid using JUMP_LABEL.
2845         * flow.c (find_basic_blocks): Avoid using JUMP_LABEL.
2846
2847         * flow.c (insn_dead_p): Delete special case for stack-adjust insns.
2848         (life_analysis): Mark those insns with INSN_VOLATILE here.
2849         (mark_used_regs): a SET of a hard reg, in a volatile insn,
2850         always makes its source live.
2851
2852 Mon Jul 11 10:46:26 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2853
2854         * ns32k.md (floatqidf2): Commented out since assemblers warn about it.
2855
2856 Sun Jul 10 11:49:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2857
2858         * decl.c (xref_tag): Default the TYPE_MODE of enum xrefs
2859         to avoid making MEM and REG with VOIDmode.
2860
2861         * vax.md (call): If > 255 args, pop them explicitly.
2862
2863 Sat Jul  9 10:53:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2864
2865         * symout.c (symout_types): Fix up forward refs to previously
2866         undefined structure types.
2867         (filter_undefined_types): New function.
2868         (symout_finish, symout_function_end): Output any never-defined structs.
2869         * toplev.c (rest_of_compilation): call symout_function_end.
2870
2871         * parse.y: Don't declare errno if it's a macro.
2872
2873         * tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0.
2874
2875         * typecheck.c (truthvalue_conversion): Flush unnec recursive call.
2876         (build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL.
2877
2878         * cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero.
2879         * fold-const.c (fold): ADDR_EXPR is not equal to zero.
2880
2881         * cccp.c (macroexpand): Disable the macro even if traditional.
2882         (rescan): Error if use a disabled macro.
2883
2884         * combine.c (try_combine): Don't substitute a different reg into
2885         an auto-increment.  Handle multiple REG_INC notes in I1 or I2.
2886
2887         * decl.c (implicitly_declare): Don't reuse old implicit decl.
2888
2889         * varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB.
2890         * final.c (output_source_line): likewise.
2891
2892         * fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation,
2893         convert result to original type.
2894
2895         * regclass.c (reg_class_record): Changed arguments include address
2896         of entire vector of constraints.
2897
2898 Fri Jul  8 07:59:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2899
2900         * reload1.c (reload): Find groups of more than 2 registers.
2901
2902 Thu Jul  7 08:33:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2903
2904         * expr.c (emit_push_insn): Typo adjusting arg for bcopy
2905         if not STACK_GROWS_DOWNWARD.
2906
2907         * gnulib.c (_cmpsf2): Value is int, not SFVALUE.
2908
2909 Wed Jul  6 11:53:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2910
2911         * tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file.
2912
2913         * *m88*: New files for Motorola 88000.  They don't really work.
2914
2915 Tue Jul  5 14:40:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2916
2917         * local-alloc.c (combine_regs): Don't tie a reg to itself.
2918
2919         * finxincludes: Make a variable LIB for the target dir.
2920
2921         * m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns.
2922
2923         * expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP
2924         in several places, to keep stack predictable.
2925
2926 Mon Jul  4 09:50:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2927
2928         * integrate.c (function_cannot_inline_p): Increase threshold size.
2929
2930         * flags.h (use_gdb_dbx_extensions): New variable.
2931         * toplev.c:
2932
2933         * sdbout.c (PUT_SDB_TAG): Delete duplicate defn.
2934
2935         * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char,
2936         REALLY go via signed int.
2937
2938         * loop.c (may_trap_p): Was detecting floating arithmetic incorrectly.
2939
2940         * tm-news800.h (CPP_PREDEFINES): Add sony and sony_news.
2941
2942         * parse.y (check_newline): Avoid infinite loop at eof.
2943
2944 Sat Jul  2 10:35:17 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2945
2946         * Version 1.24 released.
2947
2948         * stmt.c (expand_asm_operands): Produce proper no-outputs insn.
2949         * recog.c (asm_noperands): Detect no-outputs insns.
2950         (decode_asm_operands): Likewise.
2951         * reload.c (find_reloads): Likewise (add case ASM_OPERANDS:).
2952
2953         * local-alloc.c (block_alloc): Tests of qty_compare were backwards.
2954
2955         * flow.c (life_analysis): Turn off code that finds regs live at
2956         function start and marks them not local to any basic block.
2957
2958         * cse.c (insert_regs): Fix typo (UNITS_PER_WORD).
2959
2960         * cccp.c: Define max.
2961
2962         * expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs,
2963         if not optimizing.
2964         * stmt.c (expand_function_end): Mark each of those regs live
2965         at the end and also retroactively at the beginning of the function.
2966
2967         * output-vax.c (print_operand_address): New function from old macro.
2968         * tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function.
2969
2970         * config-vms.h: If not under GNU C, define X_OK, etc.
2971
2972         * expr.c (move_by_pieces_1): Use * to call GENFUN.
2973         (expand_expr): Compare DECL_FUNCTION_CODE against an enum const.
2974         (preexpand_calls): Likewise.
2975         * genrecog.c (write_tree): Likewise.
2976         * final.c (final): Use * to call the output function.
2977         * reload.c (push_reload): Rename `noshare' to `dont_share'.
2978
2979         * genoutput.c (output_epilogue): Put more newlines in insn_outfun.
2980         * genemit (gen_exp): Put in more newlines.
2981
2982 Fri Jul  1 00:23:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2983
2984         * global-alloc.c (allocno_compare): Avoid comparisons of floats
2985         since that is sensitive to roundoff errors.
2986
2987 Thu Jun 30 09:25:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
2988
2989         * sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF.
2990         (PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF
2991         (sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'.
2992
2993         * tree.c (allocation_temporary_p): New fcn.
2994         (all_types_permanent): New variable.
2995         (make_node): If that's set, make each ...TYPE node permanent.
2996         * decl.c (grokdeclarator): If traditional, make decl data permanent.
2997         (finish_decl): Make the rtl permanent too.
2998         * stor-layout.c (layout_type): If type is permanent,
2999         make its layout data permanent too.
3000
3001         * cccp.c: Choose C++ or C at run time via var `cplusplus'.
3002         Separate cplusplus_include_default from include_default.
3003         Get GNU-specific include directory names from macros
3004         GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR.
3005         (main): Initialize based on CPLUSPLUS; `-+' sets it.
3006         * Makefile: Set *_INCLUDE_DIR based on $(libdir).
3007
3008 Tue Jun 28 09:25:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3009
3010         * tree.c (copy_node): Round LENGTH up to multiple of sizeof (int).
3011
3012         * expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined.
3013
3014         * sparc.md (floatsisf2): Insert missing brace.
3015         (mulsi3): Replace reg_o0_rtx, reg_o1_rtx.
3016
3017         * tm-sparc.h: Define DBX_DEBUGGING_INFO.
3018
3019         * parse.y (yylex): If traditional, no error for out-of-range float.
3020
3021         * Makefile: Comment saying how to compile on an Apollo.
3022
3023         * tm-sparc.h (ASM_FILE_START): Switch to new calling convention.
3024
3025         * decl.c (init_decl_processing): Create type nodes for 64-bit ints.
3026         (grokdeclarator): use them for `long long'.  Warn only if pedantic.
3027
3028         * optabs.c (init_optabs): Add missing DImode insn names.
3029
3030         * expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro.
3031
3032         * expr.c (convert_move): use extendsidi if appropriate.
3033
3034         * cccp.c (initialize_builtins): Don't install __STDC__ if traditional.
3035         (main): Call initialize_builtins after option processing.
3036
3037         * integrate.c (output_inline_function): Set current_function_decl.
3038
3039         * cse.c (fold_rtx): Typo in avoiding 32-bit shifts.
3040
3041         * cccp.c: Add forward-decl.
3042
3043 Mon Jun 27 18:06:42 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3044
3045         * hard-reg-set.h (reg_alloc_order): New variable
3046         based on REG_ALLOC_ORDER, a new machine-description macro.
3047         * regclass.c (reg_alloc_order): Define it.
3048         * local-alloc.c (find_free_reg): Handle reg_alloc_order.
3049         * global-alloc.c (find_reg): Likewise.
3050         * stupid.c (stupid_find_reg): Likewise.
3051
3052 Sun Jun 26 10:47:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3053
3054         * Version 1.23 released.
3055
3056         * tm-3b1.h: Define IDENT_DIRECTIVE.
3057
3058         * tm-encore.h: Define SDB_DEBUGGING_INFO.
3059         Define SCCS_DIRECTIVE and IDENT_DIRECTIVE.
3060
3061         * output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns.
3062
3063         * tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l.
3064         (CPP_PREDEFINES): No -Dns32032.
3065
3066         * sdbout.c: Include syms.h, not storclass.h.
3067         (unnamed_struct_member): Decl was missing.
3068         (PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos.
3069         (sdbout_types, sdbout_one_type, sdbout_parms): Fix typos.
3070
3071         * Makefile: Add file sdbout.o.
3072         Changed comments pertaining to sysV.
3073         Make a separate target `doc' to make the info files.
3074
3075         * m68k.md (bit-field insns): Use nonimmediate_operand for the thing
3076         to extract from.
3077         * vax.md (QImode bit-field insns): Likewise.
3078
3079         * recog.c (nonimmediate_operand): Accept any nonconst general operand.
3080
3081 Sat Jun 25 07:54:42 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3082
3083         * cse.c (lookup_as_function): arg to exp_equiv_p was missing.
3084
3085 Fri Jun 24 09:14:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3086
3087         * recog.c (memory_operand): Allow (subreg (mem...)).
3088
3089 Thu Jun 23 07:34:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3090
3091         * decl.c (finish_enum): Compute minimum value like maximum.
3092         If minimum is negative, install it in the type and make it signed.
3093
3094         * stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum.
3095         (layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if
3096         any member is BLKmode.  This is to prevent putting it in a register.
3097         (layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode.
3098
3099         * local-alloc.c (find_free_reg): Never allocate the frame pointer reg.
3100
3101         * tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE.
3102         * tm-encore.h: Likewise.
3103
3104         * flow.c (flow_analysis): Bug in n_basic_blocks error check.
3105
3106         * stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous.
3107
3108 Tue Jun 21 08:34:24 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3109
3110         * reload.c (find_reloads_address): Write back *loc even if
3111         subst_reg_equivs makes no change, in case subst_index_address did.
3112
3113         * flow.c: Define macros for -1 and -2 as values of reg_basic_block.
3114         (mark_used_regs): Add an `else'; no change in behavior.
3115         (mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL.
3116         (find_basic_blocks): Extra error check.
3117
3118         * output-ns32k.c (print_operand_address): Changes in handling of
3119         register-indirect, and of indexing by sb register.
3120
3121 Mon Jun 20 04:55:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3122
3123         * cccp.c (collect_definition): Compute needed space more accurately.
3124         Abort if use more space than was allocated.
3125         (rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive.
3126
3127         * genflags.c (gen_insn): Put parens around defns of HAVE_... macros.
3128
3129 Sun Jun 19 02:52:53 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3130
3131         * expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating
3132         for size of a pushed arg to bcopy.
3133
3134 Sat Jun 18 07:20:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3135
3136         * New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c.
3137
3138         * final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END.
3139         * tm-3b1.h: Define ASM_OUTPUT_CASE_END.
3140         (PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol
3141         `LDnnn' whose def. is output by ASM_OUTPUT_CASE_END.
3142         (ASM_OUTPUT_CASE_LABEL): Add missing newline.
3143
3144         * reload.c (find_equiv_reg): Reject a MEM containing an autoincrement.
3145
3146 Fri Jun 17 06:58:37 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3147
3148         * genpeep.c (main): Write `extern' in the decl for `peep_operand'.
3149
3150         * flow.c (propagate_block): When a dead insn has a REG_RETVAL note,
3151         call mark_set_regs anyway, so that `significant' is updated.
3152
3153         * jump.c (follow_jumps): New arg IGNORE_LOOPS.  If 0, don't follow
3154         the insn at the beginning of a loop that enters the loop; this avoids
3155         interference with loop optimizer.
3156         (jump_optimize, tension_vector_labels): Pass that arg.
3157
3158         * loop.c (loop_optimize): Mention invalid multiple-entry loops in log.
3159
3160         * m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints.
3161
3162 Thu Jun 16 03:06:48 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
3163
3164         * genrecog.c (change_state): Was mishandling printing XVECEXP indices 
3165         greater than 9.
3166
3167         * combine.c (subst, simplify_and_const_int): Avoid making SUBREG
3168         of a non-REG.
3169
3170         * expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char,
3171         go via signed int.
3172
3173         * optabs.c (expand_fix): Copy hard_libcall_value reg only once.
3174
3175         * reload1.c (order_regs_for_reload): Init all elements
3176         of  potential_reload_regs to -1.
3177
3178         * Prevent generation of (set (reg) (plus ... (label_ref ...))).
3179         * explow.c (memory_address_noforce): Like `memory_address' but
3180         never force it into a register.
3181         * expr.c (do_tablejump): Use that.
3182         * m68k.md (casesi): Use that.
3183
3184         * rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG,
3185         define the `code' field as a short.
3186
3187 Wed Jun 15 01:25:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3188
3189         * gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp.
3190         * tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on
3191         appropriate conditions.
3192
3193         * combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)).
3194
3195 Mon Jun 13 02:22:43 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
3196
3197         * typecheck.c (build_array_ref): Avoid duplicate errmsg if index
3198         is an error-mark.
3199
3200 Sun Jun 12 23:04:39 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
3201
3202         * cccp.c (handle_directive): If -traditional, quotes aren't special.
3203         (rescan): Assume newline ends a string constant.
3204
3205         * cccp.c, cexp.y: Make all fcns non-static; add some forward decls.
3206
3207         * various: add static forward-decls for various functions.
3208
3209 Fri Jun 10 00:25:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3210
3211         * reload1.c (choose_reload_targets): When writing back an incremented
3212         value (handling reload_inc), write back to the real place, not to
3213         OLDEQUIV (a register that holds the same value).
3214
3215         * tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target.
3216         This can cause the use of multiple insns with same output reg,
3217         which can confuse cse.
3218
3219         * loop.c (consec_sets_invariant_p):
3220         If invariant_p ever returns 2, we return 2.
3221         New arg is # of consecutive sets to look for,
3222         since this info is no longer in n_times_set at move_movables.
3223         (scan_loop): If consec_sets_invariant_p returns 2, set m->cond.
3224         (move_movables): check consecutive insns if m->consec && m->cond.
3225
3226         * tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg,
3227         the FUNCTION_DECL node.
3228         * varasm.c (assemble_function): Pass this arg.
3229
3230         * expr.c (expand_call, expand_builtin [alloca]):
3231         If STACK_POINTER_OFFSET is defined, add it to stack pointer contents
3232         before using it as address of actual data on the stack.
3233         * stmt.c (expand_decl): Likewise.
3234
3235         * stmt.c (assign_parms): If 1st parm named `__builtin_va_alist'
3236         came in regs, pretend it came on stack.
3237         Handle pretending a BLKmode var came on the stack.
3238         If REG_PARM_STACK_SLOT, count stack space for each parm
3239         even if the parm came in a register; and use that stack space
3240         if the parm needs to be addressable or is BLKmode.
3241         Rearrange to simplify conditionals.
3242
3243 Thu Jun  9 01:21:29 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3244
3245         * local-alloc.c:
3246         `qty_...' vectors' elements for hard-reg-numbers now aren't used.
3247         `reg_qty' elements for hard-reg numbers now aren't used,
3248         and the element for a pseudo is never a hard-reg number.
3249         (local_alloc): No need to reset those elements.
3250         No need to reset elements out of range of prev block's NEXT_QTY.
3251         (reg_is_born, reg_is_set, wipe_dead_reg):
3252         Divide labor in same way for hard regs and pseudos;
3253         simplify using fact that locality-to-basic-block has been precomputed
3254         and recorded in reg_qty; avoid refs to reg_qty[HARDREG].
3255         (reg_is_born, wipe_dead_regs): Block-number arg no longer needed.
3256
3257         * local-alloc.c (combine_regs): Remove old code for tying hard regs
3258         to pseudos; great simplification results.
3259         Use find_regno_note, not regno_dead_p.
3260
3261 Wed Jun  8 00:18:04 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3262
3263         * reload.c (subst_reg_equivs): Set a flag if anything is changed.
3264         (find_reloads_address): Check that flag to avoid extra work.
3265         Also check early for safe reg+const address and avoid work.
3266
3267         * reload.c (find_reloads): Use loops instead of bcopy.
3268         Check early for insn with no real constraints, and return.
3269         Also check for move from hard reg to hard reg and return.
3270
3271         * cse.c (canon_reg): Rewrite for speed; use a switch.
3272         (cse_insn): Don't call find_reg_note if REG_NOTES is 0.
3273
3274         * cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV.
3275         Inhibition was needed when the SET_SRC was the only place to find the
3276         equivalent value; now it is in the REG_EQUIV note.
3277
3278         * stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts.
3279         * regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0.
3280
3281 Tue Jun  7 03:51:28 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3282
3283         * stmt.c (assign_stack_local): If big-endian and MODE is narrow,
3284         the bytes actually used are the least significant.
3285
3286         * parse.y (skip_white_space): Accept char as arg; let caller read it.
3287         (yylex): Change call.
3288         (check_newline): Return 1st nonwhite char after skipping lines.
3289         (skip_white_space): Change call.
3290         * toplev.c (compile_file): Change call.
3291
3292         * gcc.c: Pass -traditional to cc1.
3293
3294         * cse.c (cse_insn): Return very early for (set (reg) (call...)).
3295         Mainly to save time.
3296         (cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing.
3297
3298         * expr.c (clear_pending_stack_adjust): Really do clear it,
3299         if current fcn doesn't want to be inline.
3300
3301         * cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash
3302         or HASHREG.
3303
3304 Mon Jun  6 21:47:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3305
3306         * jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast.
3307
3308         * cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the
3309         equivalent value is the same as the SET_SRC of the insn.
3310
3311         * flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN;
3312         just assume value is 1.
3313         (propagate_block): Don't call mark_{used,set}_regs for a stack-pop
3314         since if it isn't dead it has no effect on any useful life data.
3315         (mark_set_1): Return quickly if setting stack-ptr, and almost as
3316         quickly if setting any hard reg.
3317         (mark_used_regs): Likewise for refs.
3318         Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC.
3319         (volatile_refs_p): Likewise.
3320
3321         * varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR
3322         in integer case (they were for casting a pointer).
3323
3324         * parse.y (compstmt_or_error): Parse a compstmt after ignoring error.
3325         Use this for fctn body so that an error after store_parm_decls
3326         won't recover to xdecls and call store_parm_decls again.
3327         Typical cause was missing semi at end of last parmdecl.
3328
3329         * parse.y: Add missing semicolons in actions.
3330         (yylex): Don't use yylloc.
3331
3332 Sun Jun  5 16:14:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3333
3334         * typecheck.c (build_array_ref): Check arg types here, to make
3335         error message more accurate (not about "addition").
3336
3337 Thu Jun  2 02:41:40 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)
3338
3339         * cccp.c (collect_expansion): `#' isn't special if -traditional.
3340
3341         * dbxout.c (dbxout_parms): Don't output a regparm symbol
3342         unless the parm got a hard reg assigned.
3343
3344         * tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d...
3345
3346         * tm-vax.h (CHECK_FLOAT_VALUE): Define this.
3347
3348 Wed Jun  1 17:13:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3349
3350         * expr.c (expand_call): Have sequence points between args.
3351
3352 Tue May 31 00:27:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3353
3354         * expmed.c (store_fixed_bit_field): Avoid shifting by 32.
3355         * cse.c (fold_rtx):
3356         * symout.c (subrange_p):  likewise.
3357
3358         * local-alloc.c (block_alloc): If operands 1 and 2 commute,
3359         try tying output to operand 2 if operand 1 won't do.
3360
3361         * toplev.c (compile_file): Pass main_input_file to symout_init.
3362
3363         * tree.c (build_real, build_real_from_int_cst):
3364         Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values.
3365
3366         * tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE.
3367         * parse.y (yylex): Pass this arg; requires parsing suffixes first.
3368         * fold-const.c (fold, combine, fold_convert): Pass this arg.
3369         Handling of float binops in `combine' simplified.
3370
3371         * tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it.
3372
3373         * final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE
3374         be used for SDB also.
3375
3376 Mon May 30 00:21:15 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3377
3378         * cse.c (insert): Was inserting in wrong place in list.
3379         (exp_equiv_p): Was failing to check validity when x == y.
3380
3381         * tree.c (build_pointer_type): Handle saveable_obstack
3382         like current_obstack.
3383
3384         * decl.c (finish_decl): Error in test for zero-size array warning.
3385
3386         * reload.c (find_equiv_reg): New arg MODE specifies mode in which
3387         an equivalent value is needed.  Equivalence must be good in that mode.
3388         In addition, notice overlap with multiword register modes.
3389         Simplify, knowing that registers have already been renumbered.
3390         It was invalidating memory-goals too easily; setting a reg
3391         only invalidates memory-goal if its address varies.
3392         * reload.c, reload1.c, jump.c: Calls pass the new argument.
3393
3394         * cccp.c: For correct ANSI, must reject `$' in identifiers.
3395         (dollars_in_ident): Variable says whether to allow them.
3396         (rescan): Handle `$' as randomchar if that's 0.
3397         (main): dollars_in_ident is set to 0 by -$, to 1 by -traditional.
3398         (rescan, do_define): Delete former pedantic warnings for `$'.
3399         (initialize_char_syntax, initialize_builtins): Inits split to two
3400         functions; former is called after options are scanned
3401         so `$' is in is_idchar conditionally.
3402         * gcc.c: For -ansi, pass -$ to cccp.
3403         * toplev.c, flags.h: Define dollars_in_ident.
3404         * parse.y (yylex): Treat $ as punctuation unless dollars_in_ident.
3405         Delete old pedantic warning about $.
3406         * tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1.
3407
3408         * cccp.c (rescan): Preprocessing numbers can have signs, after `e'.
3409
3410         * integrate.c (expand_inline_function): Abort, don't return failure,
3411         if max_regno is too low.  I believe this can't happen.
3412
3413         * typecheck.c (build_binary_op_nodefault):
3414         For ordered comparisons, no pedantic warning about void *.
3415         For MAX, MIN, ditto, and also don't allow pointer vs 0.
3416
3417         * typecheck.c (build_unary_op): Don't allow pointer for +.
3418
3419         * typecheck.c (convert_for_assignment): 
3420         Add missing warning for case of unrelated pointer types.
3421         Change criteria for new ANSI C draft.
3422
3423         * optabs.c (expand_binop): Don't set unused target_is_not_an_operand.
3424
3425         * fold-const.c (fold_convert): Don't set unused inprec, outprec.
3426
3427         * emit-rtl.c, parse.y: Delete unused var.
3428
3429         * stor-layout.c (add_vc_sizes): Unused function deleted.
3430         * loop.c (constant_high_bytes): #if 0 this unused function.
3431
3432         * gcc.c (fatal): Add missing arg to delete_temp_files.
3433
3434         * cccp.c (dump_defn_1): Add missing arg to skip_quoted_string.
3435
3436         * reload.c (find_reloads): If constraints don't fit in an `asm',
3437         print error instead of aborting.
3438
3439         * regclass.c (reg_class_record): Ignore `&' in constraint.
3440
3441 Sun May 29 00:20:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3442
3443         * Makefile: Run ranlib only if /usr/bin/ranlib exists.
3444         Add comment saying what to do on system V.
3445
3446         * tree.c (suspend_momentary): Switch to the saveable_obstack
3447         for the sake of inline functions.
3448
3449         * flags.h (enum debugger): New enum for write_symbols.
3450         * toplev.c, varasm.c, final.c: Use the enum constants where appro.
3451         Add calls to sdbout paralleling the calls to dbxout;
3452         put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO.
3453
3454         * toplev.c (main): Delete -noreg option; it's now the default.
3455         Make -O an alias for -opt.  Rename -g to -gg.  -g is alias for -G.
3456         Accept and ignore -Wtrigraphs.
3457         * gcc.c: Simplify the specs.
3458
3459         * toplev.c (compile_file), tm-*.h:
3460         ASM_FILE_START is now a statement, not just a string to be output.
3461         Output it *after* determining the real source file name.
3462
3463         * fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive).
3464         To simplify this, canonicalize relationals to put constat last.
3465
3466         * decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl.
3467
3468         * cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch.
3469
3470         * tm-att386.h: New file.
3471
3472         * decl.c (pushdecl): Warn if a local `extern' decl precedes
3473         a file-scope `static' decl.
3474
3475         * expr.c (expand_call): No warning for failure to inline.
3476
3477         * expmed.c (extract_bit_field): copy operand 1 of extv or extzv
3478         into register if memory isn't allowed.
3479
3480 Sat May 28 02:10:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
3481
3482         * gnulib.c, Makefile: Delete va_end.
3483
3484         * final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT.
3485
3486         * genemit.c (gen_expand): Notice a CALL inside a PARALLEL.
3487
3488         * regclass.c (init_reg_sets_1): Part of init_reg_set is put in this
3489         new fn which is called after options are scanned.
3490         Now CONDITIONAL_REGISTER_USAGE can depend on the options.
3491         (fix_register): Just alter the data that init_reg_sets_1 will look at.
3492
3493         * reload1.c (reload): Don't complain if two different but tieable
3494         modes require groups of the same regclass (assuming same size group).
3495
3496         * cccp.c: Add 3rd arg to all `open' calls.
3497
3498         * parse.y (check_newline): Typo prevented ignoring whitespace.
3499
3500         * cccp.c (perror_with_name): fprintf had harmful extra arg.
3501
3502         * cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs.
3503
3504         * emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN
3505         of something that doesn't have one.
3506
3507         * reload1.c (alter_frame_pointer_addresses): frame pointer can
3508         occur by itself, not just inside a PLUS.
3509         (reload): Call eliminate_frame_pointer before reload_as_needed.
3510         Otherwise the latter can make reload insns that copy the frame ptr
3511         to a data reg, but 68k can't copy sp+const to a data reg.
3512
3513         * decl.c (implicitly_declare): Always save the implicit decl
3514         permanently.  Reuse an old one if it exists.
3515         * tree.c (resume_temporary_allocation): Used after `end_temporary...'
3516         to go back to temporary allocation.
3517
3518         * stor-layout (layout_{type,decl}): Call variable_size.
3519         (variable_size): Turn a size into a SAVE_EXPR and either compute
3520         it right away or put it on a list to be computed later.
3521         (get_pending_sizes): Return that list and clear it out.
3522         * stmt.c (expand_start_function): Tell `variable_size' to compute
3523         sizes right away, and compute those saved on the list.
3524         (expand_end_function): Tell it to put them on a list.
3525
3526 Fri May 27 00:02:34 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3527
3528         * dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'.
3529
3530         * gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it.
3531
3532         * Makefile, gcc.c: Propagate Make var `libdir' to gcc search path.
3533
3534         * expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of
3535         `a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error.
3536
3537         * flow.c (insn_dead_p): insn that makes stack bigger is never dead.
3538         * combine.c (try_combine): Don't splice out stores into stack ptr.
3539
3540         * reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P.
3541
3542         * varasm.c (assemble_variable): Use saveable_obstack for allocation.
3543
3544 Thu May 26 01:17:00 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3545
3546         * integrate.c (save_for_inline): Clear unused slots in parmdecl_map.
3547         (There may be some non-parm regs below max_parm_regno.)
3548         * integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0.
3549
3550         * Don't fail to output a static inline function that was referenced
3551         via a local extern decl before its definition.
3552         * expr.c (expand_call): If need to mark a fcn decl addressable,
3553         mark the identifier addressable also.
3554         * typecheck.c (mark_addressable): If marking fcn addressable,
3555         mark the identifier as well.
3556         * decl.c (start_function): If identifier was marked addressable,
3557         propagate it to the function.
3558
3559         * parse.y (yylex): Check for ERANGE after atof is called.
3560         (Sun doesn't report ERANGE.)
3561
3562         * loop.c (may_trap_p): Any floating arithmetic may trap.
3563
3564 Wed May 25 00:03:34 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3565
3566         * parse.y: Delete `noalias'.
3567         (asm_operand): Don't allow this to be empty.
3568         (asm_operands): Do allow this to be empty.
3569
3570         * reload.c (operands_match_p): Don't let REG and SUBREG match
3571         if the reg isn't a hard reg.
3572         No longer nec. to check reg_renumber, now that reload
3573         substitutes the hard regno.
3574
3575         * reload1.c (reload): Counting existing spilled groups,
3576         check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair.
3577         Spill entire need for new groups before spilling any solitary regs.
3578         Reg already counted against max_nongroups can't become part of a group.
3579         (new_spill_reg): Do bookkeeping associated with a new spill-reg.
3580         (n_spills): This var is now static, no longer passed as arg
3581         within the file.
3582
3583         (reload_reg_class_lower): Handle all group-reloads before solitaries.
3584         (choose_reload_targets): therefore #if 0 the special code for
3585         finding solitary registers that aren't suitable for groups.
3586         But fix two bugs in it: braino deciding whether a reload
3587         is looking for 1 register (not a group).  Use CLASS_MAX_NREGS.
3588         Also braino deciding whether a spill reg can be in a group.
3589         Did not fix bug that it fails to test HARD_REGNO_MODE_OK,
3590         so it might split up an even-odd pair.
3591
3592         * vax.md: Special patterns for 8 and 16-bit fields, to make
3593         move-insns (like the ones for the 68k).
3594
3595         * tree.c (convert_to_integer): Pass truncation down thru COND_EXPR
3596         as through a binary operator.
3597
3598         * typecheck.c (build_cond_expr): If unpromoted operand types match,
3599         don't promote them--let containing expression promote (just once).
3600
3601 Tue May 24 14:46:26 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3602
3603         * combine.c (subst): Simplify (subreg (sign_extend X) 0).
3604
3605         * tm-hp9k320.h: Delete NO_DBX_FORMAT.
3606         * Most tm...h files: Define DBX_DEBUGGING_INFO.
3607         * dbxout.c: Change conditional to DBX_DEBUGGING_INFO.
3608
3609         * integrate.c (expand_inline_function): If inline fcn was declared to
3610         return QI, but actually computes an SI, use SImode for INLINE_TARGET
3611         but actually return a QI.
3612
3613         * varasm.c (force_const_mem): Failed to determine alignment bdry
3614         from machine mode.
3615
3616         * jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a
3617         PRESERVE_DEATH_INFO_REGNO_P register.
3618
3619         * final.c (output_addr_const): In PLUS, output constant term last.
3620
3621         * final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN.
3622
3623         * final.c (next_block_index): No longer static.
3624         (final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs
3625         for beginning and end of a block.
3626         (output_source_line): Add SDB_DEBUGGING_INFO case for line number.
3627         * varasm.c (assemble_function): Add code for SDB symbol output.
3628
3629         * gnulib.c: Allow config to override INTIFY.
3630         New macro SFVALUE for data type to return a single-float in.
3631
3632         * combine.c (remove_death): No longer `static'.
3633
3634         * reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P
3635         selects hard regs for which death info should be updated for final.
3636
3637         * reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P
3638         prevent inheritance of certain reloads.
3639
3640         * reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject
3641         an equiv reg.  Needed for funny float regs on 80387.
3642
3643         * cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE.
3644         Warn if pedantic.
3645         (do_sccs): Warn if pedantic.
3646
3647         * emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates.
3648
3649 Sun May 22 12:25:06 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3650
3651         * Version 1.22 released.
3652
3653         * reload1.c (reload): Spilling isn't finished till max_nongroups is 0.
3654
3655         * tm-encore.h (PRINT_OPERAND): No `$' before a CONST.
3656
3657 Sat May 21 13:08:54 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3658
3659         * fold-const.c (combine): Typo in MIN_EXPR, MAX_EXPR.
3660
3661         * reload1.c (reload): Was counting insn_groups as total size of groups,
3662         not number of groups.
3663         A new spilled group counts against group-needs of superclasses.
3664
3665         * parse.y (parmlist{,_or_identifiers}_1): In error case,
3666         return a tree list just as in the other cases.
3667
3668 Fri May 20 02:14:51 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3669
3670         * config-vax.h, config-m68k.h: If __GNUC__, use builtin-alloca.
3671
3672         * genpeep.c (match_rtx): Generated code was testing the wrong rtx
3673         when testing an int or string at a nonzero index in the rtx.
3674
3675         * reload.c (find_reloads): Typo checking `modified' for conflict
3676         with an earlyclobber.
3677
3678         * reload.c (find_equiv_reg): Reject stack ptr as return value.
3679
3680         * expr.c (expand_builtin): Alloca must do pending stack adjust.
3681
3682 Thu May 19 13:01:01 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3683
3684         * flow.c (propagate_block): Skipping back across libcall didn't happen
3685         due to failing to set PREV.
3686
3687         * expr.c (emit_library_call): Code to increment and decrement
3688         current_args_size broke since emit_call_1 was changed to restore it.
3689
3690         * combine.c (try_combine): When i1 or i2 auto-incs a reg, don't combine
3691         if i3 uses that reg.
3692
3693         * config-hp9k3.h: #define bcopy, bcmp, bzero here.
3694         * conf-hp9k320.h: Delete file.
3695
3696         * integrate.c: Don't include strings.h--no need.
3697
3698         * stmt.c (expand_asm_operands): Don't make zero-length vectors.
3699
3700         * loop.c (scan_loop): After a fcn call, maybe-trap insns can't move.
3701         The fcn call might exit and that would prevent the trap.
3702
3703         * reload1.c (reload): Set reload_first_uid to next uid to be used.
3704         * reload.c (find_equiv_reg): Use reload_first_uid to ignore insns
3705         that are due to reloading--only if reload_reg_p is not 0 or 1.
3706
3707 Wed May 18 22:11:20 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3708
3709         * typecheck.c (build_unary_op): Don't complain about array
3710         as argument to `!'.
3711
3712         * decl.c (pushdecl): If locally declaring an extern function,
3713         check the identifier's global value in case it's an inline function.
3714
3715 Mon May 16 03:06:08 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3716
3717         * output-ns32k.c (output_shift_insn): New fn, maybe turn shift to adds.
3718         (reg_or_mem_operand): Predicate for a non-immediate general_operand.
3719         * tm-ns32k.h (CONST_OK_FOR_LETTER_P): Define letter K.
3720         * ns32k.md: Use output_shift_insn for various addr insns that shift.
3721         Don't allow nonexplicit constants in lprd, multiply or truncate insns.
3722         Use reg_or_mem_operand for constraint in op1 of divide insns;
3723         a constant there causes regclass to screw up.
3724         Split alternative constraints on the bit-field insns to avoid
3725         out-of-range operands in exts, inss.  Some cases of extraction
3726         can be done faster via memory.
3727
3728         * flow.c (mark_set_1): When adding a REG_DEAD note, inc reg_n_deaths.
3729
3730         * dbxout.c (dbxout_type_def): Do nothing for {integer,char}_type_node.
3731
3732 Sun May 15 00:56:44 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3733
3734         * tm-sequent.h, tm-ns32k.h, tm-encore.h (PRINT_OPERAND):
3735         Was treating SF's as SI's.
3736
3737         * expr.c (emit_move_insn): Check all CONST_DOUBLEs for
3738         LEGITIMATE_CONSTANT_P and put them in memory if not.
3739
3740         * local-alloc.c (combine_regs): Allow a reg to be tied to a qty
3741         if the reg's class is contained in the qty's class
3742         (as well as if the reg's class contains the qty's class as before).
3743         Rename qty_reg_class to qty_min_class and make it the smallest
3744         class of any reg tied to the qty.
3745         (reg_class_subset_p, reg_meets_class_p, update_qty_class):
3746         New subroutines to implement this.
3747         (local_alloc): Init reg_qty to -1 for pseudos not in cur. basic block.
3748         (reg_is_born): Abort if pseudo not in basic block has -2 in reg_qty.
3749
3750         * jump.c (rtx_renumbered_equal_p): Insist that modes of REGs match.
3751
3752 Sat May 14 01:05:35 1988  Richard Stallman  (rms at lucky-charms.ai.mit.edu)
3753
3754         * stmt.c (expand_return): Empty frame frame_offset isn't nec. 0.
3755
3756         * expr.c (emit_call_1): Use stack_size_rtx everywhere appropriate.
3757
3758         * decl.c (init_decl_processing): Set sizetype to `unsigned long'
3759         if `int' is less than a word.
3760
3761         * stddef.h (size_t, ptrdiff_t): Both are now long.
3762
3763 Fri May 13 01:06:00 1988  Richard Stallman  (rms at lucky-charms.ai.mit.edu)
3764
3765         * emit-rtl.c (gen_lowpart): Handle non-lowpart subreg as arg.
3766
3767         * recog.c (register_operand): VOIDmode means allow any mode.
3768         (immediate_operand, nonmemory_operand): Likewise.
3769
3770         * emit-rtl.c (classify_insn): Update for changed CALL_INSN format.
3771         (emit): New function to emit an rtl pattern as the right kind of insn.
3772         * jump.c (simplejump_p): No longer static.
3773
3774         * genemit.c (gen_expand): For match_operand at top level, call `emit'.
3775         Use `emit_call_insn' when appropriate.
3776         (gen_exp): Handle rtx's that contain strings.
3777
3778         * final.c, symout.c: If not NO_DBX_FORMAT, include stab.h to get the
3779         N_... symbols.  Use their default definitions only if they're undef.
3780
3781         * expr.c (expand_call) [no PUSH_ROUNDING]: Always set argblock
3782         if there are any stack-passed arguments.
3783
3784         * typecheck.c (build_unary_op): Mark all increment-exprs volatile.
3785
3786         * recog.c (reg_renumbered_fits_class_p): Delete private copy of
3787         reg_class_contents.
3788
3789         * reload1.c (forget_old_reloads): Handle PARALLEL case by recursion.
3790         Explicit store into a spilled reg invalidates old reloaded contents;
3791         this can occur when we drop through into a basic block whose need was 0
3792         (and so whose local pseudos were not spilled).
3793
3794         * gcc.c (main): If -v, print gcc's own version; also no error msg
3795         if no input files.
3796
3797         * loop.c (may_trap_p): Mem ref to nonconstant address may trap.
3798         (scan_loop): Check may_trap_p only when insn is in other respects ok.
3799
3800         * cexp.y: #include config.h (for decl of alloca on some machines).
3801
3802 Thu May 12 17:24:19 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3803
3804         * regclass.c (regclass): When inserting an insn at start of block,
3805         update basic_block_head.
3806
3807 Wed May 11 00:47:09 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
3808
3809         * stmt.c (assign_parms): DECL_OFFSET should be offset as passed
3810         (not including big-endian width-change correction).
3811
3812         * typecheck.c (shorten_compare): Set unsignedp[01] right in case
3813         where get_narrower makes no change.
3814         (build_binary_op_nodefault): Likewise for shortening shifts.
3815
3816         * stmt.c (expand_end_case): Use type_for_size to get the type
3817         to convert the index to, since `int' is wrong if -mshort.
3818
3819         * decl.c (grokdeclarator): Don't check PARM type for completeness.
3820         (grokparms): If fn definition, check all parm types for completeness.
3821         (store_parm_decls): Likewise.
3822
3823 Tue May 10 22:42:13 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
3824
3825         * typecheck.c (store_init): For invalid init, store error_mark_node.
3826         * varasm.c (assemble_variable): Ignore error_mark as an init.
3827         * stmt.c (expand_decl): If init is error_mark, init to 0 if possible.
3828         This avoids a spurious "uninitialized variable" warning.
3829
3830 Sun May  8 17:08:07 1988  Richard Stallman  (rms at lucky-charms.ai.mit.edu)
3831
3832         * tm-hp9k320.h: Define STRUCTURE_SIZE_BOUNDARY.
3833
3834         * decl.c (get_parm_info): Replaces get_parm_types.  Returns a tree_list
3835         containing parmdecls and tag list as well as type list.
3836         (grokparms): Accept that tree_list as argument.
3837         (grokdeclarator): Calling grokparms, say "not a definition" for the
3838         function declarators for arg or value types within a definition.
3839
3840         * parse.y: Call get_parm_info.
3841         (parmlist_or_identifiers): If identifiers, make a tree_list
3842         like the one get_parm_info returns.
3843
3844 Fri May  6 16:44:19 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3845
3846         * m68k.md (casesi): Delete template aside from match_operand's.
3847
3848         * tm-encore.h: New file from Robert Brown.
3849
3850         * ns32k.md: Use %c in some addr insns.
3851         (tst*): Use {d,f,}const0_rtx to make the constant 0; OS-independent.
3852         (call, call_value): Use %? before address in a bsr.
3853
3854         * output-ns32k.c (print_operand_address): To output a local label,
3855         use `output_asm_label'.
3856         Make SEQUENT_ADDRESS_BUG conditionals happen at compile time.
3857
3858         * tm-ns32k.h: Delete SEQUENT_HAS_FIXED_THEIR_BUG.
3859         (PRINT_OPERAND): Output nothing for `%?'.
3860         * tm-sequent.h: (PRINT_OPERAND): Output nothing for `%?'.
3861
3862         * final.c (output_asm_label): No longer `static'.
3863
3864 Thu May  5 09:03:37 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3865
3866         * explow.c (memory_address): Ignore flag_force_reg unless optimize.
3867         Also ignore it for addresses of stack slots (avoid invalid REG_EQUIVs).
3868
3869         * typecheck.c (digest_init): If traditional, allow `char x[100]=0;'.
3870
3871         * tree.c (get_unwidened): Don't alter a COMPONENT_REF if
3872         innerprec equals the precision of the existing type.
3873         It was changing pointers to integers.
3874
3875         * m68k.md (movdi): Put all fpregs in separate constraint alternatives
3876         and handicap them so spill reg won't be an fp reg.
3877
3878         * parse.y (yyerror): Use the arg as part of the error message.
3879
3880         * decl.c (start_function): Give the RESULT_DECL type int rather
3881         than char or short.
3882         * typecheck.c (c_expand_return): Convert value from fn's return type
3883         to the RESULT_DECL's type.
3884
3885         * Avoid generating dbx xrefs to enums, since dbx loses on them.
3886         Do this by outputting all types in order of definition.
3887         This is done only for top-level types; problem remains for local ones.
3888
3889         * decl.c (finish_decl): Do rest_of_decl_compilation for TYPE_DECLs.
3890         * toplev.c (rest_of_decl_compilation): Do dbxout_symbol for them.
3891
3892         * dbxout.c (dbxout_symbol): Check DECL_RTL only for fns and variables.
3893         For a TYPE_DECL, ignore it if the type was already output
3894         and its preferred name is the TYPE_DECL.  Else output type in full.
3895
3896         * decl.c (pushdecl): Don't prefer typedef names to type tag names.
3897
3898         * stor-layout.c (chain_type): Build chain in forward order.
3899
3900
3901         * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Error getting length of table.
3902
3903         * tm-3b1.h: #define SGS_3B1 was missing.
3904
3905         * typecheck.c (build_compound_expr): Ignore non-volatile subexprs.
3906
3907         * fold-const.c (fold): Simplify (unsigned) foo >= 0, etc.
3908
3909         * stor-layout.c (layout_type): Set TYPE_PRECISION of ptr types.
3910
3911 Wed May  4 08:06:25 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3912
3913         * parse.y: Don't use the Bison @ construct, since it makes parser slow.
3914
3915         * decl.c (finish_function): Delete FILENAME and LINE args.
3916
3917         * typecheck.c (digest_init): No pedantic warning for array="string".
3918
3919 Tue May  3 09:09:30 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3920
3921         * toplev.c (main): Ignore `-Wcomment'.
3922         * gcc.c: Pass -Wall to cpp (which treats it like -Wcomment).
3923
3924         * tm-isi68.h: Greatly simplified; now works only with GAS.
3925
3926         * tm-m68k.h (EMPTY_FIELD_BOUNDARY): now 16 (right on Sun, ISI and HP).
3927         * tm-sun3.h: No need to redefine it.
3928
3929         * decl.c (finish_struct): Don't ever make DECL_ALIGN smaller.
3930
3931         * decl.c: Rename min, max to MIN, MAX.
3932
3933         * typecheck.c (convert_for_assignment): Avoid warning if assigning
3934         a `void *' from a `const void *'.
3935
3936         * combine.c (FAKE_EXTEND_SAFE_P): Turn off for mem refs; avoid faults.
3937
3938 Mon May  2 07:28:27 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3939
3940         * tm-vax.h: Support -mg switch to use g-float instead of d-float.
3941         New macros TARGET_G_SWITCH, ASM_DOUBLE_CHAR.
3942         Changes in TARGET_SWITCHES, ASM_OUTPUT_DOUBLE.
3943         Define code `#' for PRINT_OPERAND.
3944         * vax.md: use `#' in opcodes for doubleword float.
3945
3946         * tm-vax.h: Define UDIVSI3_LIBCALL and UMODSI3_LIBCALL.
3947
3948         * cccp.c (main, do_include): Implement -I- switch.
3949
3950         * jump.c (jump_optimize): When hunting NOTE_INSN_FUNCTION_END,
3951         skip final RETURN (found on the vax).
3952
3953         * toplev.c (main): -Wall is equiv to all -W switches combined.
3954
3955         * stmt.c (expand_decl, expand_end_bindings,
3956         expand_{start,end}_function).  The -noreg treatment of `register' vars
3957         is extended to vars used as addresses of vars in memory (varying-size
3958         structures).
3959         (use_variable): Emit USE for regs used in specified rtx.
3960
3961         * cse.c (fold_cc0): Stack-frame addresses are always nonzero.
3962         (fold_rtx): 0200 bit in prev_insn_cc0 means only zeroness is known.
3963
3964         * parse.y (parmlist): poplevel needs 3 args.
3965
3966 Sun May  1 07:20:34 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3967
3968         * decl.c (start_function): typo checking for incomplete return type.
3969
3970         * emit-rtl.c (restore_reg_data): If a pseudo appears nowhere,
3971         don't leave its slot empty; create a pseudo for that slot.
3972
3973         * Version 1.21 released.
3974
3975         * expr.c (expand_call): Merge duplicate code for structure_value_addr.
3976
3977         * emit-rtl.c (restore_reg_data): Delete error check; it's legit for
3978         a pseudo reg to appear nowhere in the rtl.
3979
3980 Sat Apr 30 07:35:31 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
3981
3982         * integrate.c (copy_rtx_and_substitute): Fix typo for arg_pointer_rtx.
3983
3984         * decl.c (poplevel): Undo previous change with #if 0.
3985
3986         * stmt.c: `struct nesting' now records the depth on the stack.
3987         Each expand_start... must update and record the depth;
3988         each expand_end... uses macro POPSTACK to pop.
3989         This way, if a level isn't explicitly popped, it won't cause
3990         circular structure.
3991
3992         * dbxout.c (dbxout_type): Replace with main variant only if incomplete.
3993
3994         * typecheck.c (build_unary_op): Test of `pedantic' was backwards.
3995
3996         * expr.c (STACK_BYTES): Typo in definition.
3997
3998         * typecheck.c (build_binary_op_nodefault): Rename code1 to code0,
3999         and likewise for code2, tt1, tt2.
4000
4001         * expr.c (expand_call): Wrong arg order for warning_with_decl.
4002
4003 Fri Apr 29 08:41:06 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4004
4005         * integrate.c (copy_decl_tree): New arg is depth in recursion.
4006         Always discard the outermost LET_STMT being copied; never discard any
4007         others.  This way the copied LET_STMTs correspond to the copied NOTEs.
4008
4009         * varasm.c (decode_rtx_const): For SYMBOL_REF, use string address
4010         not address of the rtx.  Library fns have only one copy of the name
4011         but many copies of the SYMBOL_REF.
4012
4013         * expr.c (emit_call_1): New arg OLD_ARGS_SIZE is used to reset
4014         current_args_size.
4015         (emit_library_call, expand_call): Pass new arg; don't restore it here.
4016
4017         * flow.c (life_analysis): Don't mark sp live at end if fn is empty.
4018
4019         * parse.y (parse_or_identifiers_1): Handle `error' in here, not in
4020         callers notype_declarator etc.  Also read the closeparen here.
4021
4022 Thu Apr 28 12:43:52 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4023
4024         * expmed.c (expand_shift): In extzv strategy, handle the operand
4025         predicates for operands 0, 1 and 3.  (Not needed for 2.)
4026         * vax.md: extzv pattern for SImode op1 must recognize general_operand
4027         since the pattern named "extzv" allows them.
4028
4029 Wed Apr 27 00:52:44 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4030
4031         * expr.c (emit_call_1): New arg NEXT_ARG_REG describes # regs
4032         used for passing args.
4033         (emit_library_call, expand_call): Provide that argument.
4034
4035         * explow.c (round_push): New fn: round arg up to STACK_BOUNDARY.
4036         * expr.c (expand_builtin): Use round_push on size for __builtin_alloca.
4037         * stmt.c (expand_decl): Likewise for variable-size objects.
4038         * expr.c (expand_call): Likewise for args_size.var.
4039         Also use STACK_BOUNDARY to round a constant arg-block size.
4040         Pass emit_call_1 that rounded value.
4041         (emit_library_call): Round arg_size with STACK_BOUNDARY.
4042         * tm-spur.h: Define STACK_BOUNDARY instead of ROUND_CALL_BLOCK_SIZE.
4043         * tm-m68k.h: Define STACK_BOUNDARY as 16.
4044
4045         * expr.c (emit_call_1): Don't change current_args_size.
4046         (emit_library_call, expand_call): Always restore current_args_size
4047         to ambient value, after calling emit_call_1.
4048
4049         * tm-hp9k320.h: Don't define USG here.
4050         * config-hp9k3.h: New file.  USG defined here.
4051
4052         * tm-3b1.h: #undef ASM_OUTPUT_ASCII (a defn came from tm-hp9k320.h).
4053
4054         * decl.c (grokdeclarator primarily): Cast all RID_... to (int) before
4055         using them in arithmetic.  Placates CC on Sequent.
4056
4057         * emit-rtl.c (emit_jump_insn): Return proper value, for a SEQUENCE.
4058         * emit-rtl.c (emit_call_insn): Handle SEQUENCE like emit_jump_insn.
4059
4060 Tue Apr 26 02:41:26 1988  Richard Stallman  (rms at lucky-charms.ai.mit.edu)
4061
4062         * cccp.c (macroexpand): If traditional, don't disable called macro.
4063         (macarg1): Was failing to count backslash-newline inside a string
4064         in a macro arg as part of file's linenumber.
4065
4066 Mon Apr 25 18:46:53 1988  Richard Stallman  (rms at lucky-charms.ai.mit.edu)
4067
4068         * jump.c (jump_optimize): Don't do April 20 optimization on first
4069         iteration; let other simpler opts be done before this is considered.
4070
4071 Sun Apr 24 02:45:28 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4072
4073         * tree.c (staticp): a CONSTRUCTOR can be static.
4074
4075         * varasm.c (output_constant_def): Always return memref, not address.
4076
4077         * decl.c (complete_array_type): New fn, make an array type complete
4078         based on an initializer.
4079         (finish_decl): Use complete_array_type.
4080         * parse.y (expr_no_commas): When parsing a constructor,
4081         Use complete_array_type on constructors for incomplete array types.
4082
4083         * typecheck.c (digest_init, store_init_value,process_init_constructor):
4084         It's now TREE_STATIC, not TREE_ADDRESSABLE, that records that all elts
4085         in a CONSTRUCTOR are simple constants.
4086         (digest_init): A CONSTRUCTOR with non-null type is treated as ordinary
4087         expression, not as a braced initializer.
4088         Allow init of an array from an array-valued expr; warn if pedantic.
4089         * expr.c (expand_expr, CONSTRUCTOR case): Put in memory only if static.
4090         Was making an extraneous level of MEM; output_constant_def does it all.
4091
4092         * typecheck.c (build_unary_op): Allow ADDR_EXPR of static CONSTRUCTOR.
4093         (default_conversion): Likewise.
4094         (initializer_constant_valid_p): Constructor is ok if static.
4095
4096         * gcc.c: Change -fnostd... to -nostd...
4097         * cccp.c (main): Likewise.
4098
4099         * Everywhere: Use REG_NOTE_KIND to get the kind of a reg note.
4100
4101         * rtl.c (find_regno_note): New function.
4102         * flow.c (flow_deadp): Deleted; caller uses find_regno_note.
4103         * global-alloc.c (reg_dead_p): Deleted.
4104         (global_conflicts): Use find_regno_note instead of reg_dead_p.
4105
4106         * final.c (final) Use find_reg_note to look for a REG_INC.
4107         * combine.c (insn_has_inc_p): deleted; callers use find_reg_note.
4108         (try_combine): Use find_reg_note whenever looking for a REG_INC.
4109         (regno_dead_p, remove_death): Check the REG_NOTE_KIND before assuming
4110         that the datum in it is a REG.
4111         * reload1.c (reload): Use find_reg_note to find a REG_EQUIV.
4112
4113         * gcc.c: Don't delete .o files if not all compilations succeed.
4114         (record_temp_file): New arg SUCCESS_ONLY--delete file only if succeed.
4115         (delete_temp_files): New arg SUCCESS says compilation succeeded.
4116         (store_arg): Now 3 possibilities for arg TEMPNAMEP; 2 = del on success.
4117         (do_spec_1): For %d, set delete_this_arg to 2.
4118
4119         * decl.c (poplevel): Warn about any still-incomplete type-tags.
4120
4121 Sat Apr 23 02:54:16 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)
4122
4123         * expr.c (expand_builtin): For alloca, round arg up to multiple
4124         of PARM_BOUNDARY.  Also to convert it to Pmode unless it already is.
4125
4126         * stor-layout.c (layout_union): Bug in 14 April change:
4127         use caller-specified alignment as minimum, not as maximum.
4128
4129         * parse.y (skip_white_space): Avoid infinite loop on unterm. comment.
4130
4131 Fri Apr 22 00:22:59 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4132
4133         * cccp.c: Text following #else or #endif is just a warning.
4134         (rescan): Digit-case was dropping into the $-case; reorder.
4135
4136         * cccp.c (rescan): Comment start when -traditional was output as
4137         `/*'; should be nothing.
4138
4139         * jump.c (jump_optimize): Fix prev change:
4140         do nothing if range1end == range2end;
4141         don't lose any NOTEs when splicing.
4142
4143         * flow.c (propagate-block): For CALL_INSN, clobber the call-used regs
4144         only after mark_set_regs is done; avoids confusion about lifespan
4145         of function value reg.
4146
4147         * gcc.c: Pass -Wcomment to cpp.
4148
4149         * cccp.c (main, rescan): If -Wcomment, warn if `/*' inside comment.
4150
4151         * decl.c (duplicate_decls): Ignore `inline' decl following definition.
4152
4153         * m68k.md (casesi): Split it up into subroutines, so insns emitted
4154         by the call to memory_address (on 68000) come in the right place.
4155
4156         * combine.c (record_dead_and_set_regs): Notice storing in a SUBREG.
4157
4158         * integrate.c (expand_inline_function): Insn to copy a subroutine's
4159         return-value was being output twice, once incorrectly.
4160
4161         * reload.c (find_equiv_reg): A stack-push insn does not invalidate
4162         an equiv for a goal in memory.
4163         Any other write to memory does invalidate any goal in memory
4164         (PARALLEL case failed to check for this).
4165
4166         * expmed.c (expand_shift): In the extzv clause, force shifted value
4167         out of memory if -fforce-mem.
4168
4169         * print-tree.c (prtypeinfo): Some attributes were missing.
4170         (dump): In ..._TYPE nodes, ignore the TREE_CHAIN field.
4171
4172         * cse.c (note_mem_written): Pushing on stack does not invalidate mem.
4173
4174         * vax.md (extv/andl peephole opt): Made incorrect code if output was
4175         pushed on stack.  Added special case code.
4176         (extv, extzv for SImode operand): Require register_operand.
4177
4178 Thu Apr 21 00:24:52 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
4179
4180         * stmt.c (assign_parms): Round current_function_pretend_args_size up.
4181
4182         * integrate.c: `pushlevel' arg was missing.
4183
4184         * dbxout.c (dbxout_type): Undo rest of March 29 change:
4185         When a named type is first seen inside another type, output an xref
4186         and let the real definition come out later.
4187         It is strange that Sun dbx has sometimes appeared to demand
4188         one strategy and sometimes appeared to demand the other.
4189
4190         * typecheck.c (convert_for_assignment): Allow conversion to or from
4191         `const void *', etc., unless pedantic.
4192
4193         * decl.c (get_parm_types): For `foo (void){}', set last_function_parms
4194         to nil so store_parm_decls won't lose.
4195
4196         * combine.c (subst): (plus (plus X N) -N) => X.
4197
4198         * explow.c ({anti_,}adjust_stack): Don't make a copy of
4199         `stack_pointer_rtx'.
4200
4201         * integrate.c (expand_inline_function): Typo testing for the
4202         USE that indicates a CALL_INSN's value is being returned.
4203
4204         * expr.c (expand_builtin, alloca case): Copy arg to reg before
4205         adjusting stack, to avoid invalid insns on some machines.
4206
4207 Wed Apr 20 00:15:14 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)
4208
4209         * typecheck.c (build_binary_op_nodefault): When shortening,
4210         get_narrower may make no change because ARGn is already narrow.
4211         In this case, set UNSIGNEPn from ARGn's type.
4212
4213         * typecheck.c: Rename ARG1,ARG2 to ARG0,ARG1, etc. in several fns.
4214
4215         * tm-vax.h: Turn off continuation on DBX output.
4216
4217         * typecheck.c (build_function_call): Don't change __builtin_ffs to an
4218         FFS_EXPR.  Note that __builtin_alloca has always made a CALL_EXPR.
4219         * expr.c (expand_builtin): New function expands all CALL_EXPRs that
4220         are really built-in functions.
4221         (preexpand_calls): Do nothing to a CALL_EXPR for a built-in function.
4222
4223         * loop.c (count_loop_regs_set): Don't move a reg that is in a CLOBBER.
4224
4225         * stupid.c (stupid_mark_refs): Was getting hard reg's mode from
4226         the wrong place.
4227
4228         * rtl.c (note_stores): Typo in checking vector elt for SET vs CLOBBER.
4229
4230         * stmt.c (expand_end_bindings): If restoring stack level, 
4231         first do pending stack adjust (so it won't be done erroneously after).
4232         (expand_goto): likewise.
4233
4234         * rtl.h: LABEL_NUSES was an rtx.  It should be an int.
4235         * stmt.c (expand_label, expand_goto): Delete frobbing with LABEL_NUSES;
4236         the value stored there was the same as the CODE_LABEL rtx.
4237
4238         * jump.c (jump_optimize): Detect  if (foo) ...; else { ... break;}
4239         and change to  if (! foo) { ... break;} else ...; so can drop out.
4240         (next_label): New fn returns the next label after given insn.
4241
4242 Tue Apr 19 21:30:05 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4243
4244         * flow.c (insn_dead_p): Delete special handling for stack ptr.
4245         (mark_set_regs, mark_used_regs): Likewise.
4246         (life_analysis): Mark stack ptr live at end of fn if necessary.
4247         (propagate_block): Mark stack ptr live leading up to a CALL_INSN.
4248
4249         * jump.c (jump_optimize): #if 0 around stack-adjust-deletion code.
4250
4251         * cse.c (fold_rtx): Change const_arg from an array to 3 separate
4252         scalars for the first three operands.
4253         Handle SIGN_EXTEND and ZERO_EXTEND.
4254
4255         * integrate.c (copy_rtx_and_substitute): If arg is 0, return 0.
4256         (expand_inline_function): Separate vars for old pattern and new insn.
4257
4258         * expr.c (expand_call): Set TREE_ADDRESSABLE if call is not inlined.
4259
4260 Tue Apr 19 02:25:22 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4261
4262         * Version 1.20 released.
4263
4264         * tm-ns32k.h: Define new reg class GEN_OR_FLOAT_REGS
4265         so that GENERAL_REGS and FLOAT_REGS have a union.
4266
4267         * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Recognize a stack-push.
4268         * ns32k.md: Many constraints must now allow or reject pushes.
4269         Delete the special patterns for pushing.
4270
4271 Mon Apr 18 06:02:39 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)
4272
4273         * reload1.c (forget_old_reloads): For a multiword hard reg,
4274         forget old reloads for each word.
4275
4276         * reload.c (find_reloads): Typo in calling push_replacement.
4277
4278         * tm-ns32k.h (HARD_REGNO_MODE_OK): Failed to allow fp regs for SFmode.
4279
4280 Sun Apr 17 01:21:35 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4281
4282         * tm-sequent.h (PRINT_OPERAND): Handle absolute integer memaddress.
4283
4284         * ns32k.md: Add DImode push insns.  Add QImode and HImode push insns.
4285         Supply missing statement in movsf.
4286
4287         * dbxout.c (dbxout_type): Don't contin before 1st field of struct.
4288
4289         * dbxout.c (dbx_continue): Use DBX_CONTIN_CHAR instead of backslash.
4290
4291         * loop.c (scan_loop): Ov vax, the "loop-entry jump" can be a return,
4292         in which case perhaps there is no label following it.
4293         Detect phoniness of loop before looking for that label.
4294
4295         * decl.c (init_decl_processing): Builtin fn names start with `__'.
4296
4297         * typecheck.c (shorten_compare): Warn about constant result only in
4298         cases like (char)x < 0x80, where old C compilers made it -0x80.
4299
4300         * vax.md: All jbs/jbc/jlbs/jlbc patters with op0 in SImode
4301         must reject mode-dependent memory addresses.
4302
4303         * recog.c (mode_independent_operand): Test for general operand
4304         that doesn't have a mode-dependent memory address.
4305
4306         * varasm.c (assemble_function): ASM_DECLARE_FUNCTION_NAME, if def,
4307         is now responsible for outputting the function name as a label.
4308
4309 Sat Apr 16 05:02:55 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4310
4311         * cccp.c (do_xifdef): Warn about punctuation or other junk in argument.
4312         Warn about no argument.  If pedantic, warn if arg starts with digit.
4313         If traditional, ignore all after first non-idchar and never warn.
4314
4315 Thu Apr 14 01:12:59 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4316
4317         * integrate.c (expand_inline_function): Typo for addressable parms.
4318
4319         * cse.c (insert_regs): Copying half a DImode into half of another
4320         does not make the two DImode regs equivalent.
4321
4322         * recog.c (general_operand): Was failing to accept symbol_ref:SI
4323         when MODE arg was VOIDmode.
4324
4325         * expr.c (preexpand_calls): For RTL_EXPR, do nothing.
4326
4327         * decl.c (start_enum, build_enumerator): Remember default for next one
4328         as a tree node (so the high-half isn't lost in a negative one).
4329
4330         * stor-layout.c (layout_{record,union}): Pay attn to initial value
4331         of TYPE_ALIGN in computing final alignment.
4332         (layout_union): Round size up to multiple of the alignment.
4333
4334         * decl.c (finish_struct): Don't alter size after type is laid out.
4335         Instead, set TYPE_ALIGN before layout_type.
4336
4337         * reload1.c (choose_reload_targets): Introduce reg_has_output_reload.
4338         If there are two separate reloads (one in and one out)
4339         for the same (hard or pseudo) reg, always set reg_last_reload_reg
4340         based on the output reload.
4341
4342 Wed Apr 13 21:26:16 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4343
4344         * reload.c (find_reloads_address_1): Always barf if a "constant"
4345         register is autoincremented.
4346
4347         * parse.y (structsp): suspend_momentary before start_enum;
4348         else some nodes made by start_enum might be momentary.
4349
4350         * stmt.c (expand_start_case): New arg is nominal type for comparison
4351         (which is the promoted type of the index expression).
4352         (pushcase): Always convert VALUE to that nominal type
4353         before validating it.
4354         * parse.y (case stmt): Promote each case-value before pushcase.
4355         * typecheck.c (c_expand_start_case): Promote the index-expr
4356         to determine the nominal type, before get_narrower.
4357
4358 Wed Apr 13 12:43:08 1988  Chris Hanson  (cph at kleph)
4359
4360         * tm-hp9k320.h: Define ASM_FORMAT_PRIVATE_NAME.  HPUX asm forbids
4361         `.' in identifiers, so use `___' (there is some danger in this choice).
4362
4363 Tue Apr 12 23:26:48 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4364
4365         * local-alloc.c (block_alloc): Make 1 extra slot in regs_live_at.
4366
4367         * stmt.c (optimize_bit_field): Function moved from reload1.c.
4368         When need to generate a SIGN_EXTEND or ZERO_EXTEND, make it a separate
4369         insn and use gen_extend_insn to make it.
4370         * optabs.c (gen_extend_insn): New fn, construct body of an insn
4371         to extend Y and store in X.
4372
4373 Mon Apr 11 19:20:57 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)
4374
4375         * decl.c (finish_decl): Error if static var has variable size.
4376
4377         * parse.y (yylex): Warn if int const is out of range.
4378
4379         * parse.y: New keyword __alignof.
4380         * typecheck.c (c_alignof): Given a type, return its alignment in bytes.
4381
4382         * typecheck.c (c_sizeof{,_nowarn)): Don't return integer_one_node;
4383         use build_int to make sure we get something with type `sizetype'.
4384
4385         * Support variable-sized structures (containing var-sized arrays).
4386
4387         * stmt.c (assign_parms): Handle parms whose size varies.
4388         Use `memory_address' when constructing memrefs to args;
4389         no need to set `invalid_stack_slot'.
4390         Don't make a REG_EQUIV note for a scalar arg at variable offset.
4391         * stor-layout.c (genop, build_int): No longer `static'.
4392
4393         * stor-layout.c (convert_units): Optimize ceil (ceil(x,2)*2, 4) etc.
4394
4395         * stmt.c (expand_decl): Don't abort if var-sized object has init.
4396         Convert variable size from units of DECL_SIZE_UNIT to units of bytes.
4397
4398         * expr.c (emit_push_insn): Arg ARGS_SO_FAR is now an rtx.
4399         Pay attention to ARGS_ADDR even if machine has push insns.
4400         (expand_call): Handle variable-sized arguments.
4401         If have any such, push entire arg-block in advance.
4402         Record each arg's offset during first loop and don't change args_size
4403         during the actual pushing loop; this way the actual pushing loop
4404         works regardless of arg-order if arg-block was pushed in advance.
4405         (push_block): Copy SIZE to reg unless it's a reg or constant.
4406
4407         * expmed.c (expand_divmod): If converting CEIL_DIV to FLOOR_DIV,
4408         make new pseudo for incremented value, to help cse understand.
4409
4410 Sun Apr 10 00:07:45 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4411
4412         * expr.c (emit_library_call): Two dumb bugs calling emit_call_1.
4413
4414         * dbxout.c (dbxout_symbol): Handle case of (MEM (REG frameptr)).
4415
4416         * cccp.c (skip_if_group): Ignore quote-chars if -traditional.
4417         (rescan): If -traditional, don't output a space for a comment.
4418         (handle_directive): If not -traditional, output a space for a comment.
4419
4420 Sat Apr  9 21:26:51 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4421
4422         * decl.c (get_parm_types): `void' type is error, except as entire list.
4423         * parse.y (parmlist_1): `void,...' is error.
4424
4425         * typecheck.c (pointer_int_sum, pointer_diff):
4426         Use an integer type with at least POINTER_SIZE bits.
4427         * expr.c (expand_expr, ARRAY_REF): Likewise.
4428         * tree.c (type_precision): Prec of a pointer is POINTER_SIZE.
4429         (convert_to_pointer): Directly convert any int w/ width==POINTER_SIZE.
4430         Other int types convert via an int of that width.
4431         (convert_to_integer): Pointers convert via an int of that width.
4432
4433         * decl.c (init_decl_processing): Use INT_TYPE_SIZE, if def,
4434         to set width of `int' and `unsigned int'.
4435         (make_index_type): Give new type the width of a long int.
4436
4437         * tm-m68k.h: Add new -mshort which controls TARGET_SHORT.
4438         * tm-m68k.h: Define INT_TYPE_SIZE depending on TARGET_SHORT.
4439
4440 Fri Apr  8 05:02:59 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4441
4442         * typecheck.c (require_complete_type): Fix typo in detection of `void'.
4443         (build_function_call): Fix backward test to allow `void' values.
4444
4445         * dbxout.c (dbxout_tags): Output each tag once even if type is defined.
4446
4447         * m68k.md (movstrictqi): Reject addr-reg always, for both operands.
4448
4449         * tm-vax.h (STRUCTURE_SIZE_BOUNDARY): Make this always 8, for BSD.
4450         * tm-ultrix.h: New file, overriding STRUCTURE_SIZE_BOUNDARY.
4451         [This change has been taken out; tm-ultrix.h is now equivalent to
4452         tm-vax.h.  I must have been confused when testing PCC.]
4453
4454         * integrate.c (expand_inline_function): Don't let inline_target
4455         be nonzero in BLKmode.
4456
4457         * decl.c (grokdeclarator): Const array parm becomes ptr-to-const.
4458
4459 Thu Apr  7 05:02:41 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4460
4461         * genoutput.c (bcopy, bzero): Renamed to mybcopy, mybzero
4462         so variation in C library and config.h won't affect the results.
4463         * genrecog.c (bzero): likewise.
4464         * genextract.c (bcopy): Fn deleted; used only in a string constant. 
4465
4466         * varasm.c (force_const_mem): Fix typo in arg decl.
4467
4468         * toplev.c (compile_file): init_file with main_input_filename
4469         so dbx output doesn't lack N_SOL symbols.
4470
4471         * cccp.c (rescan) [CPLUSPLUS]: Put out // comments as // comments.
4472
4473 Wed Apr  6 14:06:38 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4474
4475         * expr.c: Delete SLOW_ZERO_EXTEND conditionals added March 3.
4476         Now that enums types can be unsigned, this isn't needed.
4477
4478         * emit-rtl.c (emit_jump_insn): Handle SEQUENCEs.
4479
4480         * genemit.c (gen_expand): Use emit_jump_insn, emit_label, emit_barrier
4481         when the insn rtl requires it.
4482
4483         * m68k.md (subsi3): Prefer to avoid reverse-subtraction alternative.
4484
4485         * stmt.c (expand_end_case): Let CASE_DROPS_THROUGH control what to
4486         emit after the table.
4487         * tm-vax.h: Define CASE_DROPS_THROUGH.
4488
4489 Tue Apr  5 15:47:10 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4490
4491         * genemit.c (gen_exp): Handle vectors within exprs.
4492
4493         * stmt.c (expand_end_case): Pass 5th arg (default_label) to gen_casesi.
4494         * m68k.md: Define casesi insn rather than tablejump insn.
4495
4496         * cccp.c (skip_if_group): For validate_else, pass BP (end of cmd name).
4497         Don't call validate_else if do_else or do_endif will detect error.
4498
4499         * Bug: inline fcns can refer to the return reg with a strict_low_part
4500         which confuses expand_inline_function.  Fix is to change return reg
4501         into inline_target *everywhere* except in or right after a call.
4502         * integrate.c (copy_rtx_and_substitute): Delete special case for SET.
4503         Replace return-value hard regs with INLINE_TARGET in all contexts.
4504         (expand_inline_function): special handling for insn after a CALL_INSN
4505         if it copies the function value out.
4506         Allow notes and stack adjust insns to intervene
4507         between the CALL_INSN and the value-copy.
4508
4509         * expr.c (emit_call_1): New name for gen_call_1.
4510
4511         * Bug: ({...}) insns were in wrong place for a subexpression
4512         after a sequence point, as in x ? y : ({...}).
4513         * tree.def: New tree-code RTL_EXPR holds a sequence.
4514         * expr.c (expand_expr): Handle RTL_EXPR by emitting the sequence.
4515         * stmt.c (expand_{start,end}_stmt_expr): Use emit_to_sequence
4516         to make a sequence from everything within the ({...}).
4517         (expand_{start,end,emit}_delayed_expr): Delete these functions.
4518         * parse.y (`for'-statements): Don't call them; nothing special needed.
4519
4520         * parse.y (yylex): Handle syntax L"..." and L'...'
4521         (combine_strings): Handle wide strings being combined.
4522         * typecheck.c (digest_init): Reject wide string as init for char array.
4523         Allow it for an int array, but don't allow a narrow string.
4524         * decl.c (init_decl_processing): New var int_array_type_node.
4525
4526         * parse.y: Define keyword `noalias'.
4527         * parse.h: Define RID_NOALIAS.
4528
4529         * typecheck.c (compparms): Not all parmlists match an empty one;
4530         call `compparms1' to filter them.
4531
4532         * decl.c (groktypename): Remove special case for `void' as parameter.
4533         (get_parm_types): Special case for list of one decl with type void.
4534
4535         * decl.c (build_enumerator): Give enum constants the type `int'.
4536         Variable `current_enum_type' eliminated.
4537         (finish_enum): No need to repeat `fixup_unsigned_type'
4538         since the precision has not changed.
4539         * stor-layout.c (layout_type): Allow enum types to be unsigned.
4540
4541         * emit-rtl.c (unshare_all_rtl): Unshare contents of all reg-notes.
4542
4543         * parse.y (check_newline): filename is optional in #-lines.
4544
4545 Mon Apr  4 14:36:54 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
4546
4547         * typecheck.c (shorten_compare): When data type determines the value,
4548         eval the nonconstant arg anyway if it has side effects.
4549         (build_conditional_expr): When merging `foo *' with `void *',
4550         also allow `const void *'.  Result type has merged set of qualifiers.
4551         (qualify_type): Merge qualifiers of two types.
4552
4553         * decl.c (get_parm_types): Store any tags defined in parmlist
4554         into `last_function_parm_types'.
4555         (store_parm_decls): Add those tags into the current binding level.
4556
4557         * parse.y (parmlist, parmlist_or_identifier): Pass 0 to pushlevel;
4558         no binding levels in C should be transparent to tags.
4559
4560         * 3b1 support:
4561         * tm-3b1.h: New file.
4562
4563         * m68k.md: Add HPUX_ASM conditionals for shift-by-24-and-compare.
4564         In one of the dbra patterns, a HPUX_ASM conditional was backwards.
4565         (movhi) [SGS_3B1]: Define the LI... label as in MIT syntax.
4566         (addsi3) [SGS]: Syntax for base-displacement differs from MOTOROLA.
4567         (subsi3) [SGS]: likewise.
4568         (tablejump) [ASM_OUTPUT_CASE_LABEL]: Use 6, not 2, as displacement.
4569         This assumes ASM_OUTPUT_CASE_LABEL on 68k is used for a `swbeg'.
4570
4571         * final.c (final): Use ASM_OUTPUT_CASE_LABEL (if defined) to output
4572         any CODE_LABEL followed by an ADDR_VEC or ADDR_DIFF_VEC.
4573         It has 4 args; 4th is the insn which is the ADDR_VEC or ADDR_DIFF_VEC.
4574
4575         * tm-*.h for 68000 (PRINT_OPERAND_ADDRESS): For unscaled indexing in
4576         fetch from a branch table, use L and LI symbols as in the scaled case.
4577
4578         * cccp.c: If SCCS_DIRECTIVE, define #sccs as no-op.
4579
4580         * integrate.c (output_inline_function): Real start of function
4581         is FIRST_PARM_INSN, not FIRST_FUNCTION_INSN.
4582
4583         * tree.c (build_string): String contents must be saveable (for
4584         inline fcn).
4585
4586         * cse.c (cse_insn): Don't forget to set dest_hash_code when dest
4587         is a stack slot (and so its address is not being optimized).
4588
4589         * emit-rtl.c (restore_reg_data_1): reg_rtx_no must be 1+ largest REGNO.
4590
4591         * m68k.md (non-SImode bit-field insns): Change constraint to "o,d"
4592         so a nonoffsetable memref is handled by reloading its address
4593         but a register can still be handled.
4594
4595         * toplev.c (main): Execute OVERRIDE_OPTIONS, if it's defined.
4596
4597 Sat Apr  2 00:55:21 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4598
4599         * expr.c (convert_move): Handle a SUBREG in direct truncation case.
4600
4601         * cse.c (lookup_for_remove): Don't test machine mode of registers:
4602         Storing in (REG:SI 0) invalidates (REG:DF 0).
4603
4604         * decl.c (pushlevel): New arg, nonzero means this level is for
4605         variables only, not for tags.  All calls changed.
4606         (lookup_tag): Even if THIS_LEVEL_ONLY, skip variables-only levels.
4607         (pushtag): Define it in the first non-variables-only level.
4608
4609         * dbxout.c (dbxout_type): Undo Mar 29 change, in the DBX_NO_XREFS case.
4610         So now each struct or union will contain only nameless cross-refs
4611         to any others it uses.  The prior change is still in effect when
4612         DBX_NO_XREFS is not defined.
4613
4614         * Implement variable array bounds for parameters.
4615         * decl.c (poplevel): Don't crash if DECL_NAME gives 0.
4616         * typecheck.c (comptypes): A variable array bound matches anything.
4617         * parse.y (parmlist): Call pushlevel, then pushdecl each parm as it
4618         is parsed; then poplevel after using get_parm_types to extract the
4619         results of the parmlist.
4620         * decl.c (get_parm_types): New function; reverse the current decls,
4621         put them in last_function_parms, and return a list of their types.
4622         (grokparms): Arg is now an idlist or a typelist.  Do nothing if latter.
4623         (push_parm_decl): New function, like {start,finish}_decl combined
4624         for a parm in a parmlist.
4625
4626         * dbxout.c (dbxout_symbol): Ignore sym if its DECL_RTL is 0.
4627
4628         * symout.c (symout_block_symbols): Ignore sym if type is error_mark.
4629
4630 Fri Apr  1 11:41:21 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4631
4632         * expr.c (prepare_call_address): New function; given two rtx's
4633         for function and context, copy the context to the right hard reg,
4634         put the function address in the right place and return an rtx for it.
4635         (gen_call_1): No longer do those things.  Delete args CONTEXT, PROTECT.
4636         (emit_library_call, expand_call): Call `prepare_call_address'.
4637         In between that and `gen_call_1', USE the parm registers.
4638
4639         * tm-hp9k320.h (ASM_OUTPUT_*): Flush uses of output_arith_constant.
4640
4641         * varasm.c (assemble_variable): Use ASM_FORMAT_PRIVATE_NAME
4642         to make the name for a local static variable.
4643         * tm-m68k.h, tm-vax.h, tm-ns32k.h, tm-spur.h:
4644         Define ASM_FORMAT_PRIVATE_NAME.  Use `.', not `$', to separate.
4645
4646         * tm-m68k.h, tm-ns32k.h (FIX_FRAME_POINTER_ADDRESS):
4647         To refer to stack ptr, use stack_pointer_rtx, not a copy.
4648
4649         * tree.c (build_real_from_string): Function deleted.
4650         * parse.y (yylex): Use build_real and atof.
4651
4652         * parse.y: Allow string concatenation in arg of asm.
4653
4654         * parse.y (yylex): Always allow `$' in ident, but warn if pedantic.
4655         * tm-vms.h: Delete DOLLARS_IN_IDENTIFIERS (no longer tested).
4656
4657         * cccp.c (rescan, do_define, initialize_random_junk):
4658         Always allow `$', but warn if pedantic.
4659         (main): If -t, set `traditional'.
4660         (collect_expansion): If `traditional', no special handling for quotes
4661         and no whitespace added at end of macro definition.
4662
4663         * expr.c (compare, compare1): Last arg to compare_constants
4664         must be a size in bits.
4665
4666 Thu Mar 31 00:31:52 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4667
4668         * expmed.c (expand_mult, expand_divmod, extract_fixed_bit_field):
4669         Reject function return register as target if may need to read it.
4670         (Reading the return register in an inline function doesn't work.)
4671
4672         * decl.c (start_function): Delete extra arg to `error'.
4673
4674         * emit-rtl.c (last_parm_insn): Delete this unused var.
4675
4676         * make-cc1.com: New version from Kashtan.
4677
4678         * integrate.c (expand_inline_function): Always set up an INLINE_TARGET
4679         for a function that returns a nonvoid nonBLK value.
4680         Since `pushlevel' and `poplevel' are called, must also call
4681         `expand_{start,end}_bindings' to make a pair of NOTEs.
4682         Let them handle USEs at end of scope of formal parameter copies.
4683
4684         * integrate.c (expand_inline_function): In a new-style CALL_INSN,
4685         don't change the result reg into INLINE_TARGET.  Also,
4686         generate a move insn after the call only if INLINE_TARGET is non-0.
4687
4688         * integrate.c (copy_decl_tree): Don't crash if DECL_RTL is 0.
4689
4690         * integrate.c (copy_for_inline): Don't treat `return' rtx's specially.
4691
4692         * stmt.c (expand_{start,end,emit}_delayed_expr):
4693         New fns to handle ({...})'s in expressions output not where parsed
4694         (such as third expression in a `for' statement).
4695         * parse.y: Call them to handle third expression in a `for'.
4696
4697         * decl.c (duplicate_decls): Result is `inline' if either OLD or NEW is.
4698
4699         * emit-rtl.c (emit_note): Return the note, or 0 if none.
4700         * stmt.c (expand_start_bindings): Use emit_note's value.
4701
4702 Wed Mar 30 12:48:22 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4703
4704         * obstack.c (_obstack_begin): If ALIGNMENT is 0, use default.
4705         Compute default for the alignment of a `double'.
4706         * obstack.h (obstack_{begin,init}): Pass 0 for the alignment.
4707
4708         * flow.c (mark_used_regs): Discard multiple SUBREGs, STRICT_LOW_PARTs.
4709
4710         ** Call insns that return values are now represented as
4711         (set (reg ...) (call ...)), not just (call ...).
4712
4713         * *.md: Define a "call_value" insn pattern.
4714
4715         * tm-m68k.h, tm-vax.h, tm-ns32k.h: (NOTICE_UPDATE_CC):
4716         These insns invalidate the CC.
4717
4718         * local-alloc.c (combine_regs): #if 0 special treatment of
4719         function value hard reg.
4720         (wipe_dead_reg): If hard reg, call reg_is_born so that the death
4721         will not be ignored.
4722         (reg_is_set): For reg that dies in this insn, mark it dead from now on
4723         and post_mark it live after this insn only.
4724
4725         * combine.c (try_combine): Don't allow a call insn as I1 or I2.
4726
4727         * loop.c (count_loop_regs_set): Move CALL_INSN into a separate
4728         clause.  When finding regs that are function addresses, handle
4729         both old and new format call insns.
4730
4731         * flow.c (insn_dead_p): A SET that contains a CALL can't be dead.
4732         (volatile_refs_p): Any CALL constitutes a volatile ref.
4733         (mark_used_regs): If setting a reg from a volatile ref,
4734         treat it like setting a reg whose value will be used.
4735
4736         * expr.c (gen_call_1): New arg VALREG if nonzero means generate
4737         a call_value insn which stores in VALREG.
4738         (expand_call): Use `hard_function_value' to make the VALREG arg
4739         unless expression has type `void'.
4740
4741         * expr.c (emit_library_call): New 2nd arg OUTMODE is mode of result.
4742         (So can give gen_call_1 the proper value-register.)
4743         All callers (here and optabs.c) pass this arg.
4744
4745         * cse.c (canon_hash): Consider all CALL rtx's volatile.
4746
4747         ** end of change in representation of call insns.
4748
4749         * stmt.c (expand_asm_operands): Replace complex lvalues with
4750         SAVE_EXPRs here
4751         * typecheck.c (c_expand_asm_operands):  rather than here.
4752
4753         * typecheck.c (pointer_diff): Fix typo preventing use of FLOOR_DIV_EXPR
4754         when dividing by power of 2.
4755         (build_c_cast): Flush unused locals.
4756         (store_init_value): likewise.
4757         (process_init_constructor): Delete unused 4th arg `for_static'.
4758
4759         * toplev.c (fatal_io_error): Arg to fprintf was missing.
4760
4761         * tm-m68k.h (LEGITIMIZE_ADDRESS): Flush extra arg to `emit_move_insn'.
4762
4763         * decl.c: Delete some unused local vars.
4764
4765         * stor-layout.c (layout_decl): `packed_size' now unsigned.
4766
4767 Tue Mar 29 14:47:07 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4768
4769         * Version 1.19 released.
4770
4771         * loop.c (may_trap_p): Nonzero if X is a division that might trap.
4772         (scan_loop): If insn might trap, move only if loop always executes it.
4773
4774         * dbxout.c (dbxout_type): Never output a cross-ref for
4775         a type whose definition is known.  Sun dbx won't accept them.
4776
4777 Mon Mar 28 12:34:46 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4778
4779         * tm-vms.h (TARGET_DEFAULT): Default is PCC alignment.
4780         The VMS compile driver controls the real default.
4781
4782         * typecheck.c (c_expand_return): Don't ignore return value
4783         when its type is void.
4784
4785         * final.c (final): Forget the condition codes after an `asm'.
4786
4787         * typecheck.c (build_binary_op_nodefault): Warn about ptr < 0
4788         even if not pedantic, but not if traditional.
4789
4790         * typecheck.c (convert_for_assignment): Don't warn about
4791         pointers volatile * vs nonvolatile * if -fvolatile specified.
4792
4793         * decl.c (store_parm_decls): Among the old-style parm decls
4794         there can legitiately be other decls!  For example, if a parm
4795         is declared `enum {foo, bar} x;', there are decls for `foo' and `bar'.
4796         Don't let anything but a PARM_DECL match a parm name;
4797         pass all the other decls through into the lexical context.
4798
4799         * jump.c (jump_optimize): When deleting stack adjusts before a
4800         jump-to-return, don't be fooled by intervening NOTEs.
4801
4802         * tm-sequent.h (PRINT_OPERAND): Output (MEM (MEM (REG))) properly.
4803         * output-ns32k.c (print_operand_address): Output (MEM (REG))
4804         properly; output stack-pointer as `tos'.
4805
4806         * flow.c (find_use_as_address): Reject uses within operand 0
4807         of a ZERO_EXTRACT or SIGN_EXTRACT reference.  It's hard to reload
4808         an autoincrement inside these because they can refer to multiple bytes.
4809
4810         * reload.c (find_reloads): `o' in constraint means any memref
4811         (except auto-increment) is acceptable with reloading.
4812         Braino: Clear BADOP, not BAD.
4813
4814         * reload.c (push_reloads): Use rtx_equal_p (via macro MATCHES)
4815         when considering reuse of an old reload.  Otherwise equal values
4816         may get reloaded into different registers, and two MEMs that
4817         originally matched may fail to match once reloaded.
4818
4819         * m68k.md (sign_extract and zero_extract insns):
4820         If operand 0 is QI or HImode, don't allow register--only `o'
4821         (except in some bftst patterns where bitpos is < 8).
4822         And change `m' to `o' in all these patterns.
4823
4824 Sun Mar 27 15:32:54 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4825
4826         * expr.c (expand_expr, case CONSTRUCTOR):
4827         Not all aggregates are BLKmode; use the type's mode.
4828
4829         * gcc.c: Pass -y* to ld.
4830
4831         * cse.c (struct hash): New member `equivalence_only'.
4832         (insert): Initialize it.
4833         (cse_insn): Set it to 1 when src_eqv is inserted.
4834         When finding cheapest equivalent of something,
4835         skip elts that are marked with `equivalence_only'.
4836
4837         * decl.c (duplicate_decls): Don't call `layout_type'
4838         if the type is `error_mark_node'.
4839
4840         * decl.c (implicitly_declare): If decl will be file-scope,
4841         make sure it's a permanent node, and its associated data too.
4842
4843 Sat Mar 26 15:48:50 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4844
4845         * flow.c (insn_dead_p, mark_used_regs): Storing a reg via a
4846         ZERO_EXTRACT or SIGN_EXTRACT is dead if the reg isn't needed afterward.
4847
4848         * stmt.c (expand_start_function): Set current_function_name
4849         to the name of this function.
4850         * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Use current_function_name.
4851
4852         * expr.c (expand_increment): A SUBREG in op0 can also a be a copy.
4853
4854         * ns32k.md: Correct range of args for `adjspb' insn.
4855         Use `adjspw' when appropriate.
4856         New pattern for `lprd' insn.
4857         Change some `const_int' predicates to GET_CODE tests.
4858
4859         * expr.c (expand_call): Eval function before copying args to hard regs.
4860
4861         * tree.c (make_node, copy_node): Don't get length of a REAL_CST
4862         from tree_code_length.
4863
4864         * expmed.c (extract_fixed_bit_field): In memory-word case, abort
4865         if tm.h parms say word could fail to be well-aligned.
4866         * tm-ns32k.h: Define STRUCTURE_SIZE_BOUNDARY so they will be aligned.
4867         * tm-vax.h: Define STRUCTURE_SIZE_BOUNDARY since Unix CC seems to.
4868
4869         * tm-vms.h (CPP_PREDEFINES): Predefine __GNU__ and __GNUC__.
4870
4871 Fri Mar 25 13:23:27 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4872
4873         * gcc.c (main): Handle SIGHUP, SIGTERM.
4874
4875         * expmed.c (expand_bit_and): Don't clobber OP1 when trying andcb.
4876
4877 Thu Mar 24 21:59:09 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4878
4879         * stmt.c (assign_parms): Get size of BLKmode local from the type,
4880         not the mode.
4881         (expand_function_start): Init frame_offset before calling assign_parms.
4882
4883 Wed Mar 23 23:50:37 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4884
4885         * expr.c (emit_push_insn): When making a move insn,
4886         go via emit_move_insn; else fails to put constants into memory.
4887
4888 Tue Mar 22 15:45:10 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4889
4890         * expr.c (expand_increment): Flush special case for register_operand;
4891         actually call the predicate whatever it is.
4892
4893         * genemit.c (gen_expand): Make `operands' a local variable,
4894         not a global static one, in the `gen_...' function.
4895         Avoids lossage when one `gen_...' fcn calls another indirectly.
4896
4897         * genoutput.c (output_epilogue): Don't give printf a null string.
4898
4899 Mon Mar 21 15:41:42 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4900
4901         * expmed.c (store_bit_field) [HAVE_insv]:
4902         Force VALUE1, not VALUE, into a register.
4903
4904         * expmed.c (store_fixed_bit_field): Width of mask for clearing
4905         the bit-field depends on mode of OP0.
4906
4907         * ns32k.md (branch and store-flag insns):
4908         Test cc_prev_status, not cc_status.
4909
4910         * expmed.c (extract_bit_field): Delete unused var `omode'.
4911
4912         * dbxout.c (dbxout_type, dbxout_tag): Use the main variant
4913         of the specified type.
4914
4915         * reload.c (find_reloads): When an alternative succeeds without reload,
4916         initialize goal_alternative_matches from this_alternative_matches.
4917
4918 Sun Mar 20 17:58:00 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4919
4920         * tm-sun*.h: Don't predefine `m68k'; Sun's compiler does not.
4921
4922 Fri Mar 18 13:48:29 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4923
4924         * reload.c (find_reloads): Set up goal_alternative_matches
4925         *after* the label `finish'.
4926
4927         * stmt.c (assign_parms): GET_MODE_SIZE needs a mode, not an rtx.
4928
4929         * recog.c (constrain_operands): Set global var `which_alternative'
4930         to indicate which of the alternatives this insn matches.
4931
4932         * typecheck.c (commontype): long int vs unsigned int
4933         gives long unsigned, if long and int are the same width.
4934
4935 Thu Mar 17 15:39:45 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4936
4937         * emit-rtl.c, tree.c: include local version of varargs.h.
4938
4939         * decl.c (start_function): Clear TREE_EXTERNAL and set TREE_STATIC
4940         here rather than in finish_function.  Affects the case of
4941            `extern foo ();  static foo (a) {...}'
4942
4943         * gcc.c: Handle -fnostdinc and -fnostdlib switches in specs.
4944
4945         * cccp.c (main): Handle -fnostdinc: don't put default dirs
4946         on the chain to be searched.
4947
4948         * cccp.c (error, warning, error_with_line): No longer print
4949         charpos within file; lineno is enough.
4950
4951 Wed Mar 16 16:56:36 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4952
4953         * expmed.c (expand_inc, expand_dec): Handy new subroutines
4954         to generate x+=y or x-=y, given x and y as rtl.
4955         * expmed.c (expand_divmod): Use them instead of gen_{add2,sub2}_insn.
4956
4957         * expr.c (emit_move_insn): Return the move insn emitted.
4958         Eliminate the code here to move a DImode or DFmode by pieces.
4959
4960         * emit-rtl.c (emit_insn): Return-value was wrong if emit_to_sequence;
4961         cannot use `last_insn' in that case.
4962
4963         * regclass.c, stupid.c, local-alloc.c, global-alloc.c:
4964         Some vars of type HARD_REG_SET should be `register' only
4965         if HARD_REG_SET is a macro (ie a scalar).
4966
4967         * expr.c (move_block_from_reg): New function, converse of
4968         move_block_from_reg.
4969         * stmt.c (assign_parms): If a BLKmode arrives in regs,
4970         copy to a stack slot using move_block_from_reg.
4971
4972 Tue Mar 15 17:33:22 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
4973
4974         * regclass.c (regclass): Don't convert to two-operand insns
4975         unless optimizing.
4976
4977         * varasm.c (decode_rtx_const, const_hash_rtx): Fix typos.
4978
4979         * stmt.c (fixup_var_1): Don't alter insn moving VAR to or from
4980         a subreg of a register.
4981
4982         * cse.c (fold_rtx): Don't fold if result is not LEGITIMATE_CONSTANT_P.
4983         Construct all results in new local variable NEW; then test that
4984         and decide whether to return it or the original rtx.
4985
4986         * cse.c (cse_insn): When SRC_EQV is non-0 but set[0] has been
4987         cleared, don't insert SRC_EQV in hash table.
4988
4989         * All insns emitted by a define_expand become part of the SEQUENCE:
4990         * SEQUENCE now contains a vector of insns, not of bodies.
4991         * insn-emit.c (add_insn): If `emit_to_sequence' nonzero, add the
4992         insn to a separate chain, `sequence_first_insn'.
4993         (gen_sequence): Take everything on that chain and make a SEQUENCE.
4994         (emit_insn): Handle SEQUENCE differently since elts are now insns.
4995         (emit_insn_{before,after}): Handle SEQUENCE.
4996         (classify_insn): #if 0.
4997         * genemit.c (gen_expand): emit all the insns, then call gen_sequence
4998         to make the return value.
4999         Define two macros DONE and FAIL for use in a DEFINE_EXPAND:
5000         Use DONE to inhibit emission of the pattern of the DEFINE_EXPAND.
5001         Use FAIL to make the gen_... function return 0.
5002
5003 Mon Mar 14 12:47:28 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5004
5005         * expr.c (expand_expr): Extend the don't-sign-extend-enums hack
5006         to COMPONENT_REF.  (See 3 March.)
5007
5008         * tm-*.h (FUNCTION_ARG, etc.) New argument NAMED
5009         is nonzero for a named arg, zero for an anonymous extra arg.
5010         * expr.c (expand_call): Pass 1 for NAMED if appropriate.
5011         * expr.c (emit_library_call): Pass 1 for NAMED.
5012         * stmt.c (assign_parms): Pass 1 for NAMED.
5013
5014         * cccp.c: Test __GNUC__, not __GNU__.
5015
5016         * integrate.c (copy_and_substitute_rtx):
5017         Replacing a MEM parm with the parm value, convert mode if mismatch.
5018         Always use VOIDmode when generating SETs.
5019         Take heed of FIRST_PARM_OFFSET and distinguish arg-pointer
5020         from frame-pointer when they are different.
5021         (expand_inline_function): Handle (RETURN) insns, by creating a
5022         return_label which is output after the integrated code.
5023
5024         * parse.y (yylex): Condition for ignoring `inline' was backwards.
5025
5026         * flow.c (mark_used_regs): Ignore STRICT_LOW_PART, so that
5027         an insn that sets STRICT_LOW_PART (and its source values) may be dead.
5028         (propagate_block): Always pass 1 for strict_low_ok to insn_dead_p.
5029
5030         * optabs.c (emit_unop_insn): Don't make a REG_RETVAL note.
5031         Change above deletes dead STRICT_LOW_PART stores without one.
5032
5033         * optabs.c (expand_binop, expand_unop): If the library address
5034         is to be put in a pseudoreg, do it here, and make the REG_RETVAL
5035         note point after that.
5036
5037         * expr.c (emit_library_call): Never defer stack-pops.
5038         Deletion of the library call by flow.c loses if they are deferred.
5039
5040         * cse.c (cse_insn): Handling of 68k's zero-extend was broken:
5041         it made the actual source and the REG_EQUAL source equivalent.
5042         * If dest is a STRICT_LOW_PART, ignore the actual source and use
5043         the REG_EQUAL source in its place.  src_eqv's mode may be different
5044         from src's, so use proper mode in lookups or inserts for src_eqv.
5045         * Don't forget to set src_eqv_elt if src_eqv already has an elt.
5046         * On use_related_value for src_eqv, use src_eqv_elt.
5047
5048         * toplev.c (main_input_filename): Name of file mentioned in first
5049         #-line in the input.
5050         (compile_file): Pass it to dbxout_init as 2nd arg.
5051         * dbxout.c (dbxout_init): Use 2nd arg to make the N_SO symbol.
5052         * parse.y (check_newline): Store main_input_filename.
5053
5054         * expr.c (move_block_to_reg): New function, copies a MEM:BLK
5055         to consecutive registers.
5056         (use_regs): New function to emit a USE for each reg in a series.
5057         (expand_call): Use the two new functions when a precomputed BLKmode
5058         arg is passed entirely in regs.
5059         (emit_push_insn): Use move_block_to_reg when PARTIAL > 0.
5060         Also, don't subtract USED from SIZE twice.
5061         Use plus_constant to add ARGS_SO_FAR so can use indexing on stack ptr.
5062
5063         * varasm.c (assemble_integer_zero): Use rtx 0, not tree 0,
5064         to go with prev change in ASM_OUTPUT_INT.
5065
5066 Sun Mar 13 01:16:17 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5067
5068         * varasm.c (const_hash, compare_constant_1, record_constant_1):
5069         Handle NOP_EXPR and CONVERT_EXPR in constant expressions.
5070
5071         * optabs.c (expand_binop, expand_unop): When widening operands,
5072         those with VOIDmode (like CONST_INT) may be left alone.
5073
5074 Sat Mar 12 01:09:24 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5075
5076         * varasm.c (assemble_variable): When making a .comm or .lcomm,
5077         round size up to multiple of BIGGEST_ALIGNMENT.
5078
5079         * obstack.c (_obstack_newchunk): Eliminate fencepost causing copying
5080         to access the word past the end of the existing object.
5081
5082         * tm-vax.h, tm-ns32k.h: Define {INIT_,}CUMULATIVE_ARGS
5083         and upgrade FUNCTION_ARGS for new calling convention.
5084
5085         * gcc.c: If -O, define __OPTIMIZE__.
5086         (do_spec_1): %c now scans SIGNED_CHAR_SPEC: define __CHAR_UNSIGNED__
5087         when appropriate whether or not it is the default.
5088
5089 Fri Mar 11 16:49:25 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5090
5091         * parse.y: Define YYDEBUG.
5092
5093         * rtl.c (rtx_unstable_p): New function, same as old rtx_varies_p.
5094         * explow.c (stabilize): Use rtx_unstable_p.
5095         * rtl.c (rtx_varies_p): Ignore `unchanging' (undoing previous change
5096         in this function) because `unchanging' doesn't enable cse to compare
5097         the value with any particular constant value.
5098         * rtl.c (insn_store_addr_varies_p): Delete, since not used.
5099
5100         * hard-reg-set.h (COPY_HARD_REG_SET, etc.) non-scalar case:
5101         Rename and rearrange temp variables to avoid name conflicts with args.
5102
5103         * regclass.c (reg_class_record): Don't smash class to GENERAL_REGS
5104         and don't exit prematurely, when `r' or `g' is seen.  Must merge
5105         GENERAL_REGS with previously determined desired class.
5106
5107         * expr.c (expand_call) [no PUSH_ROUNDING]: When pushing the arg
5108         block, try to reuse some of the pending_stack_adjust.
5109
5110         * cse.c: qty_const can now hold values (PLUS frame_pointer integer).
5111         Effect is that storing into a structure doesn't invalidate
5112         mem refs to scalar stack variables via addresses in registers.
5113         (insert): Load such values into qty_const, like true constants.
5114         (fold_rtx): Ignore qty_const if it isn't really a constant.
5115
5116         * expr.c (expand_expr) VAR_DECL: Copy DECL_RTL before calling
5117         change_address, so it isn't permanently clobbered.
5118
5119         * stmt.c (fixup_var_refs_1): Make sure the stack slot address
5120         is valid by calling fixup_stack_1 each time it is substituted.
5121
5122         * stmt.c (fixup_stack_1): Return the altered rtx.
5123         If it's a MEM in the stack, return a copy of it.
5124
5125         * stmt.c (fixup_stack_slots): #if 0.
5126         * stmt.c (expand_finish_function): Don't call fixup_stack_slots
5127         because fixup_stack_1 is called elsewhere when necessary.
5128
5129         * reload.c (find_reloads_address): New arg is location of the MEM
5130         whose address is being reloaded.  So we copy the MEM if it
5131         is one that can be shared.  New arg 0 means no need to copy the MEM.
5132         All callers pass the new arg.
5133
5134         * stmt.c (assign_parms): Determine parm stack-size from
5135         the DECL_ARG_TYPE, not from the TREE_TYPE.
5136         Else loses when parm is declared `float' but passed as `double'.
5137
5138         * emit-rtl.c (make_safe_from): Constants are already safe.
5139         Use proper machine mode for temp reg when needed.
5140
5141 Thu Mar 10 14:35:14 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5142
5143         * expr.c (emit_push_insn): Don't pass wrong type to plus_constant
5144         (case where there is no PUSH_ROUNDING).
5145
5146         * expr.c (expand_call): Round partial[i] down to multiple of
5147         PARM_BOUNDARY before subtracting it from arg size on stack.
5148         Compute these sizes just once and keep them in vector `arg_size'.
5149         * expr.c (emit_push_insn): Handle `partial' uniformly, in accord
5150         with this new convention for how it affects the stack size.
5151         * stmt.c (assign_parms): Round NREGS down to PARM_BOUNDARY likewise.
5152
5153         * obstack.h (obstack_free macro) [Not __GNUC__ but __STDC__]:
5154         Don't cast result of (obstack_free) to (int); just ignore it.
5155
5156         * reload.c (find_reloads): Initialize operand_reloadnum.
5157
5158         * optabs.c (emit_unop_insn): New argument CODE, used to make
5159         a REG_EQUAL note from operand OP0 if more than one insn results.
5160         Also a REG_RETVAL note.
5161         * expr.c (convert_move): Pass CODE arg to emit_unop_insn.
5162         * flow.c (propagate_block): Use insn_dead_p to decide whether
5163         to handle a REG_RETVAL note by skipping some insns.
5164         Always pass 1 for STRICT_LOW_OK for an insn that has a REG_RETVAL note.
5165         Handle case where REG_RETVAL points at an insn that's deleted.
5166         * flow.c (insn_dead_p): New operand STRICT_LOW_OK says an insn
5167         that sets STRICT_LOW_PART may be considered dead.
5168
5169         * expr.c (expand_expr): Once again canonicalize X-C to X+(-C).
5170         Change on March 1 made it stop doing this.
5171
5172 Wed Mar  9 01:25:35 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5173
5174         * loop.c (move_movables): Don't always mark the moved reg
5175         as equivalent to a constant value: not if it is being cleared
5176         to zero-extend something or if it is used outside the loop.
5177
5178         * expr.c (move_by_pieces_1): Finish last change.
5179
5180         * stmt.c (assign_parms): Update stack_args_size properly.
5181         Figure FIRST_PARM_OFFSET when making the stack mem refs.
5182
5183         * cse.c (insert): Build the related_value lists in the opposite order
5184         so that the oldest element in the chain is the one that follows
5185         the most basic element.
5186
5187         * expr.c (expand_expr): COMPONENT_REF case: criterion for
5188         converting the the result is if MODE1 (its mode of arrival) isn't
5189         a mode we want.
5190
5191         * toplev.c (rest_of_compilation): Fix typo setting TREE_ASM_WRITTEN.
5192
5193 Tue Mar  8 13:18:37 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5194
5195         * cse'ing of library calls.
5196
5197         * expr.h: type `optab' is now a ptr to a struct.
5198         The old contents are now the `handlers' element.
5199         The `code' element gives the RTL code for the kind of expression
5200         this optab makes (PLUS for add_optab, etc.)
5201         Every var formerly declared `struct optab *' is now just `optab'.
5202
5203         * optabs.c (init_optab, init_optabs): New function to init an optab
5204         and set its `code'.  Used in init_optabs.
5205
5206         * optabs.c (expand_binop, expand_unop): Use the `code' field
5207         to add a REG_EQUAL note to the insn that copies a libcall's
5208         value into a pseudo.  Also a REG_RETVAL note pointing at the
5209         first insn for setting up args for the call.
5210
5211         * cse.c (cse_insn): Process REG_EQUIV and REG_EQUAL datum almost like
5212         another set-src; put the actual src into the equivalence class of that.
5213
5214         * flow.c (propagate_block): If a dead insn has a REG_RETVAL reg-note,
5215         either ignore or delete all the insns back to the insn the REG_ARG
5216         note points to.
5217
5218         * local-alloc.c (block_alloc): Don't refrain from allocating a
5219         "constant" register if the constant value isn't ok for an immediate op.
5220
5221
5222         * dbxout.c (CONTIN): If DBX_CONTIN_LENGTH is <= 0, do nothing.
5223
5224         * cccp.c: Extra default include dirs for C++.
5225         * cccp.c (main): For -M, strip dirs from object file name.
5226
5227         * rtl.c (find_reg_note): New function.
5228
5229         * expmed.c (store_fixed_bit_field): Don't AND with VALUE
5230         if VALUE's original mode had no more bits than we want.
5231
5232         * expr.c (emit_library_call): Use varargs.
5233
5234         * integrate.c (copy_and_substitute_rtx): Recognize arg_pointer_rtx
5235         and translate it just like frame_pointer_rtx.
5236
5237 Mon Mar  7 00:48:33 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5238
5239         * expmed.c (extract_fixed_bit_field):
5240         Shift counts were wrong for narrow MODE in signed case.
5241         Do the sign-extending shifts in the narrowest mode possible.
5242         Reduce big-endian case to little-endian case.
5243         Delete SLOW_ZERO_EXTEND conditional.
5244
5245         * Implement constants in memory for RISC machines
5246         with limited abilities for immediate args and constant addresses.
5247
5248         * genoutput.c (output_epilogue): Empty predicate-name
5249         is output as 0 in insn_operand_predicate.
5250
5251         * expr.c (expand_expr): Change 4th arg to an `enum expand_modifier'
5252         Value EXPAND_SUM corresponds to old nonzero 4th arg.
5253         Value EXPAND_CONST_ADDRESS means ok to return an invalid MEM
5254         whose address is a constant.  Changes for this case in ADDR_EXPR,
5255         COMPONENT_REF and ..._DECL.
5256
5257         * varasm.c (output_arith_constant): Function deleted.
5258         * tm-*.h: (ASM_OUTPUT_{INT,SHORT,CHAR}): 2nd arg is now an RTX
5259         and output it using `output_addr_const'.
5260         * varasm.c (output_constant): Change uses of those macros.
5261
5262         * varasm.c (init_const_rtx_hash_table): Initialize constant pool
5263         for a new function.  Called from `expand_function_start'.
5264         * varasm.c (force_const_mem): Turn a constant rtx into a MEM rtx
5265         which refers to the constant pool.  Other new subroutines too.
5266         (force_const_double_mem): Use force_const_mem to make the MEM.
5267         (immed_real_const): No longer record the REAL_CST node in the rtx.
5268
5269         * explow.c (force_reg): If arg is a constant and not legitimate,
5270         put it in the constant pool with force_const_mem.
5271         Mark the register as equivalent to the constant value.
5272         * expr.c (emit_move_insn): Likewise.
5273         * explow.c (break_out_mem_refs): Use force_reg to put into a reg.
5274         * explow.c (memory_address): Likewise.
5275         * expr.c (expand_expr): ADDR_EXPR case: likewise.
5276
5277         * expr.c (expand_call): Do force_reg on each register-operand
5278         so it will go through a pseudo and can be cse'd.
5279
5280         * recog.c (immediate_operand, nonmemory_operand, general_operand):
5281         For constant operands, use LEGITIMATE_CONSTANT_P to decide value.
5282         * tm-*.h: Define LEGITIMATE_CONSTANT_P.
5283
5284         * reload1.c (reload): Invalid constants can't go in reg_equiv_constant.
5285
5286 Sun Mar  6 22:49:06 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5287
5288         * reload.c (push_reloads): If IN occurs within OUT,
5289         don't reuse an existing input-only reload.  Otherwise would lose on
5290         (set (mem (plus R C)) (plus R C1)) if R is available in a spill reg.
5291
5292         * reload1.c (choose_reload_targets): Don't choose an inherited
5293         reload register that's in use for another reload.
5294         Without this, above change doesn't have an effect.
5295
5296         * Implement the `unchanging' flag in MEM and REG rtx's.
5297         Also simplify code with a new subroutine `change_address'.
5298
5299         * emit-rtl.c (change_address): Return new memory ref like an old
5300         one but with specified mode and address.
5301         * expmed.c (extract{,_split,_fixed}_bit_field): Use change_address.
5302         (store{,_split,_fixed}_bit_field): Likewise.
5303         * expr.c (store_expr, expand_expr): Likewise.
5304
5305         * expr.c (move_by_pieces): Args now memrefs, not addresses.
5306         Eliminate the FROM_VOL and TO_VOL args since the memrefs indicate.
5307         Change the structure `struct move_by_pieces' similarly.
5308         (move_by_pieces_1): Same changes; use change_address.
5309         (emit_block_move, emit_push_insn): Calls to move_by_pieces changed.
5310
5311         * integrate.c (copy_rtx_and_substitute): Use change_address;
5312         handle ->unchanging field.
5313
5314         * rtl.c (rtx_varies_p): Regs or memrefs with ->unchanging don't vary.
5315         (copy_rtx): Perserve ->unchanging.
5316         (print_rtx): Print ->unchanging as /u.
5317
5318         * stmt.c (expand_decl): Set ->unchanging on `const' decls.
5319         (fixup_memory_subreg): Use change_address.
5320         (assign_parms): Record in the rtl which parms are volatile or const.
5321
5322         * varasm.c (assemble_variable): Set ->unchanging on `const' decls.
5323         (output_constant_def): Always set ->unchanging for constant refs.
5324
5325         * cse.c (canon_hash): Don't treat a MEM as "in memory"
5326         if its ->unchanging bit is set.
5327
5328         * loop.c (invariant_p): A REG or MEM with ->unchanging is invariant
5329         (for a MEM, the address must be invariant).
5330
5331 Sat Mar  5 13:22:11 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5332
5333         * genconfig.c (walk_insn_part): DO consider MATCH_DUPs
5334         when calculating MAX_RECOG_OPERANDS.
5335         (gen_expand): define_expand is now different from define_insn.
5336         Compute max # SETs or CLOBBERs for any one sub-insn in a define_expand,
5337         instead of summing them all.  And don't count the MATCH_DUPs at all.
5338
5339         * genemit.c (max_operand_1): Record largest opno in a MATCH_DUP
5340         separately from largest in a MATCH_OPERAND.
5341         (gen_expand): An operand # with only MATCH_DUPs gets
5342         a local variable in the gen_ function we output.
5343
5344         * integrate.c (save_for_inline): Delete vestige of NOTE_INSN_IS_DECL.
5345
5346         * cse.c (invalidate): Handle subregs.
5347         (cse_ins, invalidate_from_clobbers): Do call `invalidate' for subregs.
5348         (insert_regs): When assigning one subreg from a like one,
5349         make the two regs equivalent.
5350         (cse_insn): Do call insert_regs when dest is a subreg.
5351
5352         * expr.c (expand_call): Precompute all args going via hard regs
5353         since even arithmetic could require a library call.
5354
5355 Fri Mar  4 15:48:17 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5356
5357         * stor-layout.c (layout_parms): Function deleted.
5358         * stmt.c (expand_function_start): Don't call it.
5359
5360         * stmt.c (assign_parms):
5361         stack_args_size counts size of args so far passed on stack.
5362         Use PARM_BOUNDARY when counting it; derive stack offsets from it.
5363         Set current_function_args_size from it.
5364
5365         When an arg is split between regs and stack, make stack space
5366         for the rest of it, and count it.
5367         In a varargs function, push the last arg onto the stack.
5368         When an arg is passed in regs alone, don't remember a stack slot
5369         for it, and if it needs one, use assign_stack_local.
5370
5371         Set DECL_OFFSET to the stack offset, or -1 if parm came in regs.
5372
5373         * expr.c (expand_call): Anonymous args of a varargs function
5374         are always passed on the stack.
5375
5376         * varasm.c (force_const_double_mem): Copy the MEM rtx
5377         if it may need to be smashed by reloading.
5378
5379         * genemit.c (gen_expand): define_expand must have nonempty pattern
5380         even though, due to `return' statements in the code-to-run,
5381         that pattern may not be used to generate code.
5382
5383 Thu Mar  3 17:08:43 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5384
5385         * expr.c (expand_expr): If supposed to sign-extend an enum
5386         which is never negative, zero-extend instead (unless SLOW_ZERO_EXTEND).
5387         (store_expr): Likewise.
5388
5389         * reload.c (find_reloads): 'm' for CONST_DOUBLE: clear BADOP, not BAD.
5390         After force_const_double_mem, do find_reloads_toplev on the MEM.
5391         (find_reloads_address): Handle constant addresses (on machines
5392         that don't allow them).
5393
5394         * final.c (set_current_gdbfile): New fn, get the gdbfile structure
5395         for specified filename.
5396         (output_source_line): Use set_current_gdbfile for the file.
5397         * varasm.c (assemble_variable): Call set_current_gdbfile
5398         for the declaration's source file, so GDB won't ignore the file.
5399
5400         * varasm.c (force_const_double_mem): Build a new REAL_CST node
5401         and get its data type from the machine mode of the CONST_DOUBLE.
5402         (immed_real_const): Don't save the REAL_CST tree node.
5403         * typecheck.c (get_floating_type): Return float type for given mode.
5404
5405         * integrate.c (expand_inline_function): Ignore the (USE (REG...))
5406         (for the return-register) at the end of the inline function.
5407         After a CALL_INSN, imagine the (SET (REG ...) (REG ...)) for
5408         the return-register if the return-register isn't explicitly used.
5409
5410 Wed Mar  2 22:08:49 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5411
5412         * typecheck.c (build_array_ref): Do default_conversion on INDEX.
5413
5414 Tue Mar  1 15:49:34 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5415
5416         * expr.c (expand_call): Always get a SYMBOL_REF for a fixed function.
5417         If may be alloca, set may_call_alloca.
5418         (gen_call_1): Never put a SYMBOL_REF through `memory_address';
5419         but if function cse is wanted, just copy it to a register.
5420         If NO_FUNCTION_CSE is defined, never do function cse.
5421
5422         * expr.c (init_expr): New function, does init_queue and inits
5423         other things.
5424
5425         * stmt.c (expand_function_start): Call init_expr, not init_queue.
5426
5427         * optabs.c (expand_binop): Don't clobber OP0 and OP1
5428         if may call delete_insns_since later.
5429
5430         * expr.c (emit_library_call): PUSH_ARGS_REVERSE test was backwards.
5431
5432         * cse.c (cse_insn): Do canon_reg on the size and position operands
5433         in a ZERO_EXTEND or SIGN_EXTEND that is a destination.
5434
5435         * tm-*.h: Define SLOW_BYTE_ACCESS.
5436         * expmed.c ({store,extract}_fixed_bit_field):
5437         If SLOW_BYTE_ACCESS, get/set all bit fields from full words.
5438
5439         * combine.c (subst): Simplify
5440         (zero_extend:SI (subreg:QI (zero_extract ...))).
5441         * combine.c (simplify_and_const_int): Simplify
5442         (and (zero_extract ...) (const_int ...)).
5443
5444         * local-alloc.c (qty_compare{,_1}): Test of qty_phys_sugg was reversed.
5445         (combine_regs): If one pseudo gets two suggested hard regs
5446         (one at birth and one at death), prefer the one from birth
5447         unless we see at death that it's no good.
5448
5449         * expr.c (expand_expr): Ignore sum_ok unless mode is Pmode.
5450         Don't use force_operand unless sum_ok is set.
5451
5452 Mon Feb 29 19:23:50 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5453
5454         * expr.c (emit_move_insn): When a CONST_DOUBLE needs moving
5455         by pieces, force it into memory, unless it is dconst0_rtx,
5456         in which case each piece is const0_rtx.
5457         (emit_push_insn): Likewise.  Also, write code for pushing a
5458         non-BLK mode which has no "mov" insn defined, but only
5459         in the case where there is no PUSH_ROUNDING.
5460
5461         * expr.c (do_tablejump): Put constant term in address last.
5462
5463         * toplev.c (xrealloc): On error, call fatal instead of abort.
5464
5465         * optabs.c (emit_cmp_insn): If genning from tst_optab,
5466         make the operand fit its predicate.
5467
5468         * optabs.c (expand_float): Don't adjust stack between cmp and jump.
5469
5470         * optabs.c (expand_binop): Recursive calls can return 0; handle
5471         that event by deleting any preparatory insns.  Also don't smash
5472         TARGET when this happens.
5473
5474         * reload.c (push_reload): If IN != *INLOC, set reload_nocombine.
5475         (combine_reloads): Don't combine an input reload with reload_nocombine.
5476
5477         * jump.c (jump_optimize): Don't delete stack adjusts unless
5478         EXIT_IGNORE_STACK is nonzero.
5479         * expr.c (clear_pending_stack_adjust): Likewise.
5480         * tm-*.h: When EXIT_IGNORE_STACK is defined, give it `1' as defn.
5481
5482         * expr.c (expand_call): Initialize args_size.
5483         Don't push a block if args_size is 0.
5484         (emit_library_call): Don't include register-args (or reg-parts
5485         of partial ones) in args_size.
5486         Don't push a block if args_size is 0.
5487
5488         * expr.c (expand_expr): For DECLs in memory, check the address
5489         validity with memory_address_p, and preserve volatility info.
5490
5491         * stmt.c (expand_function_end): fixup_gotos needs 2 args.
5492
5493         * jump.c (mark_jump_label): If INSN is 0, don't set its JUMP_LABEL.
5494         Inside an ADDR_VEC or ADDR_DIFF_VEC, recurse with 0 for INSN.
5495
5496         * varasm.c (force_const_double_mem): Must zero TREE_CST_RTL
5497         before output, or nothing will happen.
5498
5499 Sun Feb 28 01:08:53 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5500
5501         * optabs.c (emit_unop_insn): Generate and emit an insn
5502         given the insn-code and the two operands (one out, one in).
5503         Can move the operands into registers when needed for various
5504         reasons.
5505         * expr.c (convert_move): Use emit_unop_insn for outputting the
5506         conversion insns.
5507
5508         * expr.c (emit_library_call): Use arg's nominal mode to choose
5509         a reg to pass it in, not actual mode (which can be VOIDmode).
5510
5511         * insn-emit.c (emit_insn): If arg is empty SEQUENCE, do nothing.
5512
5513         * genemit.c (gen_expand): Scan the rtl-pattern for predicates
5514         and machine modes of the operands.
5515
5516         * m68k.d (dbra patterns): Add HPUX_ASM conditionals.
5517
5518         * rtl.c (reg_mentioned_p): Use "equal", not "eq", when
5519         REG isn't a register.
5520         * reload.c (combine_reloads): Verify not reg_mentioned_p even if
5521         the input reload's value isn't a register.
5522
5523         * reload.c (operands_match_p): If successful and 2nd arg
5524         has a pre-increment that matches a non-increment, return 2.
5525
5526         * reload1.c (reload): At end, clobber a pseudoreg to a MEM
5527         even if it's an out-of-range address.  It doesn't affect the
5528         assembler code in this case, but it makes the dbx output correct.
5529
5530         * recog.c (constrain_operands): When operands_match_p returns 2,
5531         in the constraint alternative that is ultimately successful,
5532         copy the output operand from the input that it matched
5533         so that the assembler insn that is output shows the pre-increment.
5534
5535 Sat Feb 27 15:16:47 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5536
5537         * combine.c (subst): When optimizing
5538         (set (zero_extract ...) (and (zero_extract ...) const))
5539         must arrange to have 1's, not 0's, shifted into low bits of const.
5540
5541         * decl.c (grokdeclarator): When return-type defaults to int,
5542         don't warn, just set warn_about_return_type.
5543         (start_function): See that variable and warn, after starting function.
5544
5545         * toplev.c (count_error): No longer print newline if not quiet.
5546         (report_error_function): If not quiet, print a newline if
5547         printing anything, and don't print the function name.
5548
5549         * reload1.c (choose_reload_targets):
5550         Fix the loop that checks for consecutive available spill regs.
5551         Set `have_groups' nonzero if any reload wants a group.
5552         In that case, for non-group reloads, prefer a reg that can't be in
5553         group, or else one that has only one available neighbor.
5554
5555         * reload1.c (reload): Find separately the max need for each class
5556         for single registers, groups of registers, and single registers
5557         not in any group.  (The last one counts non-group reloads
5558         in insns that have at least one group reload.)
5559         Then make sure enough of each kind are found.
5560
5561         * expmed.c: Now needs flags.h and recog.h (therefore insn-config.h).
5562
5563         * expmed.c (store_bit_field):
5564         Delete redundant protect_from_queue.
5565         Force VALUE out of memory if -fforce-mem.
5566         If insv's predicate for VALUE wants a register, put it there.
5567
5568         * expmed.c (extract_bit_field):
5569         Force TARGET out of memory if -fforce-mem.
5570         If insv's predicate for TARGET wants a register, put it there.
5571
5572 Fri Feb 26 00:12:48 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5573
5574         * reload1.c (eliminate_frame_pointer): Don't check for pushes
5575         unless PUSH_ROUNDING is defined.
5576
5577         * reload.c: Don't define REG_OK_FOR_{INDEX,BASE}_P
5578         (since the tm file is supposed to do it).
5579
5580         * expr.c (emit_push_insn, expand_call):
5581         Don't use PUSH_ROUNDING if it's not defined.
5582
5583         * expr.c (preexpand_calls): Do nothing for constants and decls.
5584
5585         * expr.c (expand_call, emit_library_call): When PUSH_ROUNDING
5586         is not defined, use ROUND_CALL_BLOCK_SIZE to round the size
5587         of the block of arguments.
5588
5589         * expr.c (expand_call): Don't count register-args in ARGS_SIZE.
5590
5591         * rtl.h, emit-rtl.c: Create static_chain_incoming_rtx
5592         and struct_value_incoming_rtx.
5593         * stmt.c (expand_function_start): Use ..._incoming_rtx where needed.
5594
5595         * expr.c (expand_call): Use new macros INIT_CUMULATIVE_ARGS,
5596         CUMULATIVE_ARGS and FUNCTION_ARG_ADVANCE to update data
5597         on args scanned so far.
5598         (emit_library_call): Likewise.
5599         * stmt.c (assign_parms): Likewise.
5600         * tm-spur.h, tm-m68k.h: Define these macros.
5601
5602         * rtl.h (NUM_MACHINE_MODES): NUM_MACHINE_MODE renamed.
5603         * rtl.c, genrecog.c: Change places it is used.
5604
5605         * cccp.c (output_line_command): line_cmd_buf should be chars, not ints.
5606
5607 Thu Feb 25 13:33:29 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5608
5609         * genemit.c (gen_expand): Don't lose if pattern is empty-vector.
5610
5611         * genconfig.c (gen_insn): Don't lose if pattern is empty-vector.
5612
5613         * expr.c (expand_expr): For COMPONENT_REF, don't convert to tmode
5614         unless the mode we get is unacceptable.
5615
5616         * loop.c (scan_loop, move_movables): New field `partial' is 1 for
5617         zero-extending clr insn; don't make the reg invariant when it's moved.
5618
5619         * optabs.c (expand_unop, expand_binop, emit_cmp_insn):
5620         mode-argument to predicates was missing.
5621
5622         * optabs.c (expand_binop): If gen-function returns 0, this means
5623         the insn wasn't available.
5624
5625         * reload.c (find_reloads): Don't make optional reloads for operands
5626         that match other operands.
5627
5628         * reload.c (combine_reloads): Reject optional output reload.
5629
5630         * reload.c (find_equiv_reg): Know that CALL_INSNs clobber memory.
5631
5632         * typecheck.c (build_binary_op_nodefault):
5633         If doing a short shift, leave the shift-count as a fullword.
5634
5635 Tue Feb 23 14:43:46 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5636
5637         * combine.c (subst): Count, in n_occurrences, # times FROM is seen.
5638         (try_combine): Refuse to combine x=*y++ into z = x*x.
5639
5640         * loop.c (invariant_p): Frame pointer and arg pointer are invariant.
5641         (move_movables): Don't forget to set ->done!
5642         When moving the matching movables, don't forget to set n_times_set.
5643
5644         * expmed.c (expand_shift): Reorder strategies for logical shift;
5645         if widening, try all ashift strategies before extzv.
5646
5647         * typecheck.c (build_binary_op_nodefault):
5648         Always return error_mark if either operand is one.
5649
5650         * recog.c (nonmemory_operand): New predicate.
5651
5652         * optabs.c (expand_unop, expand_binop, emit_cmp_insn):
5653         Don't treat `register_operand' as special.  Apply the predicate
5654         to the rtx; if the predicate fails, use a register instead.
5655
5656 Mon Feb 22 22:37:32 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5657
5658         * expr.c (expand_calls): Preexpand all calls in arguments
5659         that are passed in regs before copying any of them into the regs.
5660
5661         * expr.c (emit_push_insn): Three more args.
5662         EXTRA for extra space to leave.
5663         ARGS_ADDR and ARGS_SO_FAR for using move-insns on machines
5664         that lack true push insns.
5665
5666         * expr.c (emit_library_call, expand_call):
5667         Use the new arguments of `emit_push_insn'.
5668
5669         * expr.c (PUSH_ARGS_REVERSED): defined if handle args last-to-firs.
5670
5671 Sun Feb 21 12:17:59 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5672
5673         * toplev.c (rest_of_compilation): Set TREE_ASM_WRITTEN
5674         when a function is really output as assembler code.
5675         Don't do inlining of a function that is already made inline;
5676         instead, output it as assembler code, because this must be
5677         the second call for that function.
5678
5679         * decl.c (finish_compilation): Delete it.
5680         * toplev.c (compile_file): Output pending inline functions at the end
5681         in the same way tentative-defined variables are output.
5682
5683         * emit-rtl.c (restore_reg_data): New fn: given chain of insns,
5684         restore emit-rtl's data on registers from the regs they use.
5685
5686         * integrate.c (output_inline_function): Use restore_reg_data.
5687         (fill_regno_reg_rtx_as_needed): Now restore_reg_data_1 in emit-rtl.c.
5688
5689         * tree.c (build_decl): Function moved from decl.c.
5690         No longer set attributes of function decls specially.
5691
5692         * decl.c (implicitly_declare, builtin_function, grokdeclarator):
5693         Don't expect build_decl to set attributes of FUNCTION_DECL.
5694
5695         * tree.c (preserve_data): New fn, make all data now on
5696         maybepermanent_obstack last permanently.
5697
5698         * cse.c (cse_insn): Remove a STRICT_LOW_PART from the dest rtx
5699         before putting it in the hash table.
5700
5701         * symout.c (symout_block): Fix the args to `symout_block_symbols'.
5702
5703 Sat Feb 20 00:07:52 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5704
5705     Start of changes for inline functions.
5706     Changes received from Tiemann, then slightly rearranged for simplicity.
5707
5708         * integrate.c: New file (Tiemann's rtl2.c).
5709         * integrate.c (function_cannot_integrate_p):
5710         New fn, only checks whether current fn is safe and good to inline.
5711         Returns an error message string if not.
5712
5713         * expr.c (current_args_size): Var made static.
5714         (store_expr): Fn no longer static.
5715         (stack_pointer_rtx): Use this var for all refs to the stack pointer.
5716         (struct_value_rtx, static_chain_rtx): Likewise
5717
5718         * expr.c (expand_call): Detect calls to integrable functions
5719         and integrate them.
5720         **If fn is not named "alloca" then assume it is not `alloca'. **
5721
5722         * emit-rtl.c (max_label_num): New fn, returns number for next label.
5723         (get_first_label_num): New fn, returns first label of current fn.
5724         (init_emit): Save first label number of this fn.
5725
5726         * emit-rtl.c (gen_inline_header_rtx): New fn, make an INLINE_HEADER.
5727
5728         * emit-rtl.c (emit_declaration): New fn to emit new kind of NOTE.
5729
5730         * emit-rtl.c (init_emit_once): New fn.
5731         Move inits of unique rtl objects here, from init_emit.
5732
5733         * decl.c (finish_compilation): New fn to compile separately
5734         any nonglobal inline functions that need to be addressable.
5735
5736         * decl.c (grokdeclarator): Handle `inline' kwd among the declspecs.
5737         Set TREE_INLINE if it's safe.
5738
5739         * decl.c (finish_function): If fn was inlined, don't clear
5740         the DECL_ARGUMENTS or DECL_RESULT or DECL_INITIAL.
5741
5742         * gen*.c: Provide rtl_obstack, not current_obstack.
5743
5744         * rtl.c (rtl_obstack): Variable: ptr to obstack to use for making rtl.
5745         * rtl.c (rtx_alloc, rtvec_alloc): Use that obstack.
5746         * rtl.c (copy_rtx): Copy the `integrated' flag.
5747         * rtl.c (print_rtx): Print that flag as `/i'.
5748
5749         * rtl.def: New rtx code INLINE_HEADER.
5750
5751         * rtl.h (struct rtx_def): Add `integrated' field.
5752         * rtl.h: Define macros for fields in an inline_header rtx.
5753
5754         * stmt.c (max_parm_reg_num, get_first_function_insn):
5755         New fns, return info on parm regs and the insns that init them.
5756
5757         * stmt.c (expand_decl): Simplify with new local `type'.
5758
5759         * stmt.c (stack_pointer_rtx): Replace all refs to stack pointer
5760         with this shared rtx.
5761         * stmt.c (struct_value_rtx): Likewise.
5762
5763         * stmt.c (expand_start_function): Call init_pending_stack_adjust
5764         instead of clear_pending_stack_adjust.
5765         If not using a return-label, set `return_label' to 0.
5766
5767         * stmt.c (expand_null_return, expand_end_function):
5768         Call clear_pending_stack_adjust unconditionally.
5769
5770         * expr.c (clear_pending_stack_adjust): Move the conditionals here.
5771         For now, this fn is a no-op, since it's not safe in an inline fn
5772         and the stack adjusts are deleted by jump.c in if optimizing.
5773
5774         * expr.c (init_pending_stack_adjust): New fn.
5775
5776 Fri Feb 19 14:30:13 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5777
5778         * toplev.c (main): Decode -finline-functions, -fkeep-inline-functions.
5779
5780         * toplev.c (rest_of_compilation):
5781         At start, save the rtl if function should be inline.
5782         For inline function, if we don't yet know whether it should be
5783         compiled on its own, don't do so.
5784
5785         * toplev.c (compile_file): Clear, and later print, `integration_time'.
5786         Call `init_emit_rtl' when starting.
5787         Call `finish_compilation' at the end.
5788
5789         [Add an extra arg to the error and warning functions?]
5790
5791         * tree.c ({push,pop,clear}_momentary):
5792         Change momentary_stack from a char ** to a struct momentary_level *.
5793
5794         * tree.c (build_pointer_type): Put temporary type in `saveable_obstack'
5795         * tree.c (build_type_variant): Likewise.
5796         * tree.c (make_node): Likewise.  Also put decls and LET_STMTs there.
5797         * tree.c (type_hash_canon): Free a temporary type in `saveable_obstack'
5798
5799         * tree.c (perm_tree_cons): Like `tree_cons' but on perm. obstack.
5800
5801         * tree.c (init_tree, {{end_,}temporary,permanent}_allocation):
5802         Handle `maybepermanent_obstack' and `saveable_obstack' and
5803         `rtl_obstack'.
5804
5805         * tree.h (TREE_INLINE): New attribute macro.
5806         * tree.h (DECL_SAVED_INSNS, DECL_FRAME_SIZE):
5807         New components in a FUNCTION_DECL.
5808         Delete the `unused` slot in a `struct tree_decl'.
5809
5810         * typecheck.c (mark_addressable): Set TREE_ADDRESSABLE
5811         even in FUNCTION_DECLs.
5812
5813         * typecheck.c (build_function_call):
5814         If function is a FUNCTION_DECL, avoid setting TREE_ADDRESSABLE
5815         when taking its address.
5816
5817         * parse.h: Define RID_INLINE.
5818         * parse.y: Define keyword `inline'; set up ridpointers for it.
5819         (yylex): Don't recognize `inline' of -fno-asm or -ftraditional.
5820
5821         * flags.h: New vars flag_inline_functions
5822         and flag_keep_inline_functions.
5823
5824   End of changes for inline functions.
5825         
5826         * tree.c (convert): If EXPR's type is an error_mark, return error_mark.
5827
5828         * Makefile (install): Don't strip the executables.
5829
5830         * jump.c (delete_insn): Deleting a label's target
5831         can delete either NEXT and PREV!  So must search for a
5832         following nondeleted insn to return.
5833
5834         * typecheck.c (build_function_call): Typo in validating
5835         data type of function.
5836
5837         * genoutput.c (gen_expand): Must create a `struct data' even
5838         for a define_expand, so we can output the proper insn_gen_function
5839         and leave zeros in the other tables.
5840
5841         * loop.c (scan_loop): Replace the code for handling zero-extends
5842         with unconditional code that checks for a pair of insns.
5843
5844         * m68k.md: Do zero-extend using define_expand to generate
5845         a pair of insns, to set all to zero and then copy the low part.
5846
5847 Thu Feb 18 15:54:00 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5848
5849         * emit-rtl.c (emit_insn): If arg is a SEQUENCE, emit several insns.
5850         * emit-rtl.c (classify_insn): Given an RTX, return the rtx-code for
5851         an insn containing it: CODE_LABEL, INSN, JUMP_INSN or CALL_INSN.
5852
5853         * rtl.def: New RTX types DEFINE_EXPAND and SEQUENCE.
5854         * gen*.c: Handle DEFINE_EXPAND.  Only genemit.c does real work.
5855
5856         * make.com, make-cc1.com, make-cccp.com: New, VMS command files.
5857
5858         * tm-vms.h: New file, used as tm.h to generate VMS code.
5859
5860         * tm-vax.h (FUNCTION_PROLOGUE): Turn off no bits in the mask;
5861         let call_used_registers alone control this.
5862         Call MAYBE_VMS_FUNCTION_PROLOGUE, and define that as no-op.
5863
5864         * tm-vax.h (TARGET_VAXC_ALIGNMENT): New target-flag bit.
5865         BIGGEST_ALIGNMENT, EMPTY_FIELD_BOUNDARY and POINTER_BOUNDARY use it.
5866
5867         * varasm.c (assemble_function): Use ASM_DECLARE_FUNCTION_NAME
5868         if it is defined.
5869
5870         * varasm.c (assemble_variable): On an external,
5871         use ASM_OUTPUT_EXTERNAL if defined.  Default is do nothing, as before.
5872
5873         * toplev.c:
5874         Use FATAL_EXIT_CODE and SUCCESS_EXIT_CODE.
5875         Don't include time.h and resource.h on VMS.
5876         (main) Define __VERSION__ if not already defined.
5877         Conditionalize setrlimit on RLIMIT_STACK.       
5878         Test __GNUC__, not __GNU__.
5879         Don't do `ps v' on VMS.
5880         (gettime): Conditional code for VMS.
5881
5882         * gcc.c: Define __GNUC__ as well as __GNU__.
5883         __GNU__ will be deleted in a future version.
5884
5885         * symout.c (symout_finish) [VMS]: Don't refer to `getwd' on VMS.
5886         * symout.c (symout_init) [VMS]: Fatal error; GDB syms not supported.
5887
5888         * parse.y (yylex): Handle DOLLARS_IN_IDENTIFIERS.
5889
5890         * genoutput.c (gen_insn): Workaround for VMS printf %s bug.
5891
5892         * gen*.c: Include config.h.  Whenever exiting, use
5893         SUCCESS_EXIT_CODE or FATAL_EXIT_CODE.
5894
5895         * config-*.h: Define SUCCESS_EXIT_CODE and FATAL_EXIT_CODE.
5896         * config-vms.h: New file, mostly like config-vax.h.
5897
5898 Wed Feb 17 13:35:34 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5899
5900         * cccp.c: VMS support from Kashtan.
5901         Some #include files are conditional.
5902         Use file_size_and_mode instead of fstat.
5903         When reading file contents, the size we get from that
5904         is just an upper bound; don't assume it must match.
5905         Replacement definitions of read and write for VMS.
5906         Different default include directories.
5907         Conditionalize the setrlimit code on RLIMIT_STACK.
5908         Use SUCCESS_EXIT_CODE when exiting if no errors;
5909         both that and FATAL_EXIT_CODE are not #defined if already defined.
5910
5911         Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS.
5912         Rename the `delete' function as `delete_macro'
5913         to avoid VMS name conflict.
5914
5915         * cexp.y: Treat $ as an identifier-character if DOLLARS_IN_IDENTIFIERS.
5916
5917         * stmt.c (fixup_memory_offset): Do big-endian compensation
5918         only within a word, not for DImode vs SImode.
5919
5920         * stmt.c (fixup_var_refs): Don't fix up the insn to load the var
5921         from its own stack slot; delete it instead.
5922
5923         * tm-ns32k.h (MODES_TIEABLE_P): DImode is like DFmode.
5924
5925         * tree.c (MAX_HASH_TABLE): 1009 (more prime) instead of 1008.
5926
5927         * decl.c (duplicate_decls): If merged type is OLD's type,
5928         keep OLD's DECL_SIZE and DECL_SIZE_UNIT.
5929
5930         * gen*.c (xmalloc, xrealloc): Call `fatal' if memory is full.
5931
5932         * reload1.c (choose_reload_targets): If a mode doesn't fit the
5933         reload register, and the insn is an ASM_OPERANDS, ignore the reload.
5934         Otherwise, final would crash.
5935
5936         * expmed.c (expand_shift): Two new strategies for lshr on short/char:
5937         widen and do ashr, or widen and do extzv.
5938
5939         * vax.md (peepholes): Use dead_or_set_p to check for eliminable
5940         intermediate result, rather than requiring a match with final result.
5941
5942         * local-alloc.c (block_alloc): Testing frame_pointer_needed is
5943         enough; no need to test FRAME_POINTER_REQUIRED, etc.
5944         * global-alloc.c (find_reg): Likewise.
5945         * reload1.c (reload): Likewise for flag_omit_frame_pointer
5946
5947         * jump.c (delete_insn): If not `optimize', don't complain
5948         about finding an already-deleted insn in the chain.
5949
5950 Tue Feb 16 17:14:54 1988  Richard Stallman  (rms at wheaties.ai.mit.edu)
5951
5952         * final.c: Don't define N_SOL and N_SLINE if already defined.
5953
5954         * final.c (output_source_line):
5955         Typo calling ASM_OUTPUT_SOURCE_FILENAME.
5956
5957         * flow.c (INSN_VOLATILE): fix a typo.
5958
5959 Fri Feb 12 16:48:16 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
5960
5961         * final.c (final): for `asm' without operands, output literally.
5962
5963 Thu Feb 11 12:44:41 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
5964
5965         * symout.c (symout_record_fields): Handle nameless fields.
5966         * symout.c (symout_record_field_names): Likewise.
5967
5968         * typecheck.c (require_complete_type): `void' is a complete type.
5969         * typecheck.c (build_function_call): Don't complain if result is void.
5970
5971         * tm-hp9k320.h: Change definition of ASM_SPEC to +X, not -X.
5972
5973         * cccp.c (main): Expected object file name for foo.cc is foo.o.
5974
5975 Wed Feb 10 16:04:58 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
5976
5977         * reload1.c (reload): Initialize `regmask' to zero.
5978         Class number is in I, not in CLASS, when setting its elements.
5979         Don't let J+K be too large.
5980
5981         * reload1.c (potential_reload_regs): Make it a `short'
5982         since that can't be unsigned.
5983
5984         * cccp.c (warning): New function, called like `error'.
5985         * cccp.c (do_define): Make redefinition just a warning.
5986
5987 Tue Feb  9 13:28:00 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
5988
5989         * decl.c (grokdeclarator): Don't be fooled by ERROR_MARK as a declspec.
5990
5991         * toplev.c (compile_file): Strip final .c or .co from .sym file name.
5992
5993         * gcc.c: When running `as', specify the .sym file if -gg.
5994
5995 Mon Feb  8 11:26:26 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
5996
5997         * expmed.c (store_fixed_bit_field): Don't try gen_lowpart on VALUE
5998         if it's a subreg since it might lose; use convert_to_mode instead.
5999
6000         * tm-hp9k320.h: Define TARGET_MEM_FUNCTIONS.
6001         * expr.c (emit_block_move, emit_push_insn, clear_storage):
6002         If TARGET_MEM_FUNCTIONS, generate calls to memcpy and memset
6003         instead of bcopy and bzero.
6004         * optabs.c (emit_cmp_insn): Likewise for memcmp vs bcmp.
6005
6006         * stmt.c (expand_goto): New temp var to avoid RT/PC compiler bug.
6007
6008 Sun Feb  7 12:20:23 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6009
6010         * flow.c (mark_used_regs, mark_set_regs):
6011         Handle hard regs in multiword modes: set the bits for each
6012         distinct register-number that makes up the multiword mode.
6013         Necessary because function arg registers can inevitably
6014         live across basic blocks.
6015
6016         * cse.c (canon_hash): Function arg and value registers no longer
6017         considered volatile, because flow should now handle the code that
6018         can result from cse'ing them.
6019
6020         * cse.c (make_regs_eqv): Abort if OLD is invalid.
6021         * cse.c (reg_invalidate): Abort if reg already invalid has eqvs.
6022
6023 Sat Feb  6 16:25:32 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6024
6025         * gcc.c (main): Specific error msg if no input files.
6026
6027 Fri Feb  5 17:56:00 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6028
6029         * stmt.c (expand_decl, put_var_into_stack, assign_parms):
6030         Set in_struct on a MEM if the variable is an aggregate or union.
6031         * varasm.c (assemble_variable): Set in_struct on aggregate vars.
6032
6033 Thu Feb  4 11:52:30 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6034
6035         * m68k.md (movsf): Correct two fmove.x to fmove.s.
6036
6037         * expmed.c (extract_fixed_bit_field):
6038         Must always generate an `and' to mask the bitfield
6039         unless its width is the same as the output machine mode.
6040
6041         * version 1.18 released.
6042
6043 Wed Feb  3 08:41:20 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6044
6045         * fold-const.c (fold): Convert EXPR's operands before returning them.
6046
6047 Tue Feb  2 15:35:18 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6048
6049         * reload.c (find_reloads_address_1):
6050
6051         * typecheck.c (default_conversion): Handle COMPOUND_EXPR arrays.
6052
6053 Mon Feb  1 18:53:05 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6054
6055         * ns32k.md: operand 0 of all unsigned divide/modulus insns
6056         is now register_operand.
6057
6058         * stdarg.h: Make va_list be char *, not char *[1].
6059         Latest draft doesn't say it must be an array type.
6060
6061 Sun Jan 31 11:14:07 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6062
6063         * flow.c (find_basic_blocks): Add temp var to avoid Sequent
6064         compiler bug.
6065
6066         * tm-ns32k.h (GO_IF_LEGITIMATE_ADDRESS): Don't allow pushes or pops
6067         since there are special insn patterns for them.
6068         Resubroutinize and add temp vars to make expressions smaller.
6069         * ns32k.md: Add a few more special stack insns; now there are enough.
6070
6071         * tm-sequent.h: Definitions of DBX_NO_XREFS and DBX_CONTIN_LENGTH.
6072
6073         * reload1.c (choose_reload_targets): Handling of reload_strict_low
6074         is needed for input reloads as well as output, since a strict_low_part
6075         operand is normally a read-write operand.
6076
6077         * reload1.c (reload): The mode a reload needs is the wider of
6078         the input and output modes--just as it is in choose_reload_targets.
6079
6080         * reload.c (find_dummy_reload): If IN and OUT have different widths
6081         and one of them exceeds a word, don't find any dummy reload.
6082
6083         * toplev.c (compile_file): Allocate enough space for .jump2 filename.
6084
6085 Sat Jan 30 10:35:46 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6086
6087         * output-ns32k.c (print_operand_address):
6088         Print addresses of the form C1+(N*REG+C2) which currently
6089         are accepted as legitimate memory addresses.
6090
6091         * tm-sequent.h: Simple bugs in PRINT_OPERAND, TARGET_DEFAULT
6092         and SEQUENT_ADDRESS_BUG.
6093
6094         * gen*.c: Must explicitly exit; returning from `main' fails
6095         to indicate nonzero status due to bug in Unix.
6096
6097         * parse.y (check_line_number): Ignore entire line of unrecognized
6098         #-directive; no error if it is `pragma'.
6099
6100 Fri Jan 29 06:46:01 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6101
6102         * genrecog.c, genextract.c, genoutput.c: Define bcopy and/or bzero.
6103
6104         * cccp.c (do_define): Make defn->argnames long enough in no-args case.
6105
6106         * reload1.c (reload): Make basic_block_needs 0 until after the
6107         frame pointer reg is spilled, so that ALL pseudos in it are spilled.
6108
6109         * typecheck.c (truthvalue_conversion):
6110         Strip a NOP_EXPR only if it extends, not if it truncates.
6111         (build_unary_op): For TRUTH_NOT_EXPR, call invert_truthvalue
6112         to simplify.
6113
6114         * Fixes for HPUX support from cph:
6115         * tm-hp9k320.h: Correct names of floating-point registers.
6116         Fix typos in ASM_OUTPUT_OPCODE; also convert `fmove' to `fmov'.
6117         * Makefile (comments for HPUX):
6118         cph says -Wd,-X isn't needed in CFLAGS, nor -lBSD in CLIB.
6119         Also that -g can't be used in CFLAGS with HP's pcc.
6120         * conf-hp9k320.h: New file, like config-m68k.h but with
6121         #defines for the bstring functions.
6122         * m68k.md: Add else-clauses to the HPUX_ASM conditionals on cmp insns.
6123         Reinsert mistakenly-deleted MOTOROLA conditionals around
6124         some OUTPUT_JUMPs.
6125
6126 Thu Jan 28 09:51:41 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6127
6128         * jump.c (jump_back_p): If TARGET is unconditional, return 0.
6129
6130 Wed Jan 27 04:18:29 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6131
6132         * combine.c (subst): Simplify (plus (plus x c1) c2).
6133
6134         * expr.c (emit_push_insn): Don't use small-block push-insns for BLKmode
6135         when one of them would be affected by PUSH_ROUNDING.
6136         Instead, make all the space and then copy.
6137         * expr.c (expand_call): Don't apply PUSH_ROUNDING if BLKmode.
6138
6139         * Allow `asm' with operands to be marked volatile.
6140         * cse.c (canon_hash): Don't record ASM_OPERANDS that has `volatil'.
6141         * loop.c (invariant_p): ASM_OPERANDS with `volatil' can't be invariant.
6142         * flow.c (volatile_refs_p): Note ASM_OPERANDS that are volatile.
6143         * stmt.c (expand_asm_operands): New arg VOL; mark ASM_OPERANDS as vol.
6144         * typecheck.c (c_expand_asm_operands): New arg VOL.
6145         * parse.y: allow a TYPE_QUAL after ASM.
6146
6147         * Make cse handle `asm' with operands:
6148         * cse.c (canon_hash): Hash string operands by contents, not address.
6149         * cse.c (exp_equiv_p): Compare string operands with strcmp.
6150         * rtl.c (rtx_equal_p): Compare string operands with strcmp.
6151
6152         * decl.c (init_decl_processing): Once sizetype is set,
6153         correct the type of the sizes of types already made.
6154
6155         * cccp.c (do_defines): Don't reject #define foo{a}.
6156
6157 Tue Jan 26 04:53:16 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6158
6159         * reload.c (find_reloads): Now that `asm' is limited to
6160         MAX_RECOG_OPERANDS, eliminate dynamic allocation of `constraints'
6161         and `constraints1', and go back to `recog_operand' instead of
6162         `operands'.
6163
6164         * typecheck.c (c_expand_asm_operands): New fn to handle `asm' for C.
6165         Calls expand_asm_operands, and handles output operands that
6166         the other function cannot handle.
6167
6168         * parse.y: Call that function.
6169
6170         * stmt.c (expand_asm_operands): Error if too many operands.
6171         #include insn-config.h to get MAX_RECOG_OPERANDS.
6172
6173         * expr.c (expand_assignment): Use store_field to handle
6174         structure fields and array elements.
6175
6176         * output-m68k.c (output_move_double): PUSHOP and POPOP were swapped.
6177         Handle insns that push an sp-relative address onto sp;
6178         these can arise with -fomit-frame-pointer.
6179         BUG? Do unoffsetable mem refs using sp and fp lose?
6180
6181         * m68k.md (movdi,movdf): Allow unoffsetable mem refs
6182         only if the other operand is a register.
6183
6184         * m68k.md (zero_extendqisi2): SGS conditionals deleted.
6185         Supposedly the MOTOROLA syntax works for those addresses.
6186
6187         * typecheck.c (default_conversion):
6188         If flag_traditional, preserve unsignedness when promoting ints,
6189         and promote float to double.
6190
6191         * typecheck.c (build_binary_op_nodefault):
6192         Allow comparisons between pointers and ints.
6193         If not -traditional, warn about them.
6194
6195 Mon Jan 25 02:11:18 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6196
6197         * expmed.c ({extract,store}_split_bit_field):
6198         Functions {extract,store}_split_reg_bit_field now work for memory
6199         also, and therefore are renamed.
6200         * ({extract,store}_fixed_bit_field): Call those fns when a field
6201         is split across two words.
6202         Also, preserve the `volatil' bit on memory refs.
6203
6204         * output-m68k.c (output_move_double): Handle nonoffsetable mem refs.
6205         * m68k.md: Relax constraints on movdi, movdf.
6206
6207         * decl.c (init_decl_processing): Define `int' and `char' first.
6208         Set `sizetype' explicitly.
6209
6210         * stmt.c (fixup_var_refs_1): May not just return when a SET
6211         doesn't have VAR as its src or dest.
6212
6213         * varasm.c: Don't include c-tree.h.
6214
6215         * decl.c (build_struct): Split this function into three:
6216         `xref_tag', `start_struct' and `finish_struct'.
6217         `xref_tag' subsumes `xref_enum'.
6218
6219         * parse.y (structsp): When parsing `struct foo {...}', define the tag
6220         as a cross-ref before parsing the components.  Use the three new fns.
6221
6222         * regclass.c (regclass): Recognize new-format ASM_OPERANDS insns
6223         with `asm_noperands', and scan their operands as usual.
6224
6225         * cse.c: In numerous functions such as canon_hash, rtx_cost, etc.
6226         that do tree-walk on rtx, handle vectors of subexpressions.
6227
6228         * loop.c (invariant_p): Likewise.
6229
6230         * jump.c (delete_insn): Two bugs:
6231         If insn already deleted, return the first following nondeleted.
6232         Deleting a jump's label can delete NEXT.  Make sure return value
6233         is always the first insn following INSN and not yet deleted.
6234
6235 Sun Jan 24 02:27:49 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6236
6237         * rtl.def (ASM_OPERANDS): Change the rtl expression of an
6238         `asm' with operands so it looks like this for one output operand:
6239         (set OUTPUT (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT
6240                                              0 INPUTS INPUTCONSTRAINTS)).
6241         and like this for multiple outputs:
6242         (PARALLEL [
6243           (set OUTPUT0 (asm_operands:OUTPUTMODE INSNSTRING OUTPUTCONSTRAINT
6244                                                 0 INPUTS INPUTCONSTRAINTS)).
6245           (set OUTPUT1 (asm_operands:OUTPUTMODE1 INSNSTRING OUTPUTCONSTRAINT1
6246                                                 1 INPUTS INPUTCONSTRAINTS))])
6247
6248         * parse.y: Change parsing of `asm' to distinguish input and output
6249         operands.  Separate them with colon; separate the string with colon.
6250
6251         * stmt.c (expand_asm_operands): Receive inputs and outputs separately.
6252         Generate the new rtl format.
6253
6254         * recog.c (asm_noperands, decode_asm_operands): New fns
6255         for extracting the operands and constraints from these insns.
6256
6257         * final.c (final): Recognize and output the new rtl format
6258         using those new functions.
6259
6260         * reload.c (find_reloads): Recognize and get constraints
6261         from the new rtl format using those new functions.
6262         New variable `operand_modes' holds the machine modes of the
6263         operands, obtained one way for ASM_OPERANDS insns and another
6264         for other insns.
6265
6266         * rtl.c (note_stores): Calling convention
6267         is changed: the first arg FUNCTION now receives as its 2nd arg
6268         1 if clobbering, 0 if setting.  Used to be the CLOBBER or SET rtx.
6269
6270         * local-alloc.c (reg_is_set): This fn is called from note_stores;
6271         change its arguments.
6272
6273         * tm-m68k.h (FIXUP_FRAME_POINTER_ADDRESSES):
6274         Use frame_pointer_rtx to recognize intended frame-pointer refs
6275         and not recognize pseudo-regs that were allocated to the frame
6276         pointer register.
6277
6278         * emit-rtl.c: All refs to frame pointer use a single rtx, in
6279         frame_pointer_rtx.  Likewise arg_pointer_rtx for the arg pointer.
6280         If they are the same register, these are the same rtx.
6281         Initialize them in init_emit.
6282         * rtl.h: Declare these vars.
6283
6284         * stmt.c (assign_parms, assign_stack_local): Use those rtx's.
6285
6286 Sat Jan 23 00:32:10 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)
6287
6288         * reload.c (find_reloads): Don't combine_reloads if `&' constraint
6289         was used.
6290
6291         * parse.y: Parse `asm' with operands.
6292         * stmt.c (expand_asm_params): New fn: generate an ASM_OPERANDS for
6293         `asm' with operands.
6294         * final.c (final): Output an ASM_OPERANDS insn-body.
6295         * regclass.c (regclass): Ignore ASM_OPERANDS, like ASM_INPUT.
6296
6297         * reload.c (find_reloads): Handle reloading of ASM_OPERANDS.
6298         The number of operands can no longer be bounded.
6299         For example we can't always put the operands in recog_operands.
6300
6301         New locals OPERANDS and OPERAND_LOCS point to alloca'd vectors of
6302         operands and their locations.  New locals CONSTRAINTS and CONSTRAINTS1
6303         hold alloca'd vectors of constraints.
6304
6305         Unfortunately this isn't enough; every vector with length
6306         MAX_RECOG_OPERANDS needs to be dynamically allocated.
6307         Would this be too slow?  For now, a cheap "solution" is to delete
6308         any insn that has too many operands.
6309
6310         * rtl.def: Delete VOLATILE, UNCHANGING and UNDESCRIBED.
6311         Add ASM_OPERANDS.
6312
6313         * regclass.c (reg_class_record): Delete ref to UNCHANGING.
6314         * loop.c (invariant_p):
6315         * rtl.c (rtx_varies_p):
6316
6317         * cccp.c: Define __VERSION__.
6318
6319         * decl.c (shadow_tag): TYPE_NAME doesn't work to get the tag-name
6320         of a struct, so use new function lookup_tag_reverse.
6321         * decl.c (lookup_tag_reverse): Given a type, return its tag name.
6322
6323         * symout.c (symout_source_file): Output one `struct source'.
6324         * symout.c (symout_lines): Output all of them, and the sourcevector.
6325         * gdbfiles.h: New file for communication between final.c and symout.c.
6326
6327         * final.c (output_source_line): New arg WRITE_SYMBOLS says write
6328         new GDB-format linenumber info.  Assigns a filenum to each source
6329         file name and keeps track of the correspondence.
6330
6331         * cccp.c (do_include): Output the -M info after searching the dirs;
6332         include the actual dir name.  Don't generate "./" for current dir.
6333
6334 Fri Jan 22 04:10:10 1988  Richard Stallman  (rms at frosted-flakes)
6335
6336         * tm-news800.h: Delete override of INDIRECTABLE_1_ADDRESS.
6337         Output is faster if it doesn't use 32-bit displacements.
6338
6339         * reload.c (combine_reloads): New function.
6340         If possible, find an input reload
6341         and an output reload that can be turned into one input-output reload.
6342         The old output-reload is marked as inoperative: reload_out
6343         and reload_in both zero.  This is called from find_reloads.
6344
6345         * reload1.c (reload, choose_reload_targets): Ignore inoperative
6346         reloads.
6347
6348         * Print warnings for variables that could be clobbered by `longjmp'.
6349         * expr.c (expand_call): Generate a NOTE_INSN_SETJMP whenever
6350         `setjmp' or `_setjmp' is called.
6351         * flow.c (propagate_block): When NOTE_INSN_SETJMP is seen,
6352         record the live regs in `regs_live_at_setjmp'.
6353         * stmt.c (uninitialized_vars_warning): Warn about vars that have regs
6354         that are set more than once and are marked in `regs_live_at_setjmp'.
6355         Works through function `regno_clobbered_by_longjmp'.
6356         * rtl.h: Define NOTE_INSN_SETJMP.
6357
6358         * genrecog.c (try_merge_2): When enforce_modes, keep all the
6359         alternatives segregated by modes and keep the modes in numerical order.
6360         * genrecog.c (write_tree): Make conditions for switch-on-modes
6361         know what difference enforce_mode makes.
6362
6363 Thu Jan 21 00:12:35 1988  Richard Stallman  (rms at frosted-flakes)
6364
6365         * tm-ns32k.h: Use Stein's definitions of PRINT_OPERAND{,_ADDRESS};
6366         move the Sequent definitions info tm-sequent.h.
6367         Handle %$ in both old and new PRINT_OPERAND.
6368         Define CPP_PREDEFINES.
6369
6370         * ns32k.md: Merge some features from Jan Stein's port:
6371         strict_low_part insns, smart output of booleans with small
6372         constant args, acbd insns generalized for other increments.
6373         Use %$ wherever there is an explicit immediate.
6374         Fix shortcomings of adjsp insns: use adjspd in general,
6375         and use adjspb in all the cases that allow it.
6376         Don't bother explicitly clearing CC_REVERSED.
6377         For tstsf/tstdf, output the floating-zero constants
6378         using {f,d}const0_rtx.
6379
6380         A problem still remains, which is that the Sequent and the
6381         other ns32k assembler syntax require different 
6382
6383         * typecheck.c (unary_complex_value): Use correct datatype for
6384         compound-exprs.
6385
6386         * gen*.c (main): Use obstack_init instead of obstack_begin.
6387
6388         * vax.md: define_peephole for  andl3 x,y,z; extzv z,....,z
6389
6390         * m68k.md (tstsi): Use cmpw instead of cmpl to test addr reg.
6391
6392         * tm-m68k.h: Bugs for 68000 when frame size is over 64k.
6393         For FUNCTION_PROLOGUE, just subtract from sp instead of fp.
6394         For FUNCTION_EPILOGUE, must put the size into a0 and then
6395         all insns must be indexed by a0.  And do this even on 68020.
6396
6397         * tm-isi68.h: Similar changes.
6398         * tm-news800.h, tm-hp9k320.h: Similar changes.
6399
6400 Wed Jan 20 04:38:21 1988  Richard Stallman  (rms at frosted-flakes)
6401
6402         * cccp.c (error_with_line): New function.
6403         Use it to report the "unterminated whatever" errors.
6404
6405         * typecheck.c (build_unary_op): Recursive call had missing arg.
6406
6407         * m68k.md (movhi): If MOTOROLA, the insn that fetches from a
6408         case-dispatch table now defines the LI label as .+2.
6409         * tm-news800.el, tm-hp9k320.h (PRINT_OPERAND_ADDRESS):
6410         Don't subtract 2 when outputting the address in that insn.
6411
6412 Tue Jan 19 00:02:33 1988  Richard Stallman  (rms at frosted-flakes)
6413
6414         * cse.c (cse_basic_block): Abort if more qtys were used than allocated.
6415
6416 Mon Jan 18 04:44:28 1988  Richard Stallman  (rms at frosted-flakes)
6417
6418         * cccp.c (special_symbol): tm_mon is origin-0, not origin-1.
6419
6420         * final.c (output_asm_insn): If %LETTER with no digits,
6421         pass null pointer as the operand.
6422
6423         * output-m68k.c (singlemove_string): Get rid of %e.
6424
6425         * stmt.c (fixup_memory_subreg): Convert (SUBREG (MEM a)) to (MEM a').
6426         * stmt.c (fixup_var_ref_1): Use that fn for operands of
6427         SIGN_EXTRACT and ZERO_EXTRACT, since (SUBREG:SI (REG:QI...))
6428         could have turned into (SUBREG:SI (MEM:QI...)), which is unsafe.
6429
6430         * rtl.c (debug_rtx): Print an rtx on stderr, for debugging.
6431
6432 Sun Jan 17 04:37:20 1988  Richard Stallman  (rms at frosted-flakes)
6433
6434         * gcc.c: options -M* treated like -M.
6435
6436         * stmt.c (pushcase): Do nothing if the case index has error_mark type.
6437
6438         * expr.c (expand_increment): Don't use queue for post-inc on memory
6439         if the add insn requires register args.  (Better code for RISCs.)
6440
6441 Sat Jan 16 02:10:22 1988  Richard Stallman  (rms at frosted-flakes)
6442
6443         * ns32k.md: Change register_operand to general_operand.
6444         * ns32k.md (udivmoddisi4): Use match_dup where required.
6445         Comment it out because it can't accept two independent output args.
6446
6447 Fri Jan 15 00:02:35 1988  Richard Stallman  (rms at frosted-flakes)
6448
6449         * toplev.c: Include sys/time.h only for BSD.  For USG, use time.h.
6450         This is correct for HPUX; don't know about others.
6451
6452         * gcc.c (execute): Eliminate `union wait'.  Make `status' an int.
6453         * gcc.c (execute) [USG]: Use fork instead of vfork.
6454
6455         * final.c (output_source_line): Use ASM_OUTPUT_SOURCE_{FILENAME,LINE}
6456         if they are defined.
6457
6458         * tm-hp9k320.h: New name for tm-hpux.h.
6459         * tm-hp9k320.h (ASM_OUTPUT_LOCAL): Add 3rd arg to `lcomm' statements.
6460         * tm-hp9k320.h (ASM_OUTPUT_{DOUBLE,FLOAT}): Use `double' and `float'.
6461         * tm-hp9k320.h (CALL_USED_REGISTERS): Don't save any 68881 regs.
6462         * tm-hp9k320.h (CPP_PREDEFINES): different names defined.
6463         * tm-hp9k320.h (HPUX_ASM, NO_DBX_FORMAT, ASM_SPEC): define these.
6464         * tm-hp9k320.h (ASM_OUTPUT_OPCODE): Convert `ftst' to `ftest'.
6465         * tm-hp9k320.h: Define ASM_OUTPUT_SOURCE_{FILENAME,LINE}.
6466
6467         * m68k.md: Rename `hpux' conditionals to `HPUX_ASM'.
6468         * m68k.md: Reverse `fcmp' args if HPUX_ASM.
6469
6470         * cccp.c (print_deps): 2 means give all files, 1 means only user files.
6471         * cccp.c (do_include): Support that.
6472         * cccp.c (main): -MM sets 1, -M alone sets 2.
6473         * cccp.c (main): Give fatal error if I/O error in writing.
6474
6475         * toplev.c (fatal_io_error): Report I/O error on given filename,
6476         and exit.
6477
6478         * toplev.c (compile_file): Detect error writing asm_out_file.
6479         Always put asm file's name in asm_file_name for err msg.
6480         * symout.c (symout_finish): Detect error writing symfile.
6481         * symout.c (symout_init): Save filename in symfile_name for err msg.
6482
6483         * gen*.c: Return 1 if ferror (stdout)--in case disk is full.
6484
6485         * local-alloc.c (block_alloc): Don't crash if 1st rtx
6486         in a PARALLEL is not a SET.
6487
6488         * tm-m68k.h, tm-news800.h (PRINT_OPERAND).  Eliminate code `%e'.
6489         * m68k.md: Change `%e' to `e' everywhere.
6490         * tm-hpux.h (ASM_OUTPUT_OPCODE): Output `move' as `mov'.
6491
6492         * tm-m68k.h, tm-news800.h, tm-hpux.h (PRINT_OPERAND):
6493         New code `%!' is output as the name for the cc register.
6494         * m68k.md (insns that use andi to ccr): Use `%!' to avoid
6495         conditionals.
6496
6497         * cse.c: Record in qty_const_insn the insn that stored the
6498         constant value of a qty.  When making a REG_WAS_0 note,
6499         store in it the insn that established the value 0.
6500
6501         * vax.md (movsi): When checking a REG_WAS_0 note,
6502         verify that the insn it points to hasn't been deleted or made a NOTE.
6503
6504 Thu Jan 14 00:01:35 1988  Richard Stallman  (rms at frosted-flakes)
6505
6506         * toplev.c: Eliminate error_with_line and warning_with_line.
6507         * parse.y, decl.c: Change remaining calls to those two.
6508
6509         * tree.c (get_unwidened, get_narrower): To see if a COMPONENT_REF
6510         is unsigned, look at the FIELD_DECL, not at the COMPONENT_REF.
6511
6512         * rtl.c (print_rtx): Print /v for the `volatil' bit.
6513         * expr.c (expand_assignment expand_expr): If handling a COMPONENT_REF,
6514         note whether it is volatile.
6515
6516         * fold-const.c (fold): a call to split_tree missed an argument.
6517
6518         * flow.c (volatile_refs_p): Scan an rtx for volatile mem refs.
6519         * flow.c (life_analysis): Record in INSN_VOLATILE which insns
6520         have any volatile mem refs.
6521         * flow.c (mark_used_regs): Always mark an insn with volatile mem refs.
6522         Always pass INSN as an arg.  New arg FINAL now says whether
6523         this is the last time scanning.
6524         * flow.c (propagate_block): Don't delete insns with volatile mem refs.
6525
6526         * flow.c: Remove all refs to `obey_regdecls'.
6527         Calling this with -noreg just doesn't help -W.
6528
6529 Wed Jan 13 01:13:07 1988  Richard Stallman  (rms at frosted-flakes)
6530
6531         * decl.c (finish_decl): Error if auto var's size isn't known.
6532         Change type to error_mark_node to avoid crash if the var
6533         is used in an expression, since it has no DECL_RTL.
6534
6535         * output-m68k.c (output_move_const_single): % -> %% for sprintf.
6536
6537         * parse.y (yylex): Store token_buffer properly after ellipsis.
6538
6539         * decl.c (duplicate_decls): Don't call layout_decl
6540         for FUNCTION_DECL or TYPE_DECL.
6541
6542         * toplev.c (warning_with_decl): New warning function with decl as arg.
6543         * (error_with_decl): similar.
6544
6545         * decl.c: Replace most `yylinerror' calls with `error_with_decl'.
6546
6547         * decl.c (build_struct): Reform code to detect erroneous bit-fields.
6548         All such errors are now detected here.
6549         Promote bit-fields to int if appropriate.
6550         If traditional, make all int bit-fields unsigned.
6551         Set DECL_ALIGN for members that are not bit-fields.
6552
6553         * decl.c (grokfield): Don't set DECL_ALIGN here.
6554
6555         * stor-layout.c (layout_decl): Don't promote the type of a bit-field.
6556         Use TREE_PACKED to distinguish a bit-field.
6557         Don't check the width because build_struct did that.
6558
6559         * m68k.md (cmpm): Reject if either operand (address) is a constant.
6560
6561 Tue Jan 12 15:11:20 1988  Richard Stallman  (rms at frosted-flakes)
6562
6563         * cse.c (canon_reg): Never replace ANY hard reg from reg_rtx
6564         because that could alter the machine mode.
6565
6566         * tm-news800.h: Redefine INDIRECTABLE_1_ADDRESS only if MOTOROLA.
6567
6568 Mon Jan 11 13:15:45 1988  Richard Stallman  (rms at frosted-flakes)
6569
6570         * jump.c (follow_jumps): If we find a cycle, make it a jump to self.
6571
6572         * cse.c (predecide_loop_entry): Give up if chase more than 10 jumps.
6573
6574 Sun Jan 10 14:52:42 1988  Richard Stallman  (rms at frosted-flakes)
6575
6576         * reload1.c (reload): basic_block_needs (new vector) gets 1
6577         for each basic block that needs a reload.
6578         * reload1.c (spill_hard_reg): Don't spill pseudos that are
6579         confined to a basic block which has no need for any reloads.
6580         * reload1.c (reload): Each cycle that any element of basic_block_needs
6581         changes from 0 to 1, must re-spill all previously spilled regs.
6582
6583         * regclass.c (record_address_regs):
6584         Skip the charging of ICOST if it is 0.
6585
6586         * flags.h, toplev.c: New flag -fvolatile.
6587         * typecheck.c (build_indirect_ref): If flag_volatile,
6588         every INDIRECT_REF is marked with TREE_THIS_VOLATILE.
6589
6590         * fold-const.c (fold): Test in TRUTH_NOT_EXPR case was backward.
6591         Also result type is always `int'.
6592
6593 Sat Jan  9 04:16:11 1988  Richard Stallman  (rms at rice-krispies)
6594
6595         * flags.h (flag_traditional): New flag.
6596         * toplev.c: recognize -ftraditional and -traditional.
6597         * parse.y (yylex): If flag_traditional, don't recognize
6598         `signed', `const' or `volatile'.
6599
6600         * decl.c (pushdecl): If flag_traditional, any extern decl
6601         takes effect at top level.
6602
6603         * tree.c (lvalue_or_else): New 2nd arg for use in error message.
6604         * typecheck.c: All callers pass 2nd arg.
6605
6606         * global-alloc.c: allocno_preferred_reg can specify a preferred
6607         hard reg for each allocno.  If so, try it first (new call to find_reg).
6608
6609         * global-alloc.c (find_reg): New arg PREFREG specifies reg to try
6610         first.
6611
6612         * decl.c (build_struct): if :0 bit field at the end, round the
6613         structure size to multiple of EMPTY_FIELD_BOUNDARY.
6614
6615         * cse.c (make_regs_eqv): Was testing for reg_next_eqv[lastr] == 0
6616         and should be == -1.
6617
6618         * reload1.c (reload_as_needed): Fix invalid optimization deleting
6619         the previous store into a pseudo-reg that feeds an input-reload.
6620         It is not safe because a later insn may look in the pseudo's stack
6621         slot for the value.  Delete the store only if we can eliminate the
6622         pseudo entirely or if the current insn stores a new value there.
6623         Also verify that reload_in[j] is a REG.
6624
6625         * reload1.c (reload_as_needed): When doing an input reload from a
6626         pseudo that was stored by the previous insn (not as a reload),
6627         redirect the previous insn into the reload register, if this lets
6628         us eliminate the pseudo entirely.
6629
6630         * reload1.c (reload_as_needed): In both of the above cases, it's
6631         impossible to prevent a stack slot since one was already assigned,
6632         so don't alter reg_n_refs.  Instead, set reg_renumber to record
6633         that this pseudo did get a hard reg.
6634
6635         * stmt.c: Set `volatil' in pseudo-regs for the user's variables.
6636
6637         * jump.c (delete_insn): Do nothing if insn already deleted.
6638
6639         * tm-sun{2,3}.h: #define STRUCTURE_SIZE_BOUNDARY 2
6640         for compatibility with Sun PCC.  Note that 4.3 vax PCC
6641         does not want this.
6642
6643         * fold-const.c: Replace truncate_unsigned with force_fit_type
6644         which truncates unsigned types and sign-extends signed types.
6645
6646         * expr.c (do_jump): emit_queue before outputting the jump insns
6647         that use the comparison.
6648
6649         * stmt.c: Error message for any goto that jumps into a
6650         binding contour that restores a stack level.
6651
6652         TREE_PACKED (label) means label was defined inside
6653         such a binding contour that is now exited.  Using such a label
6654         is an error.
6655
6656         TREE_ADDRESSABLE (label) means label was used from a place
6657         outside all such binding contours.  If this is 1 when
6658         TREE_PACKED is set to 1, it is an error.
6659
6660         Any other invalid goto must have a fixup.  fixup_gotos detects
6661         such invalid gotos.  fixup_gotos takes a second arg, which
6662         is the first insn of the contour now being exited.
6663
6664         * GNU C version 1.17.
6665 \f
6666 Local Variables:
6667 mode: indented-text
6668 left-margin: 8
6669 fill-column: 76
6670 version-control: never
6671 End: