Sat Nov 19 02:18:02 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)

	* Version 1.31 released.

	* sparc.md: Change `K' to `I' in all constraints.

	* loop.c (gen_iv_mult): Handle TARGET==0.

	* c-decl.c (duplicate_decls): Undo last change.

	* c-decl.c (pushdecl): Instead of that change,
	save old-decl's file/line before calling duplicate_decls,
	and pass them later to warning_with_file_and_line.
	* toplev.c (warning_with_file_and_line): New fn.

Fri Nov 18 13:07:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (fixup_var_refs_1): (SUBREG (MEM)) was slipping through
	in case where a SET was writing in the variable being fixed.

	* recog.c (register_operand, nonmemory_operand, memory_operand):
	Changes to handle new var reload_completed: 1 means that
	(SUBREG (MEM)) now counts as a mem-ref, since alter_subreg
	will make it one.
	* toplev.c (rest_of_compilation): Set and clear reload_completed.

	* sparc.md (call patterns): If TARGET_SUN_ASM, and address in reg,
	output a jmpl rather than a call.
	* tm-sun4os3.h: Like tm-sparc.h but turn on TARGET_SUN_ASM.

	* reload.c (push_reloads): Reinstate handling of reg_equiv_constant.

Thu Nov 17 09:48:14 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (constraint_accepts_reg_p): Name changed from
	constraint_all_regs_p; new arg is reg we are concerned with,
	and condition tested takes some advantage of that reg.

	* gcc.c (main): Rename var `error' to `error_count' for name conflict.

	* emit-rtl.c (emit_note): Output line #s even if no debug info wanted.
	(emit_line_note): New fn, does what emit_note did.
	(emit_line_note_force): New name for emit_note_force.
	* stmt.c, c-parse.y: Call emit_line_note instead of emit_note.

	* c-parse.y (maybe_type_qual): Call emit_note instead of emit_line_note
	Now we can find the line # of every `asm' from the RTL.
	* toplev.c (error_for_asm): New fn, gets line # by searching for NOTE.
	* reload.c (find_reloads): Use error_for_asm.
	* reload1.c (choose_reload_targets): Likewise.
	* final.c (output_operand_lossage): Likewise.
	Variable this_is_asm_operands is now current insn if it's nonzero.

	* loop.c (move_movables): When a reg is moved, update regno_first_uid
	and regno_last_uid; say life span includes entire loop.
	* Decrement THRESHOLD per reg moved, not per insn moved.

Wed Nov 16 08:41:32 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib.c (___builtin_saveregs): New fn, for sparc.

	* tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't recognize
	SYMBOL_REFs, except for the constants pool.
	But do recognize REG+REG and SMALLINT+REG.
	* sparc.md: New patterns for fetching and storing memory
	whose address is symbolic and not "legitimate".

	* sparc.md (movsi): Add `f' to op1 constraint.
	New output clause for result in fp reg.
	(Floating point fetch patterns): Output sethi insns.
	(call_value, related patterns): value-register has `register_operand'.

	* output-sparc.c (hardreg): New function.
	(COMPATIBLE): Clause added for n_regs == 2.
	(single_insn_src_p): Return 0 for MEM whose address is absolute.

	* tm-genix.h (GO_IF_LEGITIMATE_ADDRESS subroutines):
	Redefine, to exclude any possibility of SB-referencing addresses.

	* loop.c (strength_reduce): Can't eliminate a biv if used before
	start of the loop.  Used before is same as used after, if contained
	in another loop.

	* recog.c (asm_noperands, decode_asm_operands):
	Handle case of no outputs, but some clobbers.
	* stmt.c (expand_asm_operands): Generate right stuff for that case.

	* tm-sun3.h (CPP_SPEC): Don't define __HAVE_68881__ if using fpa.

Tue Nov 15 00:10:26 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* loop.c (gen_iv_mult): Arg OP0 may not be a constant.
	Pay attention to return value of expand_mult.
	(eliminate_biv): Call changed.

	* output-m88k.c, output-sparc.c (output_move_double):
	Fix typo `optype0' for `optype1'.

	* c-decl.c (duplicate_decls): Don't alter file, line of old decl.

	* c-parse.y (skip_white_space): Don't recognize comments; rely on cpp.

	* rtl.c (rtx_equal_p): Handle vectors.

	* loop.c (scan_loop): Change elts of n_times_set back to positive
	for candidates that weren't moved, before doing strength reduction.

	* ns32k.md (movdi, movdf): Use `&' constraint for first operand.

	* reload1.c (reload): Initialize spill_indirect_ok here.

	* config-sun4.h: Recognize `-static' switch.

	* global-alloc.c (set_preference): Avoid using nonsense hard reg #s
	that result from adding OFFSET.

	* sdbout.c (sdbout_end_function): Line # in .ef should be relative.

	* final.c (output_source_line): For SDB, don't output negative #s.

	* tm-encore.h (ASM_OUTPUT_LOCAL): Don't ignore SIZE arg.

Mon Nov 14 11:03:16 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload.c: Don't declare refers_to_regno_p.

	* gcc.c (main): Warn if any input files are for the linker
	but the linker is not being run.

	* jump.c (sets_cc0_p): Dumb bug fetching elts of a PARALLEL.

	* local-alloc.c: qty_birth, qty_death elements are now -1, not 0,
	when the value is not known.

	* expmed.c (extract_bit_field): Bug computing xbitpos, xoffset
	when changing units from bytes to words.

	* loop.c: Rename `times_used' field in `struct movable' to `savings'.
	(scan_loop): When scanning the consecutive sets, for each libcall,
	increment `savings'--leave `consec'.
	When making movable for (SET (REG) 0) which is part of zero-extension,
	set `savings' to 1 initially, since only 1 insn will be moved.
	And don't let any other reg force that insn.
	Reduce initial THRESHOLDs.
	(move_movables): Don't add `consec' into `savings'
	since the initial `savings' was proportional to `consec'.
	Decrement THRESHOLD by 3 (not 2) for each move done.

	* reload1.c (choose_reload_targets): Strip subregs from OLD
	before writing the output-reload move-insn.

	* reload1.c (reload): counted_for_groups and counted_for_nongroups
	are now file-scope.  Update them both when spilling.
	(new_spill_reg): No need for counted_for_nongroups as arg.
	(choose_reload_targets): Don't use for a group
	any spill regs for which counted_for_nongroups is set.

	* dbxout.c (dbxout_symbol): Indirect-symbol case checked erroneously
	for PARM_DECL.

Sun Nov 13 08:13:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cse.c (fold_rtx): Don't alter MULT by -1 if arg mode != result mode.

	* loop.c (move_movables): If moving a CALL_INSN, make a new CALL_INSN.
	* emit-rtl.c (emit_call_insn_before): New fn.
	
	* config-sun4.h (LINK_SPEC): Avoid shared libraries if -g.

	* expr.c (store_one_arg): Stabilize ARG->stack so it doesn't use SP
	before computing the arg value.

	* combine.c (use_crosses_set_p): Moving a ref to stack ptr
	is always forbidden if machine has push insns, since might cross one.

	* vax.md (movqi): Avoid out-of-range immed ops in mcomb.

	* expmed.c (extract_bit_field): Don't say `extzv' in the
	clause for `extv'.

	* emit-rtl.c (copy_rtx_if_shared): Even if a MEM can be shared,
	unshare its address from everything outside that MEM.

	* expr.c (expand_builtin): Fix omitted arg to `convert_to_mode'.

	* expr.c (store_expr): In case where will not return TARGET
	and must do type conversion, don't fail to store into TARGET.

	* dbxout.c (FORCE_TEXT): New macro used before output `.stabs'
	to go to the text section on targets that require it.
	(DEBUG_SYMS_TEXT): Target macro which turns on that feature.

	* reload1.c (reload): Index in spill_regs was wrong
	when checking counted_for_groups.
	(choose_reload_targets): When calling find_equiv_reg looking for
	a reload reg, reject all spill regs, even those not in use now.

	* tm-sun386.h, tm-sun386i.h, config-sun386i.h: New files.

	* cccp.c (main): Don't die if no output file arg given.

	* fixincludes: Tell `find' to find only ordinary files.

Sat Nov 12 20:43:20 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Makefile (gnulib): Use cp to make the temporary .c files;
	less likely to fail than ln.

Sat Nov  5 12:46:39 1988  Randall Smith  (randy at sugar-bombs.ai.mit.edu)

	* tm-m68k.h (HARD_REGNO_MODE_OK): Disallowed d7:a0 as an allowable
	pair of registers to hold a double value.  This is correct for the
	fpa but incorrect for the 68881.  It was, however, simpler than
	defining a new regclass.

Tue Oct 25 12:03:49 1988  Randall Smith  (randy at gluteus.ai.mit.edu)

	* m68k.md: Added some thoughts (comments) on best method to allow
	68881 code with fpa code.

Thu Oct 13 14:19:17 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.30 released.

	* stupid.c (stupid_life_analysis): Init last_call_suid with
	largest possible value, not 0.

Wed Oct 12 04:40:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* output-i386.c (output_asm_insn_double_reg_op): Compensate for
	assembler bug that interchanges fsub and fsubr.

	* reload1.c (order_regs_for_reload): Undo 29 Sept change.
	It breaks the 386.

	* varasm.c (decode_rtx_const): Don't example value->addr
	if what was stored in was value->d.

	* toplev.c (set_float_handler): New fn, specify where to jump
	on floating exception signal.
	* fold-const.c (combine): Use that to handle overflow in arithmetic.

	* c-decl.c (grokdeclarator): Don't clear CONSTP, VOLATILEP
	when making an array type.

	* dbxout.c (dbxout_symbol): Ignore VAR_DECLs in memory whose
	addresses we can't represent.

	* fold-const.c (fold): don't convert >= to > if both args are constant.
	When converting >= to >, don't fail to change CODE.

Tue Oct 11 04:13:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* vax.md (movhi): Error in truncating mcomw, addh3 args to 16 bits.

	* final.c: Better error checking for %-specs in templates.
	(output_operand_lossage): new fn to report errors.
	(insn_noperands): new var: # operands in current fn.
	(this_insn_asm_operands): new var: 1 for `asm', 0 otherwise.
	(output_asm_insn): Check for operand # out of range.
	(output_asm_label, output_operand): Call new fn to report errors.

	* reload.c (push_reloads): An input reload for (REG N) can match one
	for (POST_INC (REG N)) or (PRE_INC (REG N)), since the value
	reloaded is the same in any case.

Mon Oct 10 06:19:05 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* recog.c (next_insns_test_no_inequality): Like next_insn_tests...
	but check all insns that follow this one and can use it's cc's.
	* output-m68k.c (output_btst): Use that.

	* vax.md (movsf, movdf): Undo last change; movq/movl set the cc wrong.

	* expr.c (expand_call): Set current_function_calls_setjmp if appro.
	* stmt.c (setjmp_protect): New fn: move all vars into stack
	unless declared `register'.
	* c-decl.c (finish_function): Call it if -traditional and setjmp used.

	* cccp.c (main): Open output after the input.
	Handle `-o -'.

Sun Oct  9 00:28:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-sun3.h (CPP_SPEC): Define __HAVE_FPA__ if appropriate.

	* c-decl.c (pushdecl): After duplicate_decls, maybe warn about
	"declared extern and later static".

	* expmed.c (store_bit_field): In insv case, avoid turning
	VALUE into a subreg of a subreg.

	* loop.c (move_movables): When moving a libcall,
	un-cse the function address; put it into the call insn.

Sat Oct  8 01:48:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cse.c (equiv_constant): Subroutine to find the constant equivalent
	of a reg.  Now handles SUBREGs too.
	(fold_rtx, fold_cc0): Use that function.
	Don't handle SUBREGs like arithmetic.

	* reload1.c (choose_reload_targets): Don't call reg_overlap_mentioned_p
	if arg is 0.

Fri Oct  7 01:00:19 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* assert.h: Typo declaring __eprintf.

	* config.gcc: New file for making the links.
	Fixed bugs for sun-[23]-os4.  Added sun-[234] for sunos 3.
	Added sequent-i386.

	* emit-rtl.c (gen_rtx): Return const0_rtx for 0 in DImode.
	* varasm.c (immed_double_const): Don't be confused by this.

	* expmed.c (negate_rtx): New 1st arg MODE.
	* expr.c (push_block): Calls changed.
	* m68k.md, ns32k.md, vax.md: Calls changed.

	* c-decl.c (duplicate_decls): Don't discard DECL_BLOCK_SYMTAB_ADDRESS.

	* tree.c (staticp): INDIRECT_REF with constant address is static.
	COMPONENT_REF may not be, if component offset isn't constant.

	* c-typeck.c (default_conversion): Converting array to ptr, if array
	isn't a VAR_DECL, go through build_unary_op so that COMPONENT_REFs
	will be simplified away.

	* ns32k.md (tbitd patterns): op 0 constraint: reject constants.
	* ns32k.md (extzv for SImode and HImode):
	Use adj_offsetable_operand; plus_constant was the wrong thing.

Thu Oct  6 00:10:41 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.29 released.

	* loop.c (scan_loop): Don't think a `return' insn enters the loop.

	* ns32k.md (ashrsi3, etc): New define_expands for right shift.

	* reload1.c (choose_reload_targets): Change in the `force_group'
	logic to avoid crashes.

Wed Oct  5 04:09:19 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* expr.c (expand_expr, MINUS_EXPR): When negating integer op1,
	truncate it to its mode.

	* expmed.c (extract_bit_field): SUBREG error check was wrong;
	SImode SUBREGs are possible and ok in extzv, extv.

	* tm-ns32k.md (REGISTER_NAMES): Had two excess elements; deleted.

Mon Oct  3 01:15:51 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* toplev.c (main, compile_file): If no files spec'd, use stdin, stdout.

	* flow.c (propagate_block): When checking for stack-adjust insns,
	exclude non-SET patterns.

	* jump.c (jump_optimize): When changing jump=>return to return,
	must rerecognize the insn.

	* toplev.c (compile_file): Allow `-' for main input or output filename.

Sun Oct  2 10:30:09 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)

	* final.c (final): NOTICE_UPDATE_CC has extra arg, INSN.
	* tm-*.h: Change definitions.

	* stmt.c (optimize_bit_field): Use gen_lowpart to make subregs.

	* stmt.c (assign_parms): Don't obey regdecls in inline function.
	Don't lose existing REG_NOTES when adding one.

	* stmt.c (expand_function_start): Make return rtx before
	marking parms live.
	(expand_function_end): Use use_variable to emit USEs for SAVE_EXPRs.

	* stmt.c (expand_return): Handle TRUTH_AND_EXPR like ANDIF; OR also.

	* stmt.c (expand_end_stmt_expr): Always set TREE_VOLATILE,
	sometimes TREE_THIS_VOLATILE.

	* jump.c (delete_insn): When finding PREV, skip deleted insns.

	* varasm.c (output_constant): WORDS_BIG_ENDIAN test was backwards.

	* emit-rtl.c (gen_lowpart): Allow MODE > 1 word if X is same size.

	* final.c (final): Don't delete no-op moves (jump did it if appro.).

	* final.c: Support prescan pass.
	(final_start_function): init_recog and CC_STATUS_INIT mvd to `final'.
	(final): New arg PRESCAN.  Do no output if prescanning.
	Don't alter conditionals if PRESCAN < 0 (prescan already done).
	If jump becomes no-op, change it to a NOTE.
	Remember to free the temp space for ASM_OPERANDS.

	* final.c (final): Altering store-flag must check STORE_FLAG_VALUE.
	Don't try to do it if that isn't defined.
	Don't try it if condition doesn't test CC0.
	(alter_cond): No need to check COND != 0.
	Handle CC_Z_IN_NOT_N and CC_Z_IN_N.
	(m68k.md): Delete code that handled CC_Z_IN_NOT_N.

	* conditions.h: New flag CC_Z_IN_N.
	* tm-*.h: Renumber all CC_... flags to make room.

	* combine.c (use_crosses_set_p): Loop start was 1 off.

	* local-alloc.c (reg_is_set): When a reg is CLOBBERed and dies in
	one insn, make it live immediately before and after that insn.

	* global-alloc.c: Hard reg preferences for global pseudos.
	Var allocno_preferred_reg deleted; new vars hard_reg_preferences
	and regs_someone_prefers.
	(global_alloc): Init those vars.  Pass hard_reg_preferences elt
	to find_reg.
	(set_preference): New function makes entries in those vars.
	(global_conflicts): new arg to mark_reg_store.  Call set_preference.
	(find_reg): Last arg now a preferred hard_reg_set.
	Scan that set first of all.
	(mark_reg_store): New arg is offset for renumbered regno.
	But the code to use it is turned off.

	* global_alloc (check_frame_pointer_required): Handle reg_equiv_address
	like reg_equiv_mem.  Don't try to allocate pseudos with equiv mems
	that don't use the frame pointer.
	* reload1.c (reload): Call changed.

	* jump.c (sets_cc0_p): Tests whether rtx sets cc0, and whether
	it does nothing but set cc0.
	(find_cross_jump, delete_jump): Use that fn for these tests.
	* loop.c (loop_skip_over): Likewise.
	* reload.c (push_reload): Likewise.

	* genoutput.c: Output `const' before the data arrays.
	Define it as nothing if not __STDC__.

Sat Oct  1 02:19:29 1988  Richard Stallman  (rms at apple-gunkies.ai.mit.edu)

	* expr.c (store_one_arg): 3rd arg to emit_block_move is in bytes.

	* cse.c (fold_rtx): Handling ZERO_EXTEND or SIGN_EXTEND of constant,
	if the arg width is too wide to handle, return safely.

	* combine.c (FAKE_EXTEND_SAFE_P): Don't allow extend to > 1 word.

	* rtl.c (refers_to_regno_p): Moved from reload.c.  Not static.
	(reg_overlap_mentioned_p): New function, calls the above.
	* output-*.c: Use that instead of reg_mentioned_p.
	* tm-*.h (NOTICE_UPDATE_CC): Likewise.
	* reload.c (push_reload, combine_reloads): Likewise.
	* reload1.c (choose_reload_targets): Use it to check earlyclobbers.

	* reload1.c (choose_reload_targets): Elimination of previous
	output-reload feeding our input now limited to pseudo-regs.

	* flow.c (life_analysis): Delete any insn copying reg to itself.
	(propagate_block): Move update of OLD after special life and death
	for CALL_INSNs.

	* vax.md (ashrsi3, ashrdi3, rotrsi3): define_expands to negate
	the shift count.
	* expmed.c (expand_shift): Eliminate negate-the-shift-count feature.

	* vax.md (and*i3): define_expands which use complement and bit-clear.
	* expmed.c (expand_bit_and): Eliminate feature to do that.
	This function could be eliminated.

	* expmed.c (store_bit_field): Handle nested subregs.
	Allow gen_insv to fail; if it does, delete what we did and then
	use store_fixed_bit_field.
	(store_fixed_bit_field): Use gen_lowpart to make SUBREGs.
	Do that for SUBREGs just as for REGs.
	Error check OFFSET must be 0 for REGs.
	(store_split_bit_field): Error check OP0 is a SUBREG when expected.
	(extract_bit_field): Allow gen_ext{,z}v to fail.
	Use gen_lowpart to make subregs.
	(expand_shift): If a try fails, delete any insns it made.

	* expmed.c (expand_mult): Use expand_unop to negate.
	When adding 2 powers of 2, do serial shifts, not parallel.
	Handle absval==1 like other powers of 2.

	* explow.c (force_reg): Don't lose any existing reg notes.

	* stmt.c (expand_start_stmt_expr): Eliminate return value.
	(expand_end_stmt_expr): No need for argument.
	* c-parse.y (primary): Change calls.

Fri Sep 30 01:50:22 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* integrate.c (copy_rtx_and_substitute, copy_address):
	'u' case erroneously returned the translated single element.
	(copy_address): Special cases for frame-ptr and sums containing it.
	MEM and LABEL_REF cases passed wrong arg to copy_rtx_and_substitute.
	(copy_rtx_and_substitute): adjust mode of inline_target for context.

	* jump.c (true_regnum): For SUBREG of pseudo, use pseudo's # unchanged.

Thu Sep 29 02:50:46 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* i386.md (movsi, mov{q,h}i): Use find_reg_note to look for REG_WAS_0.
	* vax.md (movsi, movhi): Likewise.

	* varasm.c (decode_rtx_const): Was setting un.addr.base wrong
	for a CONST.  Should be symbol name, not the SYMBOL_REF.

	* rtl.c (rtx_equal_p): When comparing registers, check
	REG_FUNCTION_VALUE_P.  If there are `u'-slots in the rtx, ignore them.

	* rtl.c (reg_mentioned_p): Some rtx types were mistakenly treated
	as uniquified (various constants).

	* rtl.c (read_rtx): Element type 'S' is string that may be omitted.
	* rtl.def (define_insn, define_peephole): Add a last element, type 'S'.
	* genoutput.c: Collect these optional last elements and output as
	array `insn_machine_info' of structs `INSN_MACHINE_INFO'.
	The last must be defined as a macro.
	* recog.h (insn_machine_info): Declare it if appropriate.

	* regclass.c (record_address_regs): In PLUS case, look inside SUBREGs.

	* reload1.c (reload): Use reg_equiv_address for REG_EQUIVs with
	invalid memory addresses.
	When changing pseudos to mem refs at end, do FIX_FRAME_POINTER_ADDRESS
	on their addresses.
	(alter_reg): Check that with reg_equiv_mem.
	(spill_hard_reg): If fp reg, spill regardless of basic_block_needs.

	* reload1.c (order_regs_for_reload): Don't put invalid regs into
	potential_reload_regs at all.  (They used to go at the end.)

	* reload.c (find_reloads): Store all earlyclobber operand in
	reload_earlyclobbers (# in n_earlyclobbers):
	* reload.1 (choose_reload_targets): Don't use value of find_equiv_reg
	if it matches an earlyclobber operand.

	* reload.c (find_reloads_address for REG):
	No need for explicitly excluding hard regs in these tests.
	(find_reloads, find_reloads_address_1 for REG): likewise.

	* reload.c (push_reload): Code testing reg_equiv_constant should
	be obsolete; add error check to verify this.

	* reload.c (hard_reg_set_here_p): Handle CLOBBERs, SUBREGs, overlap.
	(refers_to_regno_p): Handle CLOBBERS.  Handle overlap.
	New arg ENDREGNO specs end of range to check for;
	all callers changed (all in this file).

	* reload.c (find_reloads): SUBREG like REG in alternate recovery
	for earlyclobber conflict.
	The operands to unswap are those that are supposed to commute.
	When operands match, copy the regclass of earlier one for later one.

	* stmt.c (optimize_bit_field): Don't use gen_extend_insn;
	use convert_move, then reorder the insns.
	* optabs.c (gen_extend_insn): Deleted.

	* optabs.c (emit_cmp_insn): Don't emit queue before recursion.
	Don't convert size to SImode for cmpstrqi.

	* optabs.c (expand_binop): Keep any old REG_NOTES when adding them.
	Always delete_insns_since if returning failure.
	(expand_unop, emit_unop_insn): Keep any old REG_NOTES when adding them.
	* spur.md (movhi): likewise.

	* RTL_EXPR_SEQUENCE is now a chain of insns, not a SEQUENCE.
	* emit-rtl.c (emit_insns): New fn, emit a chain of insns.
	* expr.c (expand_expr): Use that.
	Also put const0_rtx in the RTL_EXPR_SEQUENCE (mark RTL_EXPR as output).
	* stmt.c (expand_end_stmt_expr): Use get_insns to get the chain.

	* stmt.c (expand_end_stmt_expr): Put the RTL_EXPR on rtl_expr_chain.
	(fixup_var_refs): Scan all waiting RTL_EXPRs not yet output.
	Also scan all stacked sequences on sequence_stack.

	* genemit.c (gen_expand): Generate calls to {start,end}_sequence.
	Use `emit' to handle a PARALLEL.
	(FAIL, DONE): Change to fit gen_expand changes.

	* emit-rtl.c (change_address): abort if arg isn't a MEM.

	* emit-rtl.c: Sequences work now by saving and restoring first_insn
	and last_insn.  So these variables are used even when in a sequence.
	emit_to_sequence has been deleted.
	(start_sequence, end_sequence): Save and restore first_insn, last_insn.
	(get_last_insn, add_insn): Sequences no longer need special treatment.
	(delete_insns_since, reorder_insns): likewise.
	(push_to_sequence): Set up to emit to a given existing insn chain.

	* emit-rtl.c (copy_rtx_if_shared): Don't copy INSNs.
	Insert missing return stmt in MEM case (for MEMs ok to share).
	(unshare_all_rtx): Now can copy the REG_NOTES simply.
	Copy the LOG_LINKS too.

	* emit-rtl.c (make_safe_from): Treat SUBREG as X like a REG.
	(delete_insns_since): Don't lose if FROM is the first insn.
	(emit): Declare void, since no useful value.
	Call simplejump_p properly.
	(restore_reg_data_1): When a reg is an address, do mark_reg_pointer.

	* dbxout.c (dbxout_types): Call dbxout_symbol to do the work.
	(dbxout_type_def): Deleted.
	(dbxout_symbol): Set TREE_ASM_WRITTEN when a TYPE_DECL is output.
	Don't output the same one twice. 

	* cse.c (fold_cc0): LABEL_REF is not zero.

	* cse.c (cse_insn): Don't insert src, dest if they are the same place.

	* cse.c (lookup_as_function): Return entire rtx, not just operand.
	(cse_insn): Caller changed.  Also, copy the result before inserting it.

	* cse.c (fold_rtx): Put constant arg last if commutative op.
	Handle idempotents and identities for mult, div, booleans, shifts.

	* cse.c (canon_hash): Parens were missing around shifts in "rotates".

	* c-convert.c (convert_to_integer): Truncate TRUTH_ANDIF_EXPR
	like TRUTH_AND_EXPR; OR also.

	* c-typeck.c (build_binary_op_nodefault): Do truthvalue_conversion
	for TRUTH_ANDIF, etc.
	(build_unary_op): More simplifications for TRUTH_NOT_EXPR;
	uses new fn `invert_truthvalue'.

	* recog.c (reg_fits_class_p): New name for reg_renumbered_fits_class_p
	since it no longer needs to renumber.  Also it now really assumes
	arg is a REG.  Callers changed.
	* reload.c: Callers changed.

	* recog.c (general_operand): (SUBREG (MEM...)) need not alter mode.
	(register_operand, nonmemory_operand): (SUBREG (MEM...)) is allowed.
	(memory_operand): (SUBREG (MEM...)) is *not* allowed.
	(mode_independent_operand): Operand names were backwards!
	(No change in effect of this function.)

	* print-tree.c (dump): Some expr nodes contain rtx's.  Print as rtx's.

Wed Sep 28 18:51:12 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (choose_reload_targets): If a reload wanted a group,
	don't allow a single register for it.

Tue Sep 27 11:43:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* final.c (output_addr_const): Handle DImode CONST_DOUBLEs.
	* tm-*.h (PRINT_OPERAND): Treat DImode CONST_DOUBLE like a CONST_INT.

	* vax.md (rotldi3): Insn deleted; it doesn't really exist.

	* toplev.c (report_error_function): Also mention the file name,
	for parallel makes.  New arg FILE; all callers changed.

Mon Sep 26 15:44:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (expand_shift): When using extzv, convert OP1 to SImode.
	* c-typeck.c (build_binary_op_nodefault): Convert shift-count
	to int regardless of result type.

	* output-spur.c (output_move_double): Fix typo, optype0=>optype1.

	* expr.c (expand_call): Avoid null deref on result of FUNCTION_ARG.

	* tm-i386.h (FUNCTION_PROFILER): Use correct assembler syntax.

Sun Sep 25 12:13:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Handle some files in netdnet, netdna, vaxif, vaxuba.

	* reload.c (find_reloads): Make no optional reloads if not -O.

	* loop.c (strength_reduce): Can't eliminate a biv if it's used
	to compute a DEST_ADDR giv.  Only DEST_REG givs are safe.

	* loop.c (general_induction_var): Shift & divide ops are linear
	only in 1st operand; don't look for biv or giv in 2nd operand.

	* vax.md (fix_truncdfqi2): Use `%#'.

Sat Sep 24 00:25:48 1988  Richard Stallman  (rms at gluteus.ai.mit.edu)

	* loop.c (n_times_set, n_times_used): Now file-scope;
	no longer passed as args to several functions.

	* loop.c (basic_induction_var): Accept reg as source value
	only if it's invariant.
	(strength_reduce): Benefit calculation and threshold changed.
	Check reducibility of givs before trying to reduce them.
	Check eliminability of biv before considering the givs;
	let this affect the threshold.
	(record_giv): New subroutine adds a giv to the chain.

	* ns32k.md (incrementing sp): Use cmpd insns to increment by 4 or 8.

	* integrate.c (expand_inline_function): Rename return_label
	to local_return_label; avoid shadowing.

Fri Sep 23 13:57:52 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* loop.c (loop_skip_over): Put the new label after the note that ends
	the loop.

	* loop.c: New function strength_reduce and subroutines.
	* toplev.c: New var flag_strength_reduce, set from -fstrength-reduce.

	* vax.md (sob insns): They were broken, with plus in one place
	and minus in another.  Use plus consistently.

	* rtl.h (REG_LIBCALL, REG_NONNEG): Two new kinds of reg-note.
	* optabs.c (expand_binop, expand_unop): Make REG_LIBCALL notes.
	* loop.c (scan_loop, move_movables): Move entire library calls.
	Use m->set_src to get the expression, in case it's from a REG_EQUAL.
	(consec_sets_invariant_p): Likewise.

	* loop.c (scan_loop): Start scan from loop_top, if entry is rearranged.
	Watch out for pseudo regs created by strength_reduce;
	they can't index regno_last_uid.
	(replace_regs): # regs mapped is now an arg.

	* loop.c (count_loop_regs_set): Don't increment n_times_set past 127.
	(consec_sets_invariant_p): Reject if N_SETS arg is 127.

	* toplev.c (rest_of_compilation): NREGS arg of loop_optimize deleted.

	* c-decl.c (store_parm_decls): Anything but an IDENTIFIER_NODE
	in SPECPARMS indicates a parmlist, not an identifier list.
	(get_parm_info): Use only PARM_DECLs when making the list of arg types.

	* combine.c (try_distrib): Boolean ops can't distribute through PLUS.
	MULT can distribute through PLUS and only PLUS.

Thu Sep 22 15:57:41 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): uncond jump to a return becomes a return.

	* integrate.c (copy_parm_decls, copy_decl_tree): Set TREE_USED.
	Avoid inevitable "unused" warning for these decls.

	* c-typeck.c (comptypes): When comparing array types,
	ignore qualifiers of element type.

	* tm-*.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Define new macros.
	* final.c (final_start_function): Use them to protect around
	the call to the profiling function.
	* stmt.c (expand_function_start): Set current_function_needs_context
	and current_function_returns_struct.

	* stmt.c (expand_null_return_1): If clear_pending_stack_adjust
	doesn't clear it, do the adjust now.
	* expr.c (clear_pending_stack_adjust): No-op if -finline-functions.

	* cccp.c (macarg1, skip_if_group): Backslash makes next char ordinary.

	* reload.c (find_reloads): Delete code to look for an equiv reg
	for a reg being input-reloaded.  This isn't safe.
	* reload1.c (choose_reload_targets): Do it here.

Wed Sep 21 00:36:22 1988  Richard Stallman  (rms at hobbes.ai.mit.edu)

	* tm-sun3.h (CPP_SPEC): Define it based on TARGET_DEFAULT.
	(STARTFILE_SPEC): Likewise.

	* reload1.c (choose_reload_targets): When redirecting prev insn
	into this insn's reload-reg, check this doesn't break the prev insn
	by giving it a reg it can't accept.  Use new fn constraint_all_regs_p.

	* tm-sparc.h (ASM_OUTPUT_LOCAL): Use .reserve, not .common.

	* tree.h (TREE_USED): New attribute macro.
	* c-parse.y (primary): Set TREE_USED in ..._DECL nodes.
	* toplev.c, flags.h: Define and set warn_unused.
	* stmt.c (expand_end_bindings): Warn if any var is unused.
	* print-tree.c (prtypeinfo): Print this attribute.

Tue Sep 20 15:29:01 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* assert.h: `assert' must expand to an expression.
	Error message should show arg before expansion, not after.

	* c-decl.c (implicitly_declare): Make decl perm if !warn_implicit
	since start_function needs to look inside it in that case.

	* toplev.c (announce_function): If we don't print, don't record we did.

Mon Sep 19 15:21:11 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (structsp): If pedantic, warn if comma at end of enumlist.

	* reload.c (find_reloads): Check insn_code_number >= 0 when
	looking in insn_operand_strict_low.

	* tm-sun[23].h (CPP_SPEC): Rename __HAVE_FPU__ to __HAVE_68881__
	and put a space after that option.

Sun Sep 18 01:12:56 1988  Richard Stallman  (rms at hobbes.ai.mit.edu)

	* reload.c (find_reloads): Make optional reloads for explicit MEMs.

	* tm-m68k.h (MODES_TIEABLE_P): If no 68881, can tie fixed to floating.
	* m68k.md (movdi): Allow F's (can be DImode now).
	Don't allow f-regs (experiment).  Don't preference x-regs.
	(DImode push): Allow y-regs.
	(DFmode push): Allow y-regs, not x-regs.

	* reload1.c (modes_equiv_for_class_p): New function.
	(reload): Compare multiple modes for reg group with that function.
	Allows differing modes in some cases when not tieable.

	* c-parse.y (check_newline): Let ASM_OUTPUT_IDENT override .ident.
	* tm-3b1.h (ASM_OUTPUT_IDENT):  Define this as no-op.

	* emit-rtl.c (reorder_insns): Update sequence_{first,last}_insn if nec.
	(get_last_insn): If in a sequence, return last insn of sequence.
	(delete_insns_since): If in a sequence, set sequence_last_insn.

	* spur.md (CONST_DOUBLE load insn): Use & for most dests.
	(cond branches): pass additional args to output_compare.
	(movdf, movdi): Use & loading reg from mem.
	(trunc*): Enable these.
	(add): New pattern for adding large immediate operand.
	(shifts): A define_expand for each kind of shift,
	plus a recognizer which outputs repeated insns if necessary.
	(call*): Use r9 as temp, not r2.

	* output-spur.c (output_compare): New args NEG_{EXCHANGE_,}OPCODE.
	(singlemove_string): Handle reg as operand 1.
	(output_add_large_offset): Fake add insn with large immediate arg.
	(big_immediate_operand): Match such an arg.

	* tm-spur.h (FUNCTION_PROLOGUE): Align the stack pointer.
	Handle bigger frames.
	(TARGET_LONG_JUMP, TARGET_EXPAND_SHIFT): New target flags.

	* va-spur.h: Track position in regs and stack separately.

	* c-decl.c (duplicate_decls): Warn if prototype follows
	non-prototype definition.

Sat Sep 17 14:30:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_builtin): Avoid crash if arg isn't integer type.

	* c-decl.c (duplicate_decls): Just warn if redeclaring a builtin,
	and leave it built in unless it is redefined.

	* vax.md (ashlsi3): Use addl3, moval or movad when useful.
	(addsi3): Avoid pushab, movab for constants < 64.
	Do use movab when > 64 when operands match.
	(mov*i): Use mcom* rather than mneg*.
	Use add*3 with two quick immediate args when useful.
	(movhi): Don't use movzbw or cvtbw; said to be slow.

	* rtl.h: New macros MEM_VOLATILE_P, MEM_IN_STRUCT_P,
	INSN_DELETED_P,	REG_USER_VAR_P, RTX_UNCHANGING_P, RTX_INTEGRATED_P,
	CONSTANT_POOL_ADDRESS_P.
	Most places changed to use them.

Fri Sep 16 11:50:15 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Was testing volatil on non-MEMs erroneously
	when looking for no-op move insns.

	* cccp.c (handle_directive): Ignore comments between # and directive.

	* integrate.c (copy_rtx_and_substitute): Stack-push memrefs need
	to be copied.

	* tm-bsd386.h (ASM_OUTPUT_DOUBLE): Undef previous def.

	* reload1.c (alter_reg): Don't reuse spill_stack_slot
	if it isn't big enough for this reg's mode.

	* expr.c (emit_move_insn): After force_const_mem, ensure
	mem address is valid.
	(move_block_to_reg, move_block_from_reg): Likewise.

	* expr.c (expand_call): Spurious TREE_VALUE on args[i].tree_value.

	* m68k.md (zero_extend*): Require register_operand for operand 0.

	* stdarg.h (va_start): Alternate defn for sparc.

Thu Sep 15 11:39:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (yylex): When atof gives ERANGE, check for "0.0", etc.

	* assert.h (__assert): Alternative definition for -traditional.

	* output-sparc.c (output_block_move): Initialize xoperands.

	* combine.c (try_combine): Never subst for a reg that is incremented.

	* m68k.md (cmpm pattern): Make the match_operands match memrefs
	and check that they are pushes in the extra condition.
	This makes reloading handle the pushes properly.

	* expr.c (MOVE_RATIO): Make it 15.  Allow overriding it.

Wed Sep 14 09:50:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (build_enumerator): Use saveable_tree_cons.

	* vax.md (movdf): Use movq when safe.

	* Version 1.28 released.

	* tm-sparc.h (FIRST_PARM_CALLER_OFFSET): Defined.

Tue Sep 13 00:11:37 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* tree.c (saveable_tree_cons): New function.
	* c-decl.c (pushtag): Use it; lists of tags needed for inlining.
	(get_parm_info): Likewise.

	* print-tree.c (dump): Handle each kind of statement node individually.

	* integrate.c (copy_decl_tree): Don't pass DECL_RTL through
	copy_rtx_and_substitute if it's a memref with constant address.

	* sdbout.c (sdbout_symbol): Don't output garbage when DECL_RTL
	has a form we don't understand.

	* reload.c (find_reloads_address_1): Don't reload an autoincrement
	if it has a suitable hard reg already.

	* c-typeck.c (process_init_constructor): Error check after digest_init.

	* c-parse.y (is_reserved_word): Now static.

Mon Sep 12 19:19:28 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* i386.md (all push insns): Use `<' for the constraint,
	since a push_operand won't fit an `m' constraint on this machine.

	* expr.c (expand_call): If fn name is `__builtin_alloca',
	it may be alloca.  This case arises if the user redeclares
	`__builtin_alloca'.

Sun Sep 11 01:47:01 1988  Richard Stallman  (rms at gluteus.ai.mit.edu)

	* Eliminate MAX_SETS_PER_INSN.
	* cse.c (cse_insn): Combine all the tables and dynamically allocate.
	(cse_main): Count the actual number of SETs; don't estimate.
	* genconfig.c: Don't calculate MAX_SETS_PER_INSN.
	* stmt.c (expand_asm_operands): No limit on # of output operands.

	* expr.c (expand_call):
	Store all non-reg parms first, then store all partially-in-reg
	parms, then all the (precomputed) wholly-in-reg parms.
	Special hair for BLKmode parms which must be passed entirely
	in memory; also for BLKmode parms initialized from function calls,
	for which it is best to allocate the space before computing value.
	Use macro FIRST_PARM_CALLER_OFFSET to handle machines where reg
	parms "take up space" on the stack below the stack pointer.
	(store_one_arg): Handle case of preallocated stack loc for BLKmode.
	Update current_args_size here, not in caller.

Sat Sep 10 19:58:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* output-sparc.c (output_scc_insn): Changed asm templates.
	Use common code to emit the move insns and label at the end of fn.
	(output_mul_by_constant): Use %g1 as temporary reg.

	* sparc.md (indexed load pattern): Deleted.
	(fix_truncdfsi2): Don't ignore value of output_fp_move_double.
	(cse'd multiply): Operand 1 predicate is general_operand.
	(return peepholes): Conditionalize on ! TARGET_EPILOGUE.

	* tm-sparc.h (INIT_CUMULATIVE_ARGS,FUNCTION_ARG...):
	Use partial regs for args that start in regs but won't entirely fit.

	* tm-sparc.h (CONST_COSTS): 0 for args that can be immediate.
	(STRUCTURE_SIZE_BOUNDARY): Now 8.
	(STRUCT_VALUE_OFFSET): Defined as symbolic name for `64'.

	* expr.c (struct arg_data): New component `stack' says where in the
	stack to put a BLKmode arg (if it's nonzero).
	(store_one_arg): Handle case where it's nonzero.
	(target_for_arg): New fn, precompute stack locn for BLKmode arg.

Fri Sep  9 01:41:13 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* cse.c (fold_rtx): Misnested ifs screwed SUBREG case.

	* reload.c (find_reloads_toplev): Special case for (SUBREG REG)
	where REG is equivalent to a CONST_INT.
	(find_reloads): Don't ignore the value returned by find_reloads_toplev.
	Treat a (SUBREG constant) like a (SUBREG MEM): set force_reload.

	* reload.c (push_reload): Abort if memory subreg is not
	paradoxical; the MEM mode should be narrower than the SUBREG.

	* stmt.c (fixup_var_ref_1): Fixup memory subregs in an insn
	copying VAR to or from a register.

	* m68k.md (movdi, movdf): the x-reg constraint accidentally allowed
	moving rm to rm with no &.

	* vax.md (call_value): Typo.

	* expr.c (emit_block_move, emit_push_insn): prefer movstrqi to movstrsi

	* m68k.md (FPA multiply): bad opcodes for 3-operand multiply insns.

Thu Sep  8 18:22:14 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y: Use YYERROR instead of synonym YYFAIL.
	BISON VERSIONS PRIOR TO THIS DATE WON'T WORK!

	* c-typeck.c (digest_init): Use TYPE_MAIN_VARIANT of array elt type.

	* tm-sun[23].h (CPP_SPEC, ASM_SPEC): Let -m(c|)680[12]0 control
	options for CPP and assembler.

Wed Sep  7 13:44:59 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* New handling of reloading of PRE_DEC, etc.
	Now reload_in is the PRE_DEC, etc, and reload_inc is always positive.
	* reload.c (push_reloads): Old code to set reload_inc deleted.
	(find_reloads_address_1): Call push_reload the new way.
	(find_inc_amount): Value always positive.
	* reload1.c (choose_reload_targets): Detect this case.
	(inc_for_reload): New fn; does the real work for this case.
	* m68k.md (call, call_value): Fn address must be offsetable.

	* combine.c (try_distrib): Reject strange cases such as if
	result of PREV1 or PREV2 is used in a memory address in INSN.

	* vax.md (movsf): Generate movl instead of movf.

	* expr.c (expand_call): If have regparms, store all BLKmode args
	before all the other args.
	(store_one_arg): New subroutine broken out.

	* output-sparc.c (output_block_move): Complete rewrite.

	* sparc.md (cse'd multiply insn): Typo in asm-output code.

Tue Sep  6 20:05:48 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (yylex, etc.) Install Schmidt's perfect hash table.

	* gcc.c: handle extension `.cc'.

Mon Sep  5 12:09:58 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.27 released.

	* tm-i386.md (PREFERRED_RELOAD_REG): When reloading a QImode,
	make sure the class doesn't include %esi or %edi.
	* i386.md (movqi): Eliminate only use of the class `x',
	for which PREFERRED_RELOAD_REG cannot work.
	(In next version, get rid of INDEX_CLASS).
	Also use `*' to cause preferencing of Q_REGS.
	* tm-m68k.md (PREFERRED_RELOAD_REG): When reloading a QImode,
	use DATA_REGS.

	* reload.c (push_reloads): Braino in last change when IN == 0.

	* flow.c (mark_used_regs, mark_set_1): Bug if HARD_REGNO_NREGS
	returns 0 for VOIDmode reg (inside a CLOBBER).

	* c-parse.y (asm_operand): Handle `("REGNAME")' as an operand.
	* recog.c (decode_asm_operands, asm_noperands): Ignore any CLOBBERs.
	* regclass.c (reg_names): Variable now global.
	* stmt.c (expand_asm_operands): Generate CLOBBERS when appropriate.

	* stmt.c (assign_parms): Ignore parms that aren't PARM_DECLs.

	* varasm.c (assemble_variable): Do ASM_OUTPUT_EXTERNAL for functions.

	* c-parse.y (yylex): floatflag is now an enum.
	Detect invalid use of decimal points (> 1, or in exponent)
	and multiple exponent letters.

	* expr.c (expand_call): If inlining fails, set TREE_ADDRESSABLE.

Sun Sep  4 00:36:30 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* c-decl.c (grokdeclarator): A const array becomes an array of consts.
	* c-typeck.c (build_array_ref): Array ref is const if array elts are.

	* output-sparc.c (output_move_double): Change criteria for ldd, std.
	(output_fp_move_double): New alternatives avoid ldd, std for
	stack refs that aren't aligned.
	(output_block_move): Use %g1 as temp reg.

	* sparc.md (floating point load from constant mem address):
	Use %g1 as temp reg.  Use output_move_double in DF case, not ldd.
	(movsf): Asm insn typo in FPreg to FPreg case.
	(floatsi{s,d}f2): Constraint changed.
	Also new special case pattern in front of it.
	(fix_truncdfsi2): Use output_move_double, not ldd.
	(addsi3, subsi3): Use %g1 as temp reg.
	(cse-optimized multiply): Constraint now `g'; output generalized.
	(andsi3, orsi3, xorsi3): Use %g1 as temp reg.

	* reload.c (find_reloads): Force int constants into memory just
	like floating ones, if memory is allowed and no regs are.

	* expr.c (expand_call): Don't treat structure_value_addr like a parm
	if the first parm would be passed in a register.
	Also, write comments for all local vars.

	* tm-386v.h (START_SPEC): Use {g,m}crt1.o, not {g,m}crt0.o.
	(LIB_SPEC): Always use crtn.o.

Sat Sep  3 13:05:50 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* explow.c (plus_constant): Don't put CONST around lone SYMBOL_REF.

	* combine.c (subst): Simplify zero- or sign-extend of a constant.

	* expr.c (expand_expr): for REAL_CST, etc., check for invalid
	memory addresses and copy into registers.

	* integrate.c (expand_inline_function): If incoming struct value addr
	is in memory, map it like a memory parameter.

	* tm-*.h (FIRST_PARM_OFFSET): Now takes fndecl as argument.
	* integrate.c (expand_inline_function): Calc., use and save
	this fns value of FIRST_PARM_OFFSET.
	(copy_rtx_and_substitute): Use that value.
	* stmt.c (assign_parms): Likewise.

	* tm-sparc.h (FIRST_PARM_OFFSET): Make it 64 if value is BLKmode.
	(STRUCT_VALUE{,_INCOMING}): Put the value in 64(fp).

	* tm-sparc.h (PRINT_OPERAND_ADDRESS): Print offsets in decimal.
	Avoid excess `+' before a negative offset.

	* stmt.c (expand_function_start): Create the return value rtl
	before making the tail-recursion loop point.

	* combine.c (gen_lowpart_for_combine): Generate a paradoxical subreg
	rather than a wider memref.

	* reload.c (push_reload): Extend last change to case where OUT != 0.

Fri Sep  2 11:43:20 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (fixup_var_refs): Adjust last_parm_insn when deleting insns.

	* expr.c (emit_push_insn): calling memcpy, bump TEMP 2 pointers worth.

Thu Sep  1 16:39:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (choose_reload_targets): Test for canceled reload
	before looking inside reload_out.

	* jump.c (jump_optimize): Bug in last change.

	* m68k.md (return): Pattern disabled; confuses Aug 29 stmt.c change.
	* ns32k.md, i386.md: likewise.

	* emit-rtl.c (emit_note_force): New, like emit_note but always do it.
	* stmt.c (expand_function_end): Use emit_note_force.

Wed Aug 31 11:34:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (alter_reg): New arg FROM_REG is hard reg that the pseudo
	was spilled from.  Works with spill_stack_slot.  Callers changed.
	Now all pseudos spilled from one hard reg get the same slot.
	(reload): Initialize new variable spill_stack_slot.

	* cse.c (cse_insn): Don't insert floating point mems if -ffloat-store.

	* reload.c (find_equiv_reg): Allow no equivs for volatile memrefs.
	Also none for floating mem refs if -ffloat-store.

	* output-sparc.c (output_mul_by_constant): make `p' and `log' unsigned.

Tue Aug 30 13:47:12 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Ignore other NOTEs while looking for
	a NOTE_INSN_FUNCTION_END.

	* integrate.c (save_for_inline): Flush extra call to max_reg_num.
	Don't copy NOTEs that are NOTE_INSN_FUNCTION_END.
	(copy_for_inline): Don't copy NOTEs that are NOTE_INSN_FUNCTION_END.

	* stmt.c (optimize_bit_field): If bit field is SRC, strip subregs
	from the DEST.

	* expmed.c (expand_mult): Special case for -1 as one operand.

Mon Aug 29 12:14:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (expand_goto_internal, expand_fixup): New arg LAST_INSN.
	(expand_return): Pass that arg in tail-recursive case.
	(other callers): Pass 0 for that arg.
	(expand_null_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE.
	(expand_null_return_1): New fn, has guts of old expand_null_return.
	(expand_return): Call expand_null_return_1 to pass LAST_INSN arg.
	(expand_return): Handle HAVE_return nonzero w/ FUNCTION_EPILOGUE.
	(expand_function_{start,end}): Likewise.
	(expand_cleanups): Fix typo in recursive-list case.
	(move_cleanups_up): New fn.

	* expr.c (expand_call): Execute cleanups_of_this_call on exiting.
	Notice calls to __builtin_new (but don't do anything about them yet).

	* reload.c (push_reload): If reloading a (SUBREG (MEM ...) ...),
	really reload just the MEM in the MEM's own mode.

	* sparc.md: Define patterns for insns that set the ccs.
	Define set-flag insns.
	New patterns for indexed load, and for optimizing signed bit fields.
	(mulsi3, umulsi3): Give "r" constraint to operand 0.
	Peephole optimizers recognize some cases where delay insns are safe.
	Changed patterns for call and return insns as well.

	* output-sparc.c (single_insn_src_p): New fn.
	(output_delay_insn): New fn.

	* tm-sparc.h (TARGET_EPILOGUE): New target flag.
	(NOTICE_UPDATE_CC): New clause for funny PARALLEL with a REG in it.

	* m68k.md (movqi): Use *'s to ensure preferencing d-regs.

	* c-parse.y (datadef): If traditional, no warning about no specs.

Sun Aug 28 14:34:33 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i386.h: Define PROMOTE_PROTOTYPES.
	POINTER_BOUNDARY now 32.

	* regclass.c (reg_scan): Compute `max_parallel', max # of sets and
	clobbers in any insn in this function.
	* global-alloc.c (global_conflicts): Use that, not MAX_SETS_PER_INSN.

	* stmt.c (expand_asm_operands): MAX_SETS_PER_INSN limits # output ops.

	* emit-rtl.c (init_emit_once): Make elt 2 of {f,d}const0_rtx nonzero.

	* c-decl.c (lang_decode_option): Handle -Wwrite-string.
	* c-parse.y (combine_strings): If that flag, make array of const char.

	* expr.c (expand_expr): for INTEGER_CST, always use immed_double_const;
	never do output_constant_def (it didn't work).
	Also heed WORDS_BIG_ENDIAN.

	* varasm.c (output_constant): Handle integer CONST_DOUBLEs.
	(output_constant_def): Abort if arg is an INTEGER_CST.

	* emit-rtl.c (gen_rtx): Don't return {f,d}const0_rtx for DImode.

Sat Aug 27 12:37:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (pushdecl): Global extern decls set TREE_PUBLIC
	like local ones.

	* integrate.c (expand_inline_function): Handle parms that were
	passed in registers but whose homes are on the stack.

	* varasm.c (force_const_mem): Output ints according to spec'd mode.
	({record,compare}_constant_rtx,const_hash_rtx,decode_rtx_const):
	Take mode as argument; pass it along.

	* c-parse.y (read_escape): No warning for `\{' or `\['.

Fri Aug 26 12:23:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (fixup_memory_subreg): Typo calculating big-endian adjust.

	* vax.md (call_value): Handle >255 args as in `call'.

Thu Aug 25 16:00:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (delete_jump): Don't delete the cc-setter if it has autoinc.

Wed Aug 24 16:33:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_expr): For sun with a COND_EXPR, use SUBTARGET
	if validate_subtarget says ok.

	* tree.c (build_index_type): make_index_type moved here and renamed.

	* combine.c (move_deaths_2): New function.
	(try_distrib): Use that, not move_deaths.

	* tm-sparc.h (SHIFT_COUNT_TRUNCATED, STORE_FLAG_VALUE): Define them.

	* tm-sparc.h: FUNCTION_{PRO,EPI}LOGUE: Save room for ins and
	locals to spill to the frame if any ins *or* locals are live.

	* tm-sparc.h (NOTICE_UPDATE_CC): Delete the clause that always
	cleared the cc's for unrecognized insns.

	* reload1.c (reload_as_needed): Don't try to use a spill-reg
	in a basic block that wasn't spilled: ignore optional reloads.

Tue Aug 23 09:45:05 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* output-sparc.c (output_scc_insn): New function.

	* expr.c (expand_builtin, alloca): Round result of alloca
	up to a multiple of STACK_BYTES.

	* toplev.c (compile_file): Default main_input_filename is cc1 input.

	* tm-i386.h (FUNCTION_BOUNDARY): 32 avoids extra prefetch.

	* i386.md (movdi, movdf): Add `&' where needed in constraints.

Mon Aug 22 11:57:51 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* symout.c (symout_finish): Allocate typevector after the symout_types.

Sun Aug 21 16:10:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-3b1.h (ASM_FORMAT_PRIVATE_NAME): Use a `_' as well as `%'.

	* expr.c (expand_expr): Typo setting MODE for MAX_EXPR.

	* Makefile (stage*): If ln fails, copy gnulib to stage*.
	(realclean): Do `clean' and then some.
	(install): new var USER_H specifies headers to copy.

	* c-typeck.c (build_binary_op_nodefault): LT_EXPR, etc.
	on ptr vs int failed to set result_type.
	(build_conditional_expr): Don't replace nonzero int
	with null_pointer_node.

	* combine.c (remove_links, try_distrib): New fns.
	(subst): New simplifications for ZERO_EXTEND, SIGN_EXTEND.
	(combine_instructions): Call try_distrib.
	(FAKE_EXTEND_SAFE_P): Allow SUBREGs.

	* m68k.md (non-FPA pattern for floatsisf2): Typo, had DF for SF.

Sat Aug 20 12:04:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (copy_address): Variant of copy_rtx_and_substitute.
	(copy_rtx_and_substitute): Use copy_address for MEM address that
	doesn't satisfy memory_address_p.

	* reload.c (find_reloads): If force_reload set, don't set WIN
	for a MEM even if `m', `o' or `g' in constraint.

	* i386.md (expendqihi2): Typo in asm template.

	* toplev.c (rest_of_compilation): Call clear_const_double_mem.
	* varasm.c (init_const_rtx_hash_table): Don't call it here.
	(immed_real_const): Don't record the rtx in the REAL_CST node.
	(force_const_double_mem, clear_const_double_mem): Use cc0_rtx, not 0,
	as flag for a CONST_DOUBLE not on the chain.

	* cccp.c (handle_directive): If traditional, do scan strings
	but accept unterminated ones.
	(collect_expansion): -traditional: Don't recognize comments in strings.
	Stringify arguments that appear within strings.
	(skip_quoted_string): -traditional: Always exit at newline.
	(macroexpand): -traditional: Don't put `"'s around stringified arg.
	(macarg): Set stringified_length accordingly.

	* c-decl.c (duplicate_decls): Avoid error redeclaring fcn after
	implicit decl if -traditional.

	* toplev.c (announce_function, report_error_function):
	Change communication logic between these fcns.

	* c-decl.c (lang_decode_options): Handle -Wall here.
	* toplev.c (main): not here.

	* tm-bsd386.h: Don't include tm-i386.h--be like tm-att386.h

Fri Aug 19 11:08:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* config-sun4.h: If sparc, include config-sparc.h.
	Never include alloca.h.

	* tm-m68k.h (TARGET_SWITCHES): Define `-mc68020', `-mc68000'.

	* c-decl.c (init_decl_processing): If traditional, use signed sizetype.

	* gcc.c (main): Use stderr for printing version.

Thu Aug 18 14:42:36 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.26 released.

	* m68k.md (movsi): Constraint change for fpa regs.

	* reload1.c (choose_reload_targets): Clear reg_reloaded_contents
	for all regs of a multi-reg group.

	* reload.c (find_equiv_reg): HARD_REGNO_NREGS wants mode, not size.
	Check properly for overlap against multiword reload regs.

Tue Aug 16 14:54:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c, expr.c (immed_double_const): immed_real_const_2 renamed.

	* tm-i386.h (SFVALUE): Should be `double'.
	* tm-i386v.h (SFVALUE): Don't override it.

	* tm-i386.h (ASM_OUTPUT_ASCII): Don't define it.
	* tm-att386.h: Definition moved here.

	* tm-bsd386.h: New file, for Sequent.
	* tm-seq386.h: New file, for Sequent.
	* config-i386.h: New file, for Sequent.

	* expr.c (push_block): Take account of STACK_POINTER_OFFSET.
	(expand_call): Therefore need not do so here.

	* optabs.c (expand_fix): Typo if going via DImode.

	* reload1.c (choose_reload_targets): Don't * reload_reg_rtx if 0.

Mon Aug 15 01:11:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (copy_for_inline): Don't try copying 0-length vector.
	(copy_rtx_and_substitute): Likewise.

	* m68k.md (andsi3): use clrw instead of andw #0.

	* print-tree.c (walk): Don't omit permanent nodes reach from temps.

	* m68k.md (zero_extend...): Reinstall the old zero-extend insns
	without names, so they can help the combiner.

	* expr.c (expand_expr): Don't use hard regs as subtargets.
	* combine.c (FAKE_EXTEND_SAFE_P): Always consider MEMs safe.
	* reload.c (find_reloads): For (SUBREG (MEM ...)) set force_reload.

	* c-parse.y (redescape): Don't warn for `\('.

	* reload.c (find_reloads_address): #if was backwards.

Sun Aug 14 16:52:22 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (shorten_compare): Change switch to chain of ifs.

	* tm-ns32k.h (PRINT_OPERAND): CONST_DOUBLE contains a double
	even if it's SFmode.
	(FUNCTION_PROLOGUE): If MAIN_FUNCTION_PROLOGUE defined, run it.

	* cccp.c (file_buf): Rename field `free' to `free_ptr'.

	* Makefile (ALLOCA, MALLOC, LIBDEPS): New variables for easier
	customization.  Executables depend on LIBDEPS instead of OBSTACK1.
	(cccp): Deps and libs now work like the others.

	* output-i386.c (notice_update_cc): Rewritten for clarity.

	* tm-i386.h (OUTPUT_JUMP): If CC_IN_OVERFLOW, abort.

	* recog.c (push_operand): Test for stack_pointer_rtx.

	* integrate.c (copy_rtx_and_substitute): Don't submit push-operands
	to `memory_address'--it would lose on machines where pushing is
	a special insn, not an addressing mode.

	* output-i386.c	(top_dead_p): No more redundancy--that didn't work.
	Now one method if optimized, one for call_insns if noopt, one for
	other insns if noopt.
	(call_top_dead_p): fp_top_dead_p renamed
	and only the call-insn clause remains.

	* i386.md (cmpsf, cmpdf): Output was backwards.
	(", tstsf, tstdf): Set CC_IN_80387.
	(incb pattern): Restrict allowable registers.
	(movsf, movdf): Call top_dead_p only when absolutely necessary.
	(call_value): Use top_dead_p, not subroutine.

Sat Aug 13 15:19:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stupid.c (stupid_life_analysis): If only 1 reg class,
	call stupid_find_reg only once.

	* stmt.c (expand_function_start):
	Clear current_function_pretend_args_size.

	* expr.c (store_constructor): If target is hard reg, go via a pseudo.

	* varasm.c (real_constant_chain): Now static in this file.
	(force_const_double_mem): Put R on chain if not already on.
	(clear_const_double_mem): Set XEXP (,2) to 0;
	also clear real_constant_chain and the chain links.
	* emit-rtl.c (init_emit_once): Put 0 in XEXP (,2) of {d,f}const0_rtx.
	* cse.c (canon_hash): For CONST_DOUBLE, ignore elts other than 0,1.

Fri Aug 12 11:48:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (order_regs_for_reload): Handle REG_ALLOC_ORDER more spots.

	* global-alloc.c (find_reg): error handling REG_ALLOC_ORDER;
	also error skipping regs known to be hopeless.
	* local-alloc.c (find_free_reg): error skipping hopeless regs.
	* stupid.c (stupid_find_reg): likewise.

	* local-alloc.c (qty_compare_1): typo, had q1 for q2.

	* expr.c (expand_expr): Don't use supplied target when optimizing
	arithmetic using a comparison or conditional; that target could be
	needed for the result of the comparison.

	* reload1.c (reload): Don't set reg_equiv_constant for hard regs.

	* stupid.c (stupid_life_analysis): Ignore reg R if regno_reg_rtx[R]==0.

	* symout.c (symout_finish): Use perm. links in permanent_fwd_refs.

	* i386.md (movhi, movqi): Check no_labels_between_p.

Thu Aug 11 10:44:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (yylex): Out-of-range float is just a warning.

	* tm-gnx-v3.h: New file for Genix.
	* ns32k.md (movsi, call, call_value): GNX_V3 conditionals.
	* tm-ns32k.h (PRINT_OPERAND_ADDRESS): Changes for Genix.

	* ns32k.md (insv patterns): Operand 0 is read-write.

	* i386.md (tstsf, tstdf): Don't push the arg if already in st(0).

	* varasm.c (output_constant_def): If EXP is permanent, the rtl is too.

	* tm-*.h (ASM_OUTPUT_{LOCAL,COMMON}): New 4th arg, rounded size
	vs unrounded size.
	* varasm.c (assemble_variable): Pass new arg.
	* symout.c (symout_init): Likewise.

	* cccp.c (rescan): Don't let char const cross lines.
	(skip_quoted_string, macarg1, discard_comments): Likewise.

	* expr.c (expand_expr, VAR_DECL case): handle flag_force_addr.

	* tm-i386v.h (TAREGT_DEFAULT): Assume 80387.
	* config-i386v.h (alloca): Use __builtin_alloca under GNU C.

Wed Aug 10 11:23:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload.c (find_reloads): Alternative loses
	if it has no regs for a reg operand.

	* tm-sun3.h (STARTFILE_SPEC): Define, for fpa's sake.
	* tm-m68k.h: New hard regs, reg classes, reg class letters,
	target flag and switch, operand syntax and CC handling for fpa.
	* m68k.md: Add fpa insn patterns.
	* output-m68k.c (standard_SunFPA_constant_p): New fn.
	(output_move_const_{single,double}): Handle fpa regs.
	(singlemove_string): Handle fpa regs.

	* stmt.c (fixup_memory_subreg): Result had wrong mode.

	* ns32k.md (insv patterns): Adjust bit-number along with address.

	* sparc.md (negdf2, absdf2): Order of the words was backwards.

	* reload1.c (new_spill_reg): End confusion about meaning of 1st arg.
	Arg counted_for_nongroups had wrong type.

	* tm-m68k.h (FUNCTION_{PRO,EPI}LOGUE): Round frame size to word bdry.

Tue Aug  9 07:53:59 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i386.h (ASM_OUTPUT_ASCII): Don't lose the sign bit.

	* tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Use crt1.o, crtn.o.

	* stmt.c (fixup_var_refs_1): fixup all memory subregs.

	* reload1.c (choose_reload_targets): Don't strip paradoxical
	subregs from values to be reloaded.

	* cccp.c: Comment out text after #endif.

	* c-parse.y (init): Allow empty braces as init; warn if pedantic.

	* c-decl.c: Move C-specific options from toplev.c.
	* c-tree.h: Move their externs from flags.h.
	* c-decl.c (lang_decode_option): New fn called by `main'.
	* toplev.c (sorry, really_sorry): New error reporting fns.
	* c-decl.c (language_string): New var, name of this language.

	* c-parse.y: Don't include flags.h.
	* dbxout.c: Do include it.

	* dbxout.c (dbxout_type): Handle function fields and static fields
	and basetypes.  Handle METHOD_TYPE and REFERENCE_TYPE.
	Abort on unexpected tree code.
	(dbxout_args): New fn to output prototype arg types.
	(everywhere): Use IDENTIFIER_LENGTH instead of strlen.
	(dbxout_type_name): Cleanup; avoid strlen.

	* local-alloc.c (reg_is_set): Don't call {post_,}mark_life for pseudos.

	* tree.h (TYPE_BASECLASSES): New field in type nodes.

	* ns32k.md (insv patterns): Was adjusting the address wrong.

	* c-decl.c (grokdeclarator): Just a warning for inline varargs fn.

Mon Aug  8 08:16:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (immed_real_const_2): Guts of creating a CONST_DOUBLE.
	* expr.c (expand_expr): Use that for 64-bit int constants.

	* loop.c (invariant_p): Don't check x->unchanging; it's not safe.

	* c-typeck.c (build_indirect_ref): Handle flag_volatile here
	so that it propagates to component_refs.
	* expr.c (expand_expr): No need to handle it here.

	* integrate.c (save_for_inline, expand_inline_function):
	Set up insn_map to record mapping of old uids to copied insns.
	(copy_for_inline, copy_rtx_and_substitute): Map 'u' refs via insn_map.

	* emit-rtl (emit_label, emit_barrier): Return what was emitted.

	* sdbout.c (sdbout_filename): Split off from sdbout_init.
	* tm-encore.h, tm-3b1.h, tm-vaxv.h, tm-att386.h (ASM_FILE_START):
	Call sdbout_filename.

	* toplev.c: Better messages for invalid options.

	* tm-m68k.h (PRINT_OPERAND_ADDRESS): Handle labelref+basereg.

	* tm-3b1.h (PUT_SDB_DIM): Override sdbout's definition.
	(ASM_FORMAT_PRIVATE_NAME): Override tm-hp...s definition.
	(PUT_SDB_PLAIN_DEF): Prepend `~' to specified name.
	(SDB_GENERATE_FAKE): Prepend `~'.

	* gcc.c: Include config.h before obstack.h.

Sun Aug  7 11:17:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_decl): Do nothing with CONST_DECL.
	Treat FRIEND_DECLs like variables.
	(layout_record): Handle VAR_DECLs and FUNCTION_DECLs in the fieldlist.
	Handle basetypes (almost like fields).
	(layout_type): Handle REFERENCE_TYPE and METHOD_TYPE.

	* tree.c (temp_tree_cons): New fn.
	(array_type_nelts, simple_cst_equal): New fns.
	(lvalue_p): CALL_EXPR is an lvalue if it returns REFERENCE_TYPE.
	() Manage TYPE_REFERENCE_TO.
	(TYPE_HASH_SIZE): Bigger.
	(type_list_equal): Compare the TREE_PURPOSE fields.
	(build_reference_type, build_method_type): New fns.

	* stmt.c (block_stack): Add field `cleanups' to each element.
	(expand_{start,end}_bindings, expand_decl): Update that field.
	(stack_block_stack): Now includes blocks that have cleanups.
	(goto_fixup_chain): Add field `cleanup_list_list'.
	(expand_goto_internal): Execute cleanups for blocks being exited.
	(expand_fixup): Make a fixup if any block has cleanups.
	(fixup_gotos): New args CLEANUPS and DONT_JUMP_IN.
	Execute cleanups for blocks being exited, or add to cleanup_list_list.
	(expand_end_bindings): New arg DONT_JUMP_IN.  Execute any cleanups.
	(expand_decl): New arg CLEANUP.
	(expand_cleanups, fixup_cleanups): New functions.
	* c-decl.c: Calls to expand_decl pass new arg.
	* c-parse.y: Calls to expand_end_bindings pass new arg.

	* stmt.c (expand_return): Handle INIT_EXPR, or bare RESULT_DECL.

	* stmt.c (case_stack): Add field `has_default' to each element.
	(pushcase,expand_end_case): Maintain and use that field.

	* stmt.c (pushcase): Handle RANGE_EXPR cases.
	(pushcase_range): Create RANGE_EXPR cases.

	* final.c (final): Always pass 3 args to ASM_OUTPUT_CASE_END.
	* tm-3b1.h: Delete offending spaces.

Fri Aug  5 16:17:16 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (copy_rtx_and_substitute): Don't make fp+reg+const
	without an intermediate temporary reg.

	* print-tree.c (dump): Don't print an identifier's chain.

	* toplev.c (compile_file): Treat `.i' suffix like `.co'.

	* gcc.c: New config macro CC1_SPEC: extra switches for cc1.
	Make a new spec for `.i' files.

	* c-decl.c (pushdecl, finish_decl): Delete duplicate tests.

	* varargs.h: Maybe include va-sparc.h or va-spur.h.
	* va-sparc.h: New file.
	* va-spur.h: renamed file.

	* tree.h ({TYPE,DECL}_LANG_SPECIFIC): Types and decls can point to
	language-specific structures containing other info.
	* print-tree.c (dump): Hooks for printing the language-specific
	data in types and decls.

Thu Aug  4 08:54:30 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.def: Add some tree codes for C++.

	* Rename files: parse.[yh] -> c-parse.[yh], decl.c -> c-decl.c,
	typecheck.c -> c-typeck.c.
	Part of tree.c split out to c-convert.c.

	* expr.c (push_block): No longer static.
	(expand_expr): Handle REFERENCE_EXPR and INIT_EXPR.
	(expand_call): Turn a METHOD_TYPE to a FUNCTION_TYPE.
	This is probably not all that is required.

	* parse.y (yylex): Use p->rid to check for `signed' and `inline'.

	* tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): typo.

	* sparc.md: Add a pattern for andcc.
	(cmpsf): Clobber reg 32 in DFmode.
	(branches): There are no unsigned floating branches; abort.
	(bgt): Correct name of floating variant.
	(mov?i): Load small constants via mov.
	(movdf for constants): Use mov, not add, to move regs.
	(movsf, floatsi*, fix*): Simplify reg-to-reg-via-mem move generation.
	(trunc*): Use mov, not or, to move regs.
	(negsi2, one_cmplsi2): Avoid "neg" and "not" assembler syntax.
	(call...): Generate "call" insns; handle #-reg-parms value.
	* Define some peepholes for return insns.

	* tm-sparc.h (TARGET_SUN_ASM): New target flag.
	(TARGET_DEFAULT): Now 1.
	(FRAME_POINTER_REQUIRED): Now 1.
	(STARTING_FRAME_OFFSET): Now -16.
	(LEGITIMATE_CONSTANT_P): Only CONST_DOUBLEs fail.
	(FUNCTION_{PROLOGUE,EPILOGUE}): Rewritten.

	* output-sparc.c (small_int): Test for int that mov can load.
	(singlemove_string): Use mov, not add.
	(output_move_double): Changes for overlap and for use of ldd, std.
	(output_fp_move_double): Use ldd, std when safe.
	(make_f0_contain_0): Simplify.

	* integrate.c (expand_inline_function): Some special CALL_INSN
	handling no longer needed due to REG_FUNCTION_VALUE_P.

	* m68k.md (movqi): Constraints allow moving areg to areg.

Wed Aug  3 08:29:31 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.25 released.

	* integrate.c (expand_inline_function): Don't let MEM be inline_target.

Tue Aug  2 09:13:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (INTEGRATE_THRESHOLD): New macro, default dfn here.
	(function_cannot_inline_p): Use it.

	* rtl.h (REG_FUNCTION_VALUE_P): New macro.
	* stmt.c (expand_function_start): Set that flag in the return reg.
	* integrate.c (expand_inline_function, copy_rtx_and_substitute):
	Test that flag to test for the return value.
	* expmed.c (expand_fixed_bit_field, expand_mult, expand_divmod): ditto.
	FUNCTION_VALUE_OUTGOING_REGNO_P no longer needed.

Mon Aug  1 02:46:08 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (copy_rtx_and_substitute): If NO_FUNCTION_CSE,
	don't break out constant fcn addresses here.

	* expmed.c (expand_fixed_bit_field): Tests of FUNCTION_VALUE_REGNO_P
	were backwards.

Sun Jul 31 13:10:07 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* recog.c (indirect_operand): New function.

	* output-i386.c (print_operand): define %*. eliminate %s.
	(fp_top_dead_p): In nonopt case, skip stack-adjusts while looking
	for the insn that uses the function value.

	* varasm.c (text_section, data_section): New functions.
	Replaced explicit printfs elsewhere with calls to them.
	* final.c (final_start_function): Use these fns.
	* sdbout.c (sdbout_one_type): Use text_section.
	* tm-att386.h (ASM_OUTPUT_LOCAL): Use data_section.

	* expr.c (prepare_call_address): Don't pass const via reg if no -O.

	* tm-sparc.h (FUNCTION_{PROLOGUE,EPILOGUE}) Round the size of saved
	registers.  Fix bug counting saved registers.

	* tm-sparc.h (ASM_OUTPUT_SOURCE_LINE): Define this macro.

	* tm-sparc.h (DEFAULT_SIGNED_CHAR): Now 1.

	* expr.c (expand_builtin, alloca case): Adding stack offset needs
	special code if TARGET is a MEM.

	* dbxout.c (dbxout_init): Define Ltext: after the reference to it.

	* tm-3b1.h (ASM_OUTPUT_CASE_LABEL): `short 0' triggers assembler bug;
	`short L%nn-L%nn' supposedly works.

Sat Jul 30 00:25:52 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sparc.md (floatsidf2): Minor change in output.
	(fix_trunc{sf,df}si2): Similar.

	* output-sparc.c (output_fp_move_double): Minor change in output.

	* stmt.c (assign_parms): Don't count stack space for struct value
	address if the function does not have one.

	* sdbout.c: Output .dim's and total size for arrays.
	Detect bit-fields properly.
	Changed handling of structure tags.

	* reload1.c (new_spill_reg): counted_for_nongroups is a new arg;
	store 1 in it if this reg is needed for max_nongroups.

	* reload1.c (choose_reload_targets): Allow inheritance of DFmode
	if it needs only one register.

	* reload1.c (choose_reload_targets): Delete the death-note from the
	store-insn of an inherited reload if PRESERVE_DEATH_INFO_REGNO_P.

	* reload.c (push_reload): Crash if PREFERRED_RELOAD_CLASS is NO_REGS.
	(find_reloads): Smarter handling of forcing CONST_DOUBLE into mem.
	Check PREFERRED_RELOAD_CLASS & do this if it says NO_REGS.

	* reload.c (subst_indexed_address): Handle case with 2 regs
	and no constant term.

	* local-alloc.c: New variable qty_n_refs, set from reg_n_refs
	and tested in qty_compare{,_1}.
	(combine_regs): Update qty_n_refs.
	Update qty_preferred_or_nothing more intelligently.

	* regclass.c (regclass, reg_class_record, record_address_regs):
	Count the number of refs to each reg along with the costs,
	and use it when computing the preferred_or_nothing flag.
	(Can't use reg_n_refs since that is weighted by loop depth).

	* global-alloc.c (global_alloc): Enable test of OVERLAPPING_REGNO_P
	for setting no_global_alloc_regs.

	* expr.c (prepare_call_address): Use force_reg, so it gets a REG_EQUIV.

	* optabs.c (can_{fix,float}_p): Return enum insn_code, not a function.
	(init_{fix,float}_tab): Store enum insn_code's in fixtab and floattab.
	(expand_{fix,float}): Change calls to can_{fix,float}_p.
	Also, use emit_unop_insn to make the actual insns.

Fri Jul 29 02:42:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (initialize_char_syntax): If dollars_in_identifiers is 0,
	set entries for `$' to 0.
	Set entries to 1 rather than incrementing them.

Tue Jul 26 11:14:22 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (assemble_variable): Make SDB output only if top-level.

	* local-alloc.c (reg_is_set): Arg to mark_life is regno, not qty.

	* output-ns32k.c (print_operand_address): New flag SEQUENT_BASE_REGS
	* tm-sequent.h: Define that flag.

	* Makefile: add some missing deps.

	* tm-encore.h (ASM_FILE_START): Changed to do nothing.

	* sdbout.c (sdbout_init): Fix two dumb errors.

	* sdbout.c (sdbout_end_epilogue): No longer takes arg.
	Examine current_function_decl here, not in caller.
	* final.c: Call changed.

Mon Jul 25 01:32:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Handle PCC_BITFIELD_TYPE_MATTERS.

	* tm-3b1.h (__PTR_TO_INT, __INT_TO_PTR): Define these, to alter
	parts of obstack.h.

Sun Jul 24 17:56:53 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Padding for an arg may now go below or above it; new macro
	FUNCTION_ARG_PADDING can now choose which, or can inhibit padding.
	This makes for compatibility with PCC.
	* expr.h: Default definition of that macro.
	* expr.c (emit_push_insn): Put the padding above or below.
	(expand_call): Don't count the padding if none wanted.
	* stmt.c (assign_parms): Adjust parm stack addr if padded below.
	Don't count the padding if none wanted.
	* tm-3b1.h: Define FUNCTION_ARG_PADDING: no padding for > 4 bytes.

	* final.c (alter_subreg): Now returns the altered value
	(but may still modify the original structure).
	Handles (SUBREG:DI (CONST_DOUBLE:DF...)) by returning the CONST_DOUBLE.

	* m68k.md (DImode push): now allows `F'.
	* ns32k.md (movdi): now allows `F'.

	* tm-m68k.h (FIX_FRAME_POINTER_ADDRESS):
	Handle indexed references to frame pointer.
	* tm-i386.h, tm-m88k.h, tm-sparc.h: Likewise.

	* cse.c (predecide_loop_entry): Must search for the loop top label.

Sat Jul 23 08:53:01 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* parse.y (yylex): typo in wide strings.

	* tm-vaxv.h, config-vaxv.h: New files for sysV on vax.

	* config-sun4.h: If sparc and not compiling with GCC, include alloca.h.

Fri Jul 22 02:38:02 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* tree.c (build_real_from_int_cst): CHECK_FLOAT_VALUE at proper place.

	* tm-hp9k320.h ({TEXT,DATA}_SECTION_ASM_OP): Should not include a tab.
	* final.c (final_start_function): Don't output a tab before those.

	* sdbout.c (PUT_SDB_EPILOGUE_END): New macro.
	* sdbout.c (sdbout_end_epilogue): New function to output the C_EFCN.
	Like former sdbout_mark_end_function.  Uses that macro.
	* final.c (final_end_function): Call that function.
	* tm-3b1.h: Override PUT_SDB_EPILOGUE_END like the other PUT_SDB...

	* tm-3b1.h (PRINT_OPERAND_ADDRESS, ASM_OUTPUT_INTERNAL_LABEL,
	ASM_OUTPUT_CASE_{LABEL,END}): Put a % in names of internal labels.
	(ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT):
	New macros, for same reason.
	(FUNCTION_PROFILER): New macro, for % and also to put addr in a0.

	* final.c (output_source_line): For fcn's first line, use lineno 1.
	* sdbout.c (sdbout_end_function): Clear sdb_begin_function_line
	so can recognize first line of next function.

	* sdbout.c (sdbout_init): Output the .file pseudo here.
	* tm-3b1.h, tm-att386.h (ASM_FILE_START): Don't do it here.

	* sdbout.c (PUT_SDB_VAL): Output leading tab, like the other macros.
	* tm-3b1.h (PUT_SDB_VAL): Likewise.

	* regclass.c (regclass): Cast enums to int, not char.
	* varasm.c (record_constant): Likewise.  Avoids 3b1 PCC bug.

	* decl.c (pushdecl): Better choice of error message for extern/static.

	* emit-rtl.c: Do look for STRUCT_VALUE_INCOMING_REGNUM.

Thu Jul 21 02:13:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cse.c (canon_hash): CONST_INT case failed to add to prev. value
	of HASH; was inconsistent with cse_insn mem address hashing.

	* m68k.md (divide insns): Alternate 3B1 syntax for `swap' insn.

Wed Jul 20 18:27:10 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* m68k.md: In shift-by-24 patterns, rejects autoincrement memrefs
	since they are mode-dependent.

Tue Jul 19 13:01:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* parse.y (check_newline): Handle #ident by writing .ident to output.
	* cccp.c: Don't handle #ident; delete IDENT_DIRECTIVE conditionals.

	* stmt.c (expand_end_case): In compares, put constant arg second.

	* jump.c (jump_optimize): Delete conditional jump if followed by
	an unconditional jump to the same place.

Mon Jul 18 17:49:13 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* emit-rtl.c (init_emit_once): Now STRUCT_VALUE_INCOMING is an
	expression for an rtx.  It can make a MEM.  Likewise STRUCT_VALUE
	for outgoing structure value addresses.

	* stmt.c (assign_parms): If incoming struct addr on stack, leave room.
	* expr.c (expand_call): If outgoing addr on stack, push it like an arg.

	* PROMOTE_PROTOTYPES means if proto says `char', pass `int'.
	* decl.c (get_parm_info): Alter DECL_ARG_TYPE to do this.
	* typecheck.c (actualparameterlist): Convert value for this.
	* tm-m68k.h: Define PROMOTE_PROTOTYPES.

Sun Jul 17 14:25:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): peephole can delete insns following INSN.
	Set NEXT after peephole.

	* decl.c (finish_decl): Always restart perm alloc if global.

	* stmt.c (assign_parms): When a float is passed as double, store the
	float in low-numbered word.  Avoids trouble with parm_map in integrate.

	* vax.md: New pattern for decrement and compare against -1.

Sat Jul 16 14:18:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* decl.c (pushdecl): Ignore previous decl if it's really an error_mark.

	* stmt.c (expand_start_case): Make sure case_stmt.start is a NOTE.

	* combine.c (subst): In the simplification for
	(set (zero_extract ...) (and/or/xor (zero_extract ...) const)),
	require same memory location in both extracts.

	* *386*: New files.

	* cse.c (fold_rtx): Save time in memory address if it didn't change.
	Don't replace cheaper expression with coslier one.
	(cse_insn): Reenable generation of REG_WAS_0.  It wasn't obsolete.

	* cccp.c: `ident' has 5 letters.

	* final.c (output_source_line): SDB can't handle multiple source
	files, so ignore line-NOTEs for other files.

	* hard-reg-set.h: New var reg_class_size (# regs in the class).
	* regclass.c (init_reg_class): Set it up.

	* reload.c (find_reloads): If an earlyclobber is in a class of size 1
	as an output, reload it as input instead of as output.

	* reload1.c (choose_reload_targets): Improve elimimation of spilled
	pseudos made dead by reloading: if pseudo is limited to one block
	and that block contains just stores, delete all the stores.

	* reload1.c (choose_reload_targets): reg_has_output_reload is now
	static and survives through reload pass.
	(forget_old_reloads): Don't cancel data on spilled regs of output
	reloads of the insn just made.

	* sdbout.c (sdbout_one_type): Go to .text before defining a type.
	(sdbout_block): Test against do_block was backwards.

	* stmt.c (expand_end_function): New args to make a NOTE for last line.
	* decl.c (finish_function): Pass the args.

	* rtl.c (no_labels_between): New function.
	* vax.md (movsi): Call it.

	* print-tree.c (dump): Don't follow chain of a decl.

	* rtl.c (volatile_refs_p): Moved from flow.c.

Fri Jul 15 13:36:20 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* sdbout.c (PUT_SDB...): Allow config to override any of them.
	* sdbout.c (PUT_SDB_{BLOCK,FUNCTION}_{START,END}): New macros.
	* tm-3b1.h: Override all of them.
	* sdbout.c (SDB_GENERATE_FAKE): New macro to create dummy tag name.
	(gen_fake_label): Use SDB_GENERATE_FAKE.
	* tm-3b1.h: Override its defn.

	* sdbout.c (sdbout_mark_function_end): Unused; deleted.

	* tm-3b1.h: Define SDB_DEBUGGING_INFO.

Thu Jul 14 01:55:15 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* config-sunv4.h: New file for Sunos version 4.

	* tm-sun3.h (CPP_SPEC): Define mc68010 or mc68020, depending.

Tue Jul 12 15:31:30 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (expand_fixup, expand_goto_internal): New functions to
	emit a jump that can restore the stack level, even without tree node.
	(expand_null_return, expand_exit_loop, etc.): Use expand_goto_internal.
	(expand_end_function): Do fixup_gotos after emitting return_label.

	* cse.c (predecide_loop_entry): Avoid using JUMP_LABEL.
	* flow.c (find_basic_blocks): Avoid using JUMP_LABEL.

	* flow.c (insn_dead_p): Delete special case for stack-adjust insns.
	(life_analysis): Mark those insns with INSN_VOLATILE here.
	(mark_used_regs): a SET of a hard reg, in a volatile insn,
	always makes its source live.

Mon Jul 11 10:46:26 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* ns32k.md (floatqidf2): Commented out since assemblers warn about it.

Sun Jul 10 11:49:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* decl.c (xref_tag): Default the TYPE_MODE of enum xrefs
	to avoid making MEM and REG with VOIDmode.

	* vax.md (call): If > 255 args, pop them explicitly.

Sat Jul  9 10:53:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* symout.c (symout_types): Fix up forward refs to previously
	undefined structure types.
	(filter_undefined_types): New function.
	(symout_finish, symout_function_end): Output any never-defined structs.
	* toplev.c (rest_of_compilation): call symout_function_end.

	* parse.y: Don't declare errno if it's a macro.

	* tm-hp9k320 (FUNCTION_PROFILER): Pass ptr in a0, not d0.

	* typecheck.c (truthvalue_conversion): Flush unnec recursive call.
	(build_cond_expr): Bug testing zeroness of IFEXP with TREE_LITERAL.

	* cse.c (fold_cc0): Constants not CONST_INT are certainly nonzero.
	* fold-const.c (fold): ADDR_EXPR is not equal to zero.

	* cccp.c (macroexpand): Disable the macro even if traditional.
	(rescan): Error if use a disabled macro.

	* combine.c (try_combine): Don't substitute a different reg into
	an auto-increment.  Handle multiple REG_INC notes in I1 or I2.

	* decl.c (implicitly_declare): Don't reuse old implicit decl.

	* varasm.c (assemble_variable): Avoid syntax err if no DBX and no SDB.
	* final.c (output_source_line): likewise.

	* fold-const.c (fold): PLUS/MINUS_EXPR: in case of cancellation,
	convert result to original type.

	* regclass.c (reg_class_record): Changed arguments include address
	of entire vector of constraints.

Fri Jul  8 07:59:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (reload): Find groups of more than 2 registers.

Thu Jul  7 08:33:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_push_insn): Typo adjusting arg for bcopy
	if not STACK_GROWS_DOWNWARD.

	* gnulib.c (_cmpsf2): Value is int, not SFVALUE.

Wed Jul  6 11:53:46 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-encore.h, tm-3b1.h: Replace ASM_FILE_START; output a .file.

	* *m88*: New files for Motorola 88000.  They don't really work.

Tue Jul  5 14:40:03 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* local-alloc.c (combine_regs): Don't tie a reg to itself.

	* finxincludes: Make a variable LIB for the target dir.

	* m68k.md (movhi, addhi3, addsi3): Micro-optimize choice of asm insns.

	* expr.c (expand_expr): Use new macros NO_DEFER_POP, OK_DEFER_POP
	in several places, to keep stack predictable.

Mon Jul  4 09:50:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* integrate.c (function_cannot_inline_p): Increase threshold size.

	* flags.h (use_gdb_dbx_extensions): New variable.
	* toplev.c:

	* sdbout.c (PUT_SDB_TAG): Delete duplicate defn.

	* expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char,
	REALLY go via signed int.

	* loop.c (may_trap_p): Was detecting floating arithmetic incorrectly.

	* tm-news800.h (CPP_PREDEFINES): Add sony and sony_news.

	* parse.y (check_newline): Avoid infinite loop at eof.

Sat Jul  2 10:35:17 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.24 released.

	* stmt.c (expand_asm_operands): Produce proper no-outputs insn.
	* recog.c (asm_noperands): Detect no-outputs insns.
	(decode_asm_operands): Likewise.
	* reload.c (find_reloads): Likewise (add case ASM_OPERANDS:).

	* local-alloc.c (block_alloc): Tests of qty_compare were backwards.

	* flow.c (life_analysis): Turn off code that finds regs live at
	function start and marks them not local to any basic block.

	* cse.c (insert_regs): Fix typo (UNITS_PER_WORD).

	* cccp.c: Define max.

	* expr.c (expand_expr): Put each SAVE_EXPR's reg on save_expr_regs,
	if not optimizing.
	* stmt.c (expand_function_end): Mark each of those regs live
	at the end and also retroactively at the beginning of the function.

	* output-vax.c (print_operand_address): New function from old macro.
	* tm-vax.h (PRINT_OPERAND_ADDRESS): Call that function.

	* config-vms.h: If not under GNU C, define X_OK, etc.

	* expr.c (move_by_pieces_1): Use * to call GENFUN.
	(expand_expr): Compare DECL_FUNCTION_CODE against an enum const.
	(preexpand_calls): Likewise.
	* genrecog.c (write_tree): Likewise.
	* final.c (final): Use * to call the output function.
	* reload.c (push_reload): Rename `noshare' to `dont_share'.

	* genoutput.c (output_epilogue): Put more newlines in insn_outfun.
	* genemit (gen_exp): Put in more newlines.

Fri Jul  1 00:23:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* global-alloc.c (allocno_compare): Avoid comparisons of floats
	since that is sensitive to roundoff errors.

Thu Jun 30 09:25:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sdbout.c (PUT_SDB_{DEF,TAG}): Use ASM_OUTPUT_LABELREF.
	(PUT_SDB_PLAIN_DEF): New name for old defn of PUT_SDB_DEF
	(sdbout_one_type): Use PUT_SDB_PLAIN_DEF for `.eos'.

	* tree.c (allocation_temporary_p): New fcn.
	(all_types_permanent): New variable.
	(make_node): If that's set, make each ...TYPE node permanent.
	* decl.c (grokdeclarator): If traditional, make decl data permanent.
	(finish_decl): Make the rtl permanent too.
	* stor-layout.c (layout_type): If type is permanent,
	make its layout data permanent too.

	* cccp.c: Choose C++ or C at run time via var `cplusplus'.
	Separate cplusplus_include_default from include_default.
	Get GNU-specific include directory names from macros
	GCC_INCLUDE_DIR and GPLUSPLUS_INCLUDE_DIR.
	(main): Initialize based on CPLUSPLUS; `-+' sets it.
	* Makefile: Set *_INCLUDE_DIR based on $(libdir).

Tue Jun 28 09:25:49 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.c (copy_node): Round LENGTH up to multiple of sizeof (int).

	* expr.c (emit_push_insn): Avoid using PUSH_ROUNDING if not defined.

	* sparc.md (floatsisf2): Insert missing brace.
	(mulsi3): Replace reg_o0_rtx, reg_o1_rtx.

	* tm-sparc.h: Define DBX_DEBUGGING_INFO.

	* parse.y (yylex): If traditional, no error for out-of-range float.

	* Makefile: Comment saying how to compile on an Apollo.

	* tm-sparc.h (ASM_FILE_START): Switch to new calling convention.

	* decl.c (init_decl_processing): Create type nodes for 64-bit ints.
	(grokdeclarator): use them for `long long'.  Warn only if pedantic.

	* optabs.c (init_optabs): Add missing DImode insn names.

	* expr.c (emit_block_move, emit_push_insn): Use movstrqi if appro.

	* expr.c (convert_move): use extendsidi if appropriate.

	* cccp.c (initialize_builtins): Don't install __STDC__ if traditional.
	(main): Call initialize_builtins after option processing.

	* integrate.c (output_inline_function): Set current_function_decl.

	* cse.c (fold_rtx): Typo in avoiding 32-bit shifts.

	* cccp.c: Add forward-decl.

Mon Jun 27 18:06:42 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* hard-reg-set.h (reg_alloc_order): New variable
	based on REG_ALLOC_ORDER, a new machine-description macro.
	* regclass.c (reg_alloc_order): Define it.
	* local-alloc.c (find_free_reg): Handle reg_alloc_order.
	* global-alloc.c (find_reg): Likewise.
	* stupid.c (stupid_find_reg): Likewise.

Sun Jun 26 10:47:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Version 1.23 released.

	* tm-3b1.h: Define IDENT_DIRECTIVE.

	* tm-encore.h: Define SDB_DEBUGGING_INFO.
	Define SCCS_DIRECTIVE and IDENT_DIRECTIVE.

	* output-ns32k.c: Decl of paren_base_reg_printed must be outside fcns.

	* tm-encore.h (ASM_OUTPUT_DOUBLE): Do 0f, not 0l.
	(CPP_PREDEFINES): No -Dns32032.

	* sdbout.c: Include syms.h, not storclass.h.
	(unnamed_struct_member): Decl was missing.
	(PUT_SDB_INT_VAL, PUT_SDB_VAL): Fix typos.
	(sdbout_types, sdbout_one_type, sdbout_parms): Fix typos.

	* Makefile: Add file sdbout.o.
	Changed comments pertaining to sysV.
	Make a separate target `doc' to make the info files.

	* m68k.md (bit-field insns): Use nonimmediate_operand for the thing
	to extract from.
	* vax.md (QImode bit-field insns): Likewise.

	* recog.c (nonimmediate_operand): Accept any nonconst general operand.

Sat Jun 25 07:54:42 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cse.c (lookup_as_function): arg to exp_equiv_p was missing.

Fri Jun 24 09:14:47 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* recog.c (memory_operand): Allow (subreg (mem...)).

Thu Jun 23 07:34:07 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* decl.c (finish_enum): Compute minimum value like maximum.
	If minimum is negative, install it in the type and make it signed.

	* stor-layout.c (layout_record): STRUCTURE_SIZE_BOUNDARY is minimum.
	(layout_type): A RECORD_TYPE or UNION_TYPE must be BLKmode if
	any member is BLKmode.  This is to prevent putting it in a register.
	(layout_decl): If decl's type is BLKmode, the decl *must* be BLKmode.

	* local-alloc.c (find_free_reg): Never allocate the frame pointer reg.

	* tm-sequent.h (PRINT_OPERAND): Bug in SFmode CONST_DOUBLE.
	* tm-encore.h: Likewise.

	* flow.c (flow_analysis): Bug in n_basic_blocks error check.

	* stmt.c (expand_asm_operands): Emit no insn if an arg is erroneous.

Tue Jun 21 08:34:24 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload.c (find_reloads_address): Write back *loc even if
	subst_reg_equivs makes no change, in case subst_index_address did.

	* flow.c: Define macros for -1 and -2 as values of reg_basic_block.
	(mark_used_regs): Add an `else'; no change in behavior.
	(mark_label_ref): Abort if LABEL_REF doesn't contain a CODE_LABEL.
	(find_basic_blocks): Extra error check.

	* output-ns32k.c (print_operand_address): Changes in handling of
	register-indirect, and of indexing by sb register.

Mon Jun 20 04:55:38 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (collect_definition): Compute needed space more accurately.
	Abort if use more space than was allocated.
	(rescan) [USE_C_ALLOCA]: Do alloca (0) after handle_directive.

	* genflags.c (gen_insn): Put parens around defns of HAVE_... macros.

Sun Jun 19 02:52:53 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_push_insn): Consider PARM_BOUNDARY when compensating
	for size of a pushed arg to bcopy.

Sat Jun 18 07:20:54 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* New files sparc.md, tm-sparc.h, config-sparc.h, output-sparc.c.

	* final.c (final): After an ADDR_{,DIFF_}VEC, do ASM_OUTPUT_CASE_END.
	* tm-3b1.h: Define ASM_OUTPUT_CASE_END.
	(PRINT_OPERAND_ADDRESS): Ref the case tables via an intermediate symbol
	`LDnnn' whose def. is output by ASM_OUTPUT_CASE_END.
	(ASM_OUTPUT_CASE_LABEL): Add missing newline.

	* reload.c (find_equiv_reg): Reject a MEM containing an autoincrement.

Fri Jun 17 06:58:37 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* genpeep.c (main): Write `extern' in the decl for `peep_operand'.

	* flow.c (propagate_block): When a dead insn has a REG_RETVAL note,
	call mark_set_regs anyway, so that `significant' is updated.

	* jump.c (follow_jumps): New arg IGNORE_LOOPS.  If 0, don't follow
	the insn at the beginning of a loop that enters the loop; this avoids
	interference with loop optimizer.
	(jump_optimize, tension_vector_labels): Pass that arg.

	* loop.c (loop_optimize): Mention invalid multiple-entry loops in log.

	* m68k.md (extv, extzv): Fix # of alternatives mismatch in constraints.

Thu Jun 16 03:06:48 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* genrecog.c (change_state): Was mishandling printing XVECEXP indices 
	greater than 9.

	* combine.c (subst, simplify_and_const_int): Avoid making SUBREG
	of a non-REG.

	* expr.c (expand_expr): For FIX_TRUNC_EXPR to unsigned short/char,
	go via signed int.

	* optabs.c (expand_fix): Copy hard_libcall_value reg only once.

	* reload1.c (order_regs_for_reload): Init all elements
	of  potential_reload_regs to -1.

	* Prevent generation of (set (reg) (plus ... (label_ref ...))).
	* explow.c (memory_address_noforce): Like `memory_address' but
	never force it into a register.
	* expr.c (do_tablejump): Use that.
	* m68k.md (casesi): Use that.

	* rtl.h (struct rtx_def, GET_CODE, PUT_CODE): If SHORT_ENUM_BUG,
	define the `code' field as a short.

Wed Jun 15 01:25:57 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gcc.c (CPP_SPEC): New spec set by config.h gives flags to cpp.
	* tm-*.h for m68k: Define CPP_SPEC to define __HAVE_FPU__ on
	appropriate conditions.

	* combine.c (subst): Simplify (not (minus x 1)) and (neg (minus x y)).

Mon Jun 13 02:22:43 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* typecheck.c (build_array_ref): Avoid duplicate errmsg if index
	is an error-mark.

Sun Jun 12 23:04:39 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)

	* cccp.c (handle_directive): If -traditional, quotes aren't special.
	(rescan): Assume newline ends a string constant.

	* cccp.c, cexp.y: Make all fcns non-static; add some forward decls.

	* various: add static forward-decls for various functions.

Fri Jun 10 00:25:18 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload1.c (choose_reload_targets): When writing back an incremented
	value (handling reload_inc), write back to the real place, not to
	OLDEQUIV (a register that holds the same value).

	* tm-m68k.h (LEGITIMIZE_ADDRESS): Don't give force_operand a target.
	This can cause the use of multiple insns with same output reg,
	which can confuse cse.

	* loop.c (consec_sets_invariant_p):
	If invariant_p ever returns 2, we return 2.
	New arg is # of consecutive sets to look for,
	since this info is no longer in n_times_set at move_movables.
	(scan_loop): If consec_sets_invariant_p returns 2, set m->cond.
	(move_movables): check consecutive insns if m->consec && m->cond.

	* tm*.h: ASM_DECLARE_FUNCTION_NAME now takes 3rd arg,
	the FUNCTION_DECL node.
	* varasm.c (assemble_function): Pass this arg.

	* expr.c (expand_call, expand_builtin [alloca]):
	If STACK_POINTER_OFFSET is defined, add it to stack pointer contents
	before using it as address of actual data on the stack.
	* stmt.c (expand_decl): Likewise.

	* stmt.c (assign_parms): If 1st parm named `__builtin_va_alist'
	came in regs, pretend it came on stack.
	Handle pretending a BLKmode var came on the stack.
	If REG_PARM_STACK_SLOT, count stack space for each parm
	even if the parm came in a register; and use that stack space
	if the parm needs to be addressable or is BLKmode.
	Rearrange to simplify conditionals.

Thu Jun  9 01:21:29 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* local-alloc.c:
	`qty_...' vectors' elements for hard-reg-numbers now aren't used.
	`reg_qty' elements for hard-reg numbers now aren't used,
	and the element for a pseudo is never a hard-reg number.
	(local_alloc): No need to reset those elements.
	No need to reset elements out of range of prev block's NEXT_QTY.
	(reg_is_born, reg_is_set, wipe_dead_reg):
	Divide labor in same way for hard regs and pseudos;
	simplify using fact that locality-to-basic-block has been precomputed
	and recorded in reg_qty; avoid refs to reg_qty[HARDREG].
	(reg_is_born, wipe_dead_regs): Block-number arg no longer needed.

	* local-alloc.c (combine_regs): Remove old code for tying hard regs
	to pseudos; great simplification results.
	Use find_regno_note, not regno_dead_p.

Wed Jun  8 00:18:04 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reload.c (subst_reg_equivs): Set a flag if anything is changed.
	(find_reloads_address): Check that flag to avoid extra work.
	Also check early for safe reg+const address and avoid work.

	* reload.c (find_reloads): Use loops instead of bcopy.
	Check early for insn with no real constraints, and return.
	Also check for move from hard reg to hard reg and return.

	* cse.c (canon_reg): Rewrite for speed; use a switch.
	(cse_insn): Don't call find_reg_note if REG_NOTES is 0.

	* cse.c (cse_insn): Store modified SET_SRC even if there's a REG_EQUIV.
	Inhibition was needed when the SET_SRC was the only place to find the
	equivalent value; now it is in the REG_EQUIV note.

	* stmt.c (expand_asm_operands): If NINPUTS is 0, make vec of no elts.
	* regclass.c (reg_scan_mark_refs): Don't lose if XVEC (x,i) is 0.

Tue Jun  7 03:51:28 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stmt.c (assign_stack_local): If big-endian and MODE is narrow,
	the bytes actually used are the least significant.

	* parse.y (skip_white_space): Accept char as arg; let caller read it.
	(yylex): Change call.
	(check_newline): Return 1st nonwhite char after skipping lines.
	(skip_white_space): Change call.
	* toplev.c (compile_file): Change call.

	* gcc.c: Pass -traditional to cc1.

	* cse.c (cse_insn): Return very early for (set (reg) (call...)).
	Mainly to save time.
	(cse-insn) Old code to add REG_WAS_0 note wasted time but did nothing.

	* expr.c (clear_pending_stack_adjust): Really do clear it,
	if current fcn doesn't want to be inline.

	* cse.c (cse_insn): Speedup: instead of safe_hash, use canon_hash
	or HASHREG.

Mon Jun  6 21:47:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (rtx_renumbered_equal_p): Reject ADDR_VEC fast.

	* cse.c (cse_insn): Ignore a REG_EQUIV or REG_EQUAL note if the
	equivalent value is the same as the SET_SRC of the insn.

	* flow.c (life_analysis): Don't call volatile_refs_p for a CALL_INSN;
	just assume value is 1.
	(propagate_block): Don't call mark_{used,set}_regs for a stack-pop
	since if it isn't dead it has no effect on any useful life data.
	(mark_set_1): Return quickly if setting stack-ptr, and almost as
	quickly if setting any hard reg.
	(mark_used_regs): Likewise for refs.
	Also don't scan the vector of an ADDR_VEC or ADDR_DIFF_VEC.
	(volatile_refs_p): Likewise.

	* varasm.c (output_constant): Discard NOP_EXPR and CONVERT_EXPR
	in integer case (they were for casting a pointer).

	* parse.y (compstmt_or_error): Parse a compstmt after ignoring error.
	Use this for fctn body so that an error after store_parm_decls
	won't recover to xdecls and call store_parm_decls again.
	Typical cause was missing semi at end of last parmdecl.

	* parse.y: Add missing semicolons in actions.
	(yylex): Don't use yylloc.

Sun Jun  5 16:14:40 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* typecheck.c (build_array_ref): Check arg types here, to make
	error message more accurate (not about "addition").

Thu Jun  2 02:41:40 1988  Richard Stallman  (rms at rice-krispies.ai.mit.edu)

	* cccp.c (collect_expansion): `#' isn't special if -traditional.

	* dbxout.c (dbxout_parms): Don't output a regparm symbol
	unless the parm got a hard reg assigned.

	* tm-encore.h (ASM_OUTPUT_DOUBLE): Use 0f... not 0d...

	* tm-vax.h (CHECK_FLOAT_VALUE): Define this.

Wed Jun  1 17:13:00 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_call): Have sequence points between args.

Tue May 31 00:27:06 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (store_fixed_bit_field): Avoid shifting by 32.
	* cse.c (fold_rtx):
	* symout.c (subrange_p):  likewise.

	* local-alloc.c (block_alloc): If operands 1 and 2 commute,
	try tying output to operand 2 if operand 1 won't do.

	* toplev.c (compile_file): Pass main_input_file to symout_init.

	* tree.c (build_real, build_real_from_int_cst):
	Call CHECK_FLOAT_VALUE if it's defined, to report out-of-range values.

	* tree.c (build_real, build_real_from_int_cst): New 1st arg TYPE.
	* parse.y (yylex): Pass this arg; requires parsing suffixes first.
	* fold-const.c (fold, combine, fold_convert): Pass this arg.
	Handling of float binops in `combine' simplified.

	* tm-encore.h (CPP_PREDEFINES): Remove -Dencore since CC lacks it.

	* final.c (output_source_line): Let ASM_OUTPUT_SOURCE_LINE
	be used for SDB also.

Mon May 30 00:21:15 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cse.c (insert): Was inserting in wrong place in list.
	(exp_equiv_p): Was failing to check validity when x == y.

	* tree.c (build_pointer_type): Handle saveable_obstack
	like current_obstack.

	* decl.c (finish_decl): Error in test for zero-size array warning.

	* reload.c (find_equiv_reg): New arg MODE specifies mode in which
	an equivalent value is needed.  Equivalence must be good in that mode.
	In addition, notice overlap with multiword register modes.
	Simplify, knowing that registers have already been renumbered.
	It was invalidating memory-goals too easily; setting a reg
	only invalidates memory-goal if its address varies.
	* reload.c, reload1.c, jump.c: Calls pass the new argument.

	* cccp.c: For correct ANSI, must reject `$' in identifiers.
	(dollars_in_ident): Variable says whether to allow them.
	(rescan): Handle `$' as randomchar if that's 0.
	(main): dollars_in_ident is set to 0 by -$, to 1 by -traditional.
	(rescan, do_define): Delete former pedantic warnings for `$'.
	(initialize_char_syntax, initialize_builtins): Inits split to two
	functions; former is called after options are scanned
	so `$' is in is_idchar conditionally.
	* gcc.c: For -ansi, pass -$ to cccp.
	* toplev.c, flags.h: Define dollars_in_ident.
	* parse.y (yylex): Treat $ as punctuation unless dollars_in_ident.
	Delete old pedantic warning about $.
	* tm-vms.h: Define DOLLARS_IN_IDENTIFIERS as 1.

	* cccp.c (rescan): Preprocessing numbers can have signs, after `e'.

	* integrate.c (expand_inline_function): Abort, don't return failure,
	if max_regno is too low.  I believe this can't happen.

	* typecheck.c (build_binary_op_nodefault):
	For ordered comparisons, no pedantic warning about void *.
	For MAX, MIN, ditto, and also don't allow pointer vs 0.

	* typecheck.c (build_unary_op): Don't allow pointer for +.

	* typecheck.c (convert_for_assignment): 
	Add missing warning for	case of unrelated pointer types.
	Change criteria for new ANSI C draft.

	* optabs.c (expand_binop): Don't set unused target_is_not_an_operand.

	* fold-const.c (fold_convert): Don't set unused inprec, outprec.

	* emit-rtl.c, parse.y: Delete unused var.

	* stor-layout.c (add_vc_sizes): Unused function deleted.
	* loop.c (constant_high_bytes): #if 0 this unused function.

	* gcc.c (fatal): Add missing arg to delete_temp_files.

	* cccp.c (dump_defn_1): Add missing arg to skip_quoted_string.

	* reload.c (find_reloads): If constraints don't fit in an `asm',
	print error instead of aborting.

	* regclass.c (reg_class_record): Ignore `&' in constraint.

Sun May 29 00:20:23 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Makefile: Run ranlib only if /usr/bin/ranlib exists.
	Add comment saying what to do on system V.

	* tree.c (suspend_momentary): Switch to the saveable_obstack
	for the sake of inline functions.

	* flags.h (enum debugger): New enum for write_symbols.
	* toplev.c, varasm.c, final.c: Use the enum constants where appro.
	Add calls to sdbout paralleling the calls to dbxout;
	put each in the appropriate conditional {SDB,DBX}_DEBUGGING_INFO.

	* toplev.c (main): Delete -noreg option; it's now the default.
	Make -O an alias for -opt.  Rename -g to -gg.  -g is alias for -G.
	Accept and ignore -Wtrigraphs.
	* gcc.c: Simplify the specs.

	* toplev.c (compile_file), tm-*.h:
	ASM_FILE_START is now a statement, not just a string to be output.
	Output it *after* determining the real source file name.

	* fold-const.c (fold): Simplify x >= CST to x > CST-1 (CST positive).
	To simplify this, canonicalize relationals to put constat last.

	* decl.c (duplicate_decls): Make a 2nd errmsg to show previous decl.

	* cccp.c (file_size_and_mode): Delete temporary VMS bootstrap patch.

	* tm-att386.h: New file.

	* decl.c (pushdecl): Warn if a local `extern' decl precedes
	a file-scope `static' decl.

	* expr.c (expand_call): No warning for failure to inline.

	* expmed.c (extract_bit_field): copy operand 1 of extv or extzv
	into register if memory isn't allowed.

Sat May 28 02:10:56 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib.c, Makefile: Delete va_end.

	* final.c, symout.c: Check DBX_DEBUGGING_INFO, not NO_DBX_FORMAT.

	* genemit.c (gen_expand): Notice a CALL inside a PARALLEL.

	* regclass.c (init_reg_sets_1): Part of init_reg_set is put in this
	new fn which is called after options are scanned.
	Now CONDITIONAL_REGISTER_USAGE can depend on the options.
	(fix_register): Just alter the data that init_reg_sets_1 will look at.

	* reload1.c (reload): Don't complain if two different but tieable
	modes require groups of the same regclass (assuming same size group).

	* cccp.c: Add 3rd arg to all `open' calls.

	* parse.y (check_newline): Typo prevented ignoring whitespace.

	* cccp.c (perror_with_name): fprintf had harmful extra arg.

	* cccp.c (main, trigraph_pcp): -Wtrigraphs means warn if any trigraphs.

	* emit-rtl.c (gen_sequence): If LEN is 1, avoid looking at PATTERN
	of something that doesn't have one.

	* reload1.c (alter_frame_pointer_addresses): frame pointer can
	occur by itself, not just inside a PLUS.
	(reload): Call eliminate_frame_pointer before reload_as_needed.
	Otherwise the latter can make reload insns that copy the frame ptr
	to a data reg, but 68k can't copy sp+const to a data reg.

	* decl.c (implicitly_declare): Always save the implicit decl
	permanently.  Reuse an old one if it exists.
	* tree.c (resume_temporary_allocation): Used after `end_temporary...'
	to go back to temporary allocation.

	* stor-layout (layout_{type,decl}): Call variable_size.
	(variable_size): Turn a size into a SAVE_EXPR and either compute
	it right away or put it on a list to be computed later.
	(get_pending_sizes): Return that list and clear it out.
	* stmt.c (expand_start_function): Tell `variable_size' to compute
	sizes right away, and compute those saved on the list.
	(expand_end_function): Tell it to put them on a list.

Fri May 27 00:02:34 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* dbxout.c (dbxout_symbol): For local static var, use 'V', not 'v'.

	* gcc.c (main): Don't handle SIGHUP or SIGTERM if shell ignored it.

	* Makefile, gcc.c: Propagate Make var `libdir' to gcc search path.

	* expr.c (expand_expr): a PARM_DECL with no rtl can occur in size of
	`a' in `foo (a,i) int i; struct {int x[i];} a;', so report an error.

	* flow.c (insn_dead_p): insn that makes stack bigger is never dead.
	* combine.c (try_combine): Don't splice out stores into stack ptr.

	* reload.c (find_equiv_reg): Test given regno for OVERLAPPING_REGNO_P.

	* varasm.c (assemble_variable): Use saveable_obstack for allocation.

Thu May 26 01:17:00 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* integrate.c (save_for_inline): Clear unused slots in parmdecl_map.
	(There may be some non-parm regs below max_parm_regno.)
	* integrate.c (copy_for_inline): Don't crash if parmdecl_map elt is 0.

	* Don't fail to output a static inline function that was referenced
	via a local extern decl before its definition.
	* expr.c (expand_call): If need to mark a fcn decl addressable,
	mark the identifier addressable also.
	* typecheck.c (mark_addressable): If marking fcn addressable,
	mark the identifier as well.
	* decl.c (start_function): If identifier was marked addressable,
	propagate it to the function.

	* parse.y (yylex): Check for ERANGE after atof is called.
	(Sun doesn't report ERANGE.)

	* loop.c (may_trap_p): Any floating arithmetic may trap.

Wed May 25 00:03:34 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* parse.y: Delete `noalias'.
	(asm_operand): Don't allow this to be empty.
	(asm_operands): Do allow this to be empty.

	* reload.c (operands_match_p): Don't let REG and SUBREG match
	if the reg isn't a hard reg.
	No longer nec. to check reg_renumber, now that reload
	substitutes the hard regno.

	* reload1.c (reload): Counting existing spilled groups,
	check HARD_REGNO_MODE_OK so we don't get fooled by an odd-even pair.
	Spill entire need for new groups before spilling any solitary regs.
	Reg already counted against max_nongroups can't become part of a group.
	(new_spill_reg): Do bookkeeping associated with a new spill-reg.
	(n_spills): This var is now static, no longer passed as arg
	within the file.

	(reload_reg_class_lower): Handle all group-reloads before solitaries.
	(choose_reload_targets): therefore #if 0 the special code for
	finding solitary registers that aren't suitable for groups.
	But fix two bugs in it: braino deciding whether a reload
	is looking for 1 register (not a group).  Use CLASS_MAX_NREGS.
	Also braino deciding whether a spill reg can be in a group.
	Did not fix bug that it fails to test HARD_REGNO_MODE_OK,
	so it might split up an even-odd pair.

	* vax.md: Special patterns for 8 and 16-bit fields, to make
	move-insns (like the ones for the 68k).

	* tree.c (convert_to_integer): Pass truncation down thru COND_EXPR
	as through a binary operator.

	* typecheck.c (build_cond_expr): If unpromoted operand types match,
	don't promote them--let containing expression promote (just once).

Tue May 24 14:46:26 1988  Richard Stallman  (rms at frosted-flakes.ai.mit.edu)

	* combine.c (subst): Simplify (subreg (sign_extend X) 0).

	* tm-hp9k320.h: Delete NO_DBX_FORMAT.
	* Most tm...h files: Define DBX_DEBUGGING_INFO.
	* dbxout.c: Change conditional to DBX_DEBUGGING_INFO.

	* integrate.c (expand_inline_function): If inline fcn was declared to
	return QI, but actually computes an SI, use SImode for INLINE_TARGET
	but actually return a QI.

	* varasm.c (force_const_mem): Failed to determine alignment bdry
	from machine mode.

	* jump.c (jump_optimize): Don't delete (move X Y) if X or Y is a
	PRESERVE_DEATH_INFO_REGNO_P register.

	* final.c (output_addr_const): In PLUS, output constant term last.

	* final.c (final): Before outputting an insn, do FINAL_PRESCAN_INSN.

	* final.c (next_block_index): No longer static.
	(final): Add SDB_DEBUGGING_INFO cases for outputing NOTEs
	for beginning and end of a block.
	(output_source_line): Add SDB_DEBUGGING_INFO case for line number.
	* varasm.c (assemble_function): Add code for SDB symbol output.

	* gnulib.c: Allow config to override INTIFY.
	New macro SFVALUE for data type to return a single-float in.

	* combine.c (remove_death): No longer `static'.

	* reload1. (choose_reload_targets): PRESERVE_DEATH_INFO_REGNO_P
	selects hard regs for which death info should be updated for final.

	* reload1.c (reload_as_needed): Let INSN_CLOBBERS_REGNO_P
	prevent inheritance of certain reloads.

	* reload.c (find_equiv_reg): Let OVERLAPPING_REGNO_P reject
	an equiv reg.  Needed for funny float regs on 80387.

	* cccp.c (do_ident): Define #ident as a no-op if IDENT_DIRECTIVE.
	Warn if pedantic.
	(do_sccs): Warn if pedantic.

	* emit-rtl.c (restore_reg_data): Set cur_insn_uid--prevent duplicates.

See file OChangeLog.

Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never
End:
