File:  [GCC 1.x] / gcc / ChangeLog
Revision (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:52:34 2018 UTC (2 years, 9 months ago) by root
Branches: fsf, MAIN
CVS tags: gcc-136, HEAD

Sun Sep 24 00:21:24 1989  Richard Stallman  (rms at

	* Version 1.36 released.

	* genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'.

	* (casel patterns): Use %@ for operand of .align.
	* tm-tahoe.h (PRINT_OPERAND): %@ prints `1'.
	* tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'.

	* config.gcc (decstation): New entry.

	* tm-harris.h: New file, using tm-tahoe.h.

	* tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files.

Sat Sep 23 00:28:14 1989  Alain Lichnewsky  (lich at glenlivet)

	* added -Zxxx flag in tm-mips.h. (-Z stands for systype)

	  used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose
	  that at somepoint -ZPOSIX might be required for Ultrix. 

	* changed command issued to loader to set -systype and to get
          crt1 crtn instead of crt0.

        * changed predefines for cpp to agree with RISC-OS

	* tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION)
	  so that user does not have to go in and change tm-mips.h anymore

	* cpp defines mips host_mips unix and SYSTYPE_SYSV
	  or SYSTYPE_BSD43. 

Fri Sep 22 00:31:29 1989  Richard Stallman  (rms at

	* (andsi3): Flush spurious paren.

	* Makefile (hard-params): Don't use LIBS or LIBDEPS.

	* rtl.c (init_rtl):
	Use malloc to allocate the string for format of CONST_DOUBLE.
	Don't fail to store in rtx_format.

Thu Sep 21 00:33:13 1989  Richard Stallman  (rms at

	* print-tree.c (dump): Move decl of P in REAL_CST case.

	* fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE.

	* c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0.

	* (movdi): Handle constant with or without WORDS_BIG_ENDIAN.
	For alternative 2, output just 2 store insns, not 3.

	* dbxout.c (dbxout_symbol): Optionally go to .data for
	a static file-scope variable.
	* tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this.

	* varasm.c (output_constant, force_const_mem):
	ASM_OUTPUT_DOUBLE_INT now takes rtx as argument.

	* gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h.
	Define _VARARGS_H.

	* stddef.h (size_t): Don't define it if _SIZE_T macro is defined.
	(NULL): Undef any previous defn.

	* cexp.y (NULL): Don't define if already defined.

	* emit-rtl.c (force_next_line_note): New function.
	* stmt.c (expand_function_start): Call that just before returning.

Wed Sep 20 01:22:16 1989  Richard Stallman  (rms at

	* c-parse.y (asm_clobbers):
	Allow string concatenation: call combine_strings.

Mon Sep 18 00:04:06 1989  Richard Stallman  (rms at

	* expr.c (expand_call): If calling const function, don't defer
	pops for this call.

	* c-parse.y (yylex): When float constant ends in `f',
	actually truncate to a single-float.

Sun Sep 17 01:36:43 1989  Richard Stallman  (rms at

	* gcc.c (SWITCH_TAKES_ARG): -A takes an arg.
	(link_spec): Inhibit start files when -A.

	* (call, call_value): Supply dummy arg to RETURN_POPS_ARGS.

	* gnulib2.c (__fixunsdfdi): After removing top half, A can be neg.
	(__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW--
	use .s.high and .s.low to extract words from long_long.

	* Makefile (gnulib2): Run `./gcc'.

	* Makefile (float.h): Use `make', not `$(MAKE)'.
	(hard-params.o): Use `$(srcdir)' in deps as in commands.

	* out-tahoe.c (output_move_double): Handle constant operand 1.

Sat Sep 16 01:15:24 1989  Richard Stallman  (rms at

	* reload1.c (emit_reload_insns): Put death note for input reload reg
	even if reload was inherited.

	* out-i860.c (output_block_move): Typo loading size of block.

	* (dbra patterns): Do CC_STATUS_INIT.

	* cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate.

Fri Sep 15 00:39:44 1989  Richard Stallman  (rms at

	* combine.c (subst): Don't combine (subreg (mem))
	if subreg's mode is wider than mem's mode.

Thu Sep 14 04:33:51 1989  Richard Stallman  (rms at

	* Makefile (clean): Delete temp files used in making gnulib.

	* tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options.

Tue Sep 12 01:06:39 1989  Richard Stallman  (rms at

	* stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints.

	* (cmpsi + bleu peephole): Should output unsigned insn.

	* expmed.c (store_bit_field, extract_bit_field): If loading mem
	into reg for bit field insn, don't use a larger mode than insn wants.

	* Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid
	wrong order of making when parallel.

	* Makefile (float.h): Do use $(MAKE) to run recursive make.

Mon Sep 11 00:49:11 1989  Richard Stallman  (rms at

	* cccp.c (main): Test for missing arg after -o, etc.

	* tm-next.h: Nearly completely new.

	* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h.

	* cccp.c: Cast some args to strcpy and strcat.

	* genoutput.c (error): Declare arg S.

	* tm-pyr.h,, out-pyr.c, xm-pyr.h: New files.
	* config.gcc: New item for pyr.

	* gvarargs.h: If __pyr__, use va-pyr.h.

Sun Sep 10 00:48:43 1989  Richard Stallman  (rms at

	* reload1.c (inc_for_reload): Really return the first of the insns.

	* stor-layout.c (build_int): Memoize size nodes for sizes <= 32.

	* loop.c (check_dbra_loop): Don't reverse a biv that is used
	in between its update and the loop endtest insn.

Sat Sep  9 02:10:49 1989  Richard Stallman  (rms at

	* stor-layout.c (genop): Don't use `combine' for nonexplicit constants.
	Handle some identity elements, etc., directly.
	(layout_basetypes): Function deleted.
	(layout_record): Ignore any TYPE_DECLs in the fieldlist.
	Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type.
	(layout_union): Delete error check for base types.
	Ignore any TYPE_DECLs in the fieldlist.
	(layout_type): Copy layout info directly into all variants of type.
	Delete unused local `x'.

	* (movdi): Handle constant source operand.
	(movsi): Some output code moved to output_load_immediate.
	* out-mips.c (output_load_immediate): New function.

	* config.gcc (iris): Use tm-iris.h and xm-iris.h.

	* integrate.c (copy_for_inline): Copy all nonconstant MEM addresses.

	* tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit
	bytes of 0 if in text segment.

Fri Sep  8 19:15:08 1989  Richard Stallman  (rms at

	* combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET.

Thu Sep  7 00:16:32 1989  Richard Stallman  (rms at

	* integrate.c (function_cannot_inline_p): Fn is "not even close"
	only if > 3 * max_insns.

	* toplev.c (fatal_insn_not_found): New fn.
	* genextract.c (main): Make insn_extract call that fn.

	* integrate.c (expand_inline_function): Don't abort about bad offset
	in a parm whose type is error_mark_node.
	Make another syntax level to hold parm destructors.

	Increment push_loc after, not before, each reg save or restore.
	When storing reg 9 or 29, use offset tsize-4.
	Make tsize larger by 4 initially.

	* gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir
	if they exist.

	* toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort):
	New function which can be used to replace `abort'.

	* toplev.c (main): Save argv, argc in save_argv, save_argc.

	* jump.c (delete_insn): Always advance NEXT across deleted insns,
	in case not optimizing.  Fixes setting current_function_returns_null.

	* symout.c: Include stddef.h with <...>.

Wed Sep  6 00:39:35 1989  Richard Stallman  (rms at

	* gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'.

	* combine.c (combine_instructions): Dont call record_dead_and_set_regs
	if insn has become a NOTE.

	* reload.c (combine_reloads): Update reload_when_needed.

	* jump.c (delete_insn): If delete label on ADDR_VEC, delete table too.
	(jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table.

	* gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long,
	and/or its two halves, unsigned.

	* reload1.c (reload): When setting double_reg_address_ok,
	require it to be offsettable.
	* out-sparc.c (output_fp_move_double): Now safe to use std
	for all reg+reg addresses.

	* Add another simplified-casesi pattern for operand 0 constant.

	* cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0.
	Don't alter WIDTH for that purpose based on the operands.

	* stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect.

	* c-parse.y (ALIGNOF unary_expr): Find a larger value if possible.

	* reload.c (combine_reloads): Don't combine an output address reload.
	(find_reloads): Call combine_reloads after setting reload_when_needed.
	(find_reloads_address): Update OPERAND if copy the operand.

	* cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad.

Tue Sep  5 14:12:23 1989  Richard Stallman  (rms at

	* reload.c (find_dummy_reload): Don't use the output reg if it is
	a fixed reg which can overlap with other regs.

	* cse.c (exp_equiv_p): Two vectors must have same length.

	* tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong.

	* optabs.c (expand_fix): Undo previous change (unsigned conversion).
	It doesn't work.

	* gcc.c: Pass -i option to cpp.  It takes an arg.

	* cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices.

	* Makefile (gnulib): Create it in tmpgnulib, then rename at the end.

	* (movdi from constant pattern): Fix `st' opcode typos.

	* Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS.

Fri Sep  1 03:43:50 1989  Richard Stallman  (rms at

	* tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas.
	(ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary.

	* integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes.

	* Makefile (clean): Delete dbr and jump2 dumps.

	* Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir.
	This avoids trouble with -I options, etc.

Thu Aug 31 15:07:19 1989  Richard Stallman  (rms at

	* reload1.c (emit_reload_insns):
	Be specific moving REG_DEAD notes to an output reload.
	Sometimes move them to output-operand-address reloads.

	* out-sparc.c (output_fp_move_double): Very cautious about std.
	Use it only for something visibly aligned, or for an array element.

	* cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME.
	(pfatal_with_name) [VMS]: Return VMS system call error code as status.
	(cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE.

	* xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000).

	* expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE.

	* gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int'
	to avoid infinite recursion.

Wed Aug 30 13:28:54 1989  Richard Stallman  (rms at

	* loop.c (skip_consec_insns): Skip NOTEs.

	* loop.c (general_induction_var): If G or V is a nonreplaceable giv,
	give up.  If G is allocated here, consider it replaceable.

	* stupid.c: Make uid_suid, reg_where_born and reg_where_dead
	vectors of ints, not short.

Tue Aug 29 00:21:13 1989  Richard Stallman  (rms at

	* tm-iris.h: Fix typo in formfeed char.

	* out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'.

	* loop.c (general_induction_var): Don't set G from 2nd op. of MINUS,
	since that would negate the result.

Mon Aug 28 00:16:36 1989  Richard Stallman  (rms at

	* dbxout.c (dbxout_symbol): When we need a pointer type, don't
	record it in TYPE_POINTER_TO, lest it not live as long as its target.

	* tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE.

	* Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir.
	(hard-params.o): Copy it into current dir before compiling.
	(STAGESTUFF): Include the stamp-*.[ch] files.

Sun Aug 27 13:59:39 1989  Richard Stallman  (rms at

	* out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31.

	* integrate.c (expand_inline_function): Ignore insns to set value reg
	if we don't want the value.

	* varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME.

	* Makefile (stamp-gnulib2): Don't explicitly delete old members,
	just replace them.

	*, (trunchiqi): Use movew if moving from memory
	or from a const_int.

	* integrate.c (expand_inline_function): Set first_parm_offset
	later on, after computing the args, in case those args
	contain inline function calls.

	* (movqi): Like recent change in

Sat Aug 26 00:26:03 1989  Richard Stallman  (rms at

	* tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000.
	* tm-news.h (CPP_PREDEFINES): Add mc68000.

Fri Aug 25 15:37:35 1989  Richard Stallman  (rms at

	* optabs.c (expand_fix): Can convert to unsigned int
	by subtracting 2**(N-1), converting to signed, and adding 2**(N-1).

	* reload.c (find_reloads_address): For out-of-range stack slot,
	reload the displacement into a reg.
	(find_reloads_toplev): For subreg of a reg with a reg_equiv_address,
	turn the whole thing into a memref.

Thu Aug 24 14:07:03 1989  Richard Stallman  (rms at

	* c-decl.c (grokdeclarator): If function is declared `extern inline',
	set current_extern_inline.
	(start_function): In that case, set TREE_EXTERN in function decl.
	* toplev.c (rest_of_compilation): In that case, don't really compile.
	(compile_file): Don't output such functions at the end either.

	* c-typeck.c (build_function_call): Do set NAME if we have one.

	* Prevent any variability in results of qsort.
	* stupid.c (stupid_reg_compare): Compare by regno as last resort.
	* global-alloc.c (allocno_compare): Same idea.
	* local-alloc.c (qty_compare_1): Same idea.
	* reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea.

	* cccp.c (macroexpand): If read one arg, but it's whitespace,
	consider that 0 args for checking number of args.
	Improve plurals in error messages.

	* expr.h (inhibit_defer_pop): New name for current_args_size,
	now declared here.
	(NO_DEFER_POP, OK_DEFER_POP): Moved here.
	* expr.c: Names related to current_args_size renamed.
	(clear_current_args_size): Deleted.
	* stmt.c (expand_function_start): Init inhibit_defer_pop here.

	* stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP.
	(expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops.

	* Makefile ( Pass -o option to Bison.

Wed Aug 23 23:14:06 1989  Richard Stallman  (rms at

	* expmed.c (store_bit_field, extract_bit_field):
	Use GET_MODE_WIDER_MODE to scan possible modes for bestmode.

	* Makefile (stamp-gnulib2): Discard error messages from `ar d'.

Tue Aug 22 00:31:51 1989  Richard Stallman  (rms at

	* final.c (output_source_line): In COFF, don't output `.ln 0'.

	* Makefile (stamp-gnulib2): Depend on gnulib.  For parallel make.

	* stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0.

	* (truncdfsf2): Pay attention whether stack top is dead.

Mon Aug 21 22:02:40 1989  Richard Stallman  (rms at

	* reload1.c (choose_reload_regs): Don't use regno uninitialized,
	in the code that does find_equiv_reg.

Sun Aug 20 00:06:47 1989  Richard Stallman  (rms at

	* (movqi): Was outputting bad code for areg->mem and mem->areg.

	* explow.c (memory_address): Handle a hard reg in wrong reg class.

	* stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return
	reg when returning address of structure value block.

	* integrate.c (save_for_inline): Preserve integrated bit on insns.

Sat Aug 19 14:20:07 1989  Richard Stallman  (rms at

	* combine.c (subst): Don't change (subreg:M (mem:N ...)) to 
	(mem:M ...) if address is mode-dependent.

	* config.gcc: Copy and alter Makefile for any srcdir except `.'.
	In that case, make a .gdbinit as well.

	* (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative.

	* (cmpv and cmpzv patterns): Use COMPARE, not MINUS.

Fri Aug 18 12:24:52 1989  Richard Stallman  (rms at

	* (movqi): Change move to mov in assembler code.

	* integrate.c (expand_inline_function):
	Handle args passed in regs and copied to slots reached via arg ptr.

	* out-sparc.c (output_delayed_branch):
	Do alter_subreg on operands of delay insn.

	* reload1.c (choose_reload_regs): Look for a reg to share
	before one that we won't share.

	* expr.h: Define OPTAB_MUST_WIDEN.
	* optabs.c (expand_binop): Handle that case.
	* expmed.c (expand_shift): Use that when widening lshift to ashift.

	* optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars.

	* gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero.
	Otherwise tried to shift by 32.
	Also replace constant 32 by something symbolic.

	* final.c (output_source_line): Output line number in COFF
	even if wrong file.

Thu Aug 17 15:16:34 1989  Richard Stallman  (rms at

	* Makefile (version.o): Make this a target; specify source file.
	(obstack.o): Likewise.

	* config.gcc (i860): New alternative.

	* (movstrsi): Record the alignment as operand 3.
	Renumber following (internal) operands.
	* out-i860.c (output_block_move): Rewrite as in out-sparc.c.
	(output_size_for_block_move): Likewise.  And don't
	subtract alignment from the size.

Wed Aug 16 13:27:12 1989  Richard Stallman  (rms at

	* loop.c (combine_movables): Don't combine zero-extend
	registers that live outside the loop.

	* integrate.c (expand_inline_function): Use copy_to_mode_reg
	to set up this_struct_value_rtx, to handle sums right.

	* Makefile: Use $(srcdir) in bison output files used as deps.
	Supply some missing deps.
	(*.info, doc): *.info files go in srcdir.

Tue Aug 15 00:11:12 1989  Richard Stallman  (rms at

	*, tm-i860.h, out-i860.c: New files.

	* c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL
	is a definition or just a decl.
	Combine code to preserve various things from old definition
	through a declaration.

	* config.gcc: Scan all args at beginning, setting variables.
	Arg of form -srcdir=... sets srcdir explicitly.
	srcdir now doesn't contain a slash, and is used with a slash.

	* Makefile (install): Copy header files and gcc.1 from srcdir.
	But copy float.h from current dir.  (Remove that from USER_H.)
	(various): Use new variable INCLUDES to get the -I options.
	Add -I. at the beginning of these.
	(gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES.
	Also, get source file from srcdir.
	Also, depend on $(CONFIG_H).
	(alloca.o): Get alloca.c from srcdir.

	* reload1.c (emit_reload_insns): Bug in last change:
	don't fail to set this_reload_insn.

	* Makefile (Bison rules): Specify $(srcdir) for target and source.
	(Explicit C rules): Specify $(srcdir)/ for source in commands.
	Use sed to eliminate `./' in normal case.
	(insn-*.c): Use $(srcdir) to run move-if-change.

	* config.gcc: Check . and .. for the sources.
	If in .., use that when making links.
	Also, copy Makefile, alter srcdir in it, and add a VPATH.	

	* stmt.c (expand_end_case): When converting CONST_INT index
	to an INTEGER_CST, sign-extend if signed type.

Mon Aug 14 13:51:08 1989  Richard Stallman  (rms at

	* c-decl.c (duplicate_decls): Warn for qualifier mismatch
	only if pedantic; don't consider it a type mismatch.
	Merge the qualifiers of the two decls if the types match.

	* expmed.c (store_bit_field): For insv, memref displacement
	always counts in bytes, regardless of unit fetched.
	When checking predicate of op0, accept any mode.

	* optabs.c (expand_float): One call to can_float_p had args backwards.

	* loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn.
	Increment label's use count rather than storing 2.

	* Makefile: Instead of $<, which fails in certain makes,
	use $@ and then substitute in the name with sed.

	* out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests.
	Use orcc insns to store the result and set cc's for it.

	* (scc combination patterns):
	Use operands[0] as basis for recorded cc value.

	* gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions.

	* gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted.
	(union longlong, union double_di): Deleted.
	(HIGH, LOW): Deleted.
	These were deleted because most did not handle full range of DI
	and they didn't use the right calling convention for DI.

Sun Aug 13 13:06:45 1989  Richard Stallman  (rms at

	* c-typeck.c (comptypes): Qualifiers must match.
	(Was already true for scalars.)
	Also, array elt qualifiers must match.

	* tm-apollo68.h (STRUCT_VALUE): Make it 0.
	(This was done before and lost.)
	* out-i386.c (function_epilogue): Use ret $4 to pop structure address.
	(This was done before and lost.)

	* out-i386.c (call_top_dead_p): Don't fail to check
	the rtx code of the insns themselves.
	(This was done before and lost.)

	* out-sparc.c (output_block_move): If align is 8, make it 4.

	* typeclass.h: New file.
	* expr.c: Include it.
	(expand_builtin): Use those codes in __builtin_classify_type.

	* Makefile (all, lang-c): Reinstall gnulib2.

	* Makefile (gnulib2): Don't give up if `ar d' fails.

	* expr.c (emit_library_call): New 2nd arg NO_QUEUE.
	All callers changed to pass it.
	* optabs.c (expand_binop, expand_unop): Don't call emit_queue.
	Instead, pass 1 for NO_QUEUE to emit_library_call.

Sat Aug 12 12:05:22 1989  Richard Stallman  (rms at

	* reload1.c (emit_reload_insns): Decision for where to put input
	reload insn is now common to ordinary case and auto-increment.
	Likewise, updating these positions afterward.

	* stmt.c (assign_parms): Treat last named arg as nameless.
	* expr.c (expand_call): Likewise.

	* explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT.
	(copy_addr_to_reg): Use copy_to_mode_reg.

	* expmed.c (store_bit_field): Handle case where insv rejects memrefs.

	* tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact
	that this is not called when LOG is 0.

Fri Aug 11 16:39:51 1989  Richard Stallman  (rms at

	* emit-rtl.c (get_lowpart): For multi-word, in error check,
	test the unit size of the containing mode.

	* cccp.c (macroexpand, dump_all_macros): Return void.
	(macroexpand): Cast sprintf arg to char*.
	(error, warning, error_with_line): Declare first arg char*.

Thu Aug 10 21:42:13 1989  Richard Stallman  (rms at

	* expr.c (expand_call):
	Use force_operand to copy arithmetic to register.

	* dbxout.c (dbxout_symbol): Go back to N_FUN for const variable.

	* integrate.c (expand_inline_function): Use proper machine mode
	for a structure value in memory at address passed by caller.

Wed Aug  9 15:21:36 1989  Richard Stallman  (rms at

	* config.gcc: Delete unnecessary variable assignments in case stmt.
	(isi68-nfp): New alternative.

	* combine.c (try_combine): Don't substitute for a register
	which is being explicitly clobbered.

	* This change was requested for C++.
	* varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *.
	* toplev.c (rest_of_decl_compilation): Likewise.
	* c-decl.c (finish_decl): Change call to rest_of_decl_compilation.

	* tree.h (struct tree_decl): Pack machine_mode into 8 bits.

	* explow.c (memory_address, copy_to_reg):
	Use force_operand to copy arithmetic to register.

	* tm-isi68-nfp.h: New file.
	* tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that
	change CPP_SPEC and LINK_SPEC.
	(ASM_FILE_START): No `.globl fltused' if soft-float.

Tue Aug  8 21:50:52 1989  Richard Stallman  (rms at

	* varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS
	bits and take modulo, so we don't get negative numbers.

	* varasm.c (record_constant_1, compare_constant_1):
	Record and compare the width of an integer.

	* varasm.c (assemble_function, assemble_variable, get_or_assign_label):
	(force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1.

	* c-decl.c (duplicate_decls): Consider const and volatile as part of
	type when checking for match and when installing new type into OLDDECL.

	* expr.c (do_store_flag): Make sure target fits operand predicate.
	Also, omit the AND insn when true-value is 1
	and the mode we get is wider than the one we want.

	* genrecog.c (main): Make insn-recog.c include real.h.

Mon Aug  7 16:58:56 1989  Richard Stallman  (rms at

	* genemit.c (main): Define `operands' as `emit_operands',
	not `recog_operands'.

	* reload1.c (emit_reload_insns): Don't copy back a dead output reg.

Sun Aug  6 13:56:53 1989  Richard Stallman  (rms at

	* sdbout.c (plain_type_1, sdbout_one_type): Use the main variant.
	(sdbout_type_fields): No need to check TREE_ASM_WRITTEN here,
	since sdbout_one_type does that.

	* expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input.

	* fold-const.c (fold_convert): Attempt to avoid overflow
	when converting real to integer.  Use unsigned conversion for
	low part; always convert as positive and then change sign;
	subtract high part before converting low part.
	Also, check for real values out of range for chosen int type;
	warn and do not convert.

	* tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here.
	(CPP_PREDEFINES): Remove mc68k, add m68k and mc68000.
	[HPUX_ASM]: Define CPP_SPEC here as in the other case,
	but add __HPUX_ASM__ to each alternative.

	* tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it.

	* Makefile: Use $< wherever appropriate.
	Also put definitions of customization vars before the comments
	saying how to override them.

Sat Aug  5 14:15:39 1989  Richard Stallman  (rms at

	* (sne): Typo in opcode name.

	* tree.h (struct tree_identifier): Delete redundant/unused error_locus.

Fri Aug  4 00:04:10 1989  Richard Stallman  (rms at

	* varasm.c (const_hash, compare_constant_1, record_constant_1):
	Compare types only for record constructors, not for array constructors.

	* dbxout.c (dbxout_parms): When outputing parm from home in local slot,
	with address from the RTL, don't do big-endian correction on it.

	* c-typeck.c (build_unary_op): Do default conversion for unary +.

	* cccp.c (rescan): Accept comments between macro and its args.

	* c-decl.c (lang_decode_option): -traditional implies writable strings.

	* cccp.c (trigraph_pcp): Make warning msg more accurate.

	* c-typeck.c (c_expand_asm_operands): Delete the default promotion
	which was inserted mysteriously since 1.35.

	* global-alloc.c (global_conflicts): Allocate regs_set only once.
	Make it twice as big since clobbers are stored twice.

	* (block move patterns): Record and use alignment operand.
	* out-sparc.c (output_block_move): Get alignment from there.
	(output_size_for_block_move): Greatly simplified.

	* tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it.

	* stor-layout.c (layout_record): Anonymous bitfields don't affect
	overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case.

	* loop.c (strength_reduce): Prevent hard reg from becoming biv or giv.

	* combine.c (subst): Simplify (eq (neg ...) (const_int 0)).

Thu Aug  3 13:08:05 1989  Richard Stallman  (rms at

	* cse.c (fold_rtx): For (op var const) special cases, also check 
	for constant as first argument.

	* c-decl.c (pushtag): For global_binding_level, make permanent nodes.

	* expr.c (do_store_flag): Put the CLOBBER before the comparison.

	* expr.c (emit_push_insn): Conditionalize recent changes
	on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc.

	* out-sparc.c (gen_scc_insn):
	Don't be confused by CLOBBER emitted by do_store_flag.
	Skip past such insns looking for last_insn.
	Don't alter last_insn; instead, patch it to a NOTE and emit new insn.

	* varasm.c (const_hash, compare_constant_1, record_constant_1):
	For a CONSTRUCTOR, hash/compare/record type as well as elts.

	* cse.c (cse_insn): July 18 change was wrong.
	Now, invalidate at the beginning any regs explicitly clobbered
	so they will not be substituted for if they appear as inputs.
	* (movstrsi): Copy addresses to temp regs, then use them.

	* loop.c (record_giv): When comparing life spans for setting
	->forces, use luids consistently, not uids.

	* (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32.

Wed Aug  2 17:50:30 1989  Richard Stallman  (rms at sugar-bombs)

	* (patterns to move a subreg): Deleted.

Sun Jul 30 19:23:13 1989  Richard Stallman  (rms at

	* gcc.c (process_command): Skip `-b' like `-B', in 2nd scan.

	* xm-sunos4.h: Deleted.
	* tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead.
	* tm-sun4os3.h: Undef it here.
	* tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC.
	* config.gcc: Use those new files where needed.

	* config.gcc: Delete sun3-fpa and sun3-os4-fpa.
	* tm-sun3-fpa.h: Deleted.

	* cccp.c (do_include): Mention even non-ex files for -M.

	* out-mips.c (addr_compensate): Handle HImode.
	* (Set HI from subreg of SI rule):
	Allow operand in memory.

	* (cmpqi, cmphi): Patterns deleted.
	(cmpsi, cmpsf, cmpdf): Change predicates to register_operand.

	* cexp.y (rule for ?:): Result is unsigned if either operand is.

	* expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs
	at the end, in case the rest of the push does a function call.

	* reload1.c (alter_frame_pointer_addresses):
	After altering a PLUS, re-fetch CODE before scanning subexps.

	* stmt.c (assign_parms): Don't copy the arg pointer value
	if it is also the frame pointer.  If we do copy it,
	inhibit REG_EQUIV notes for parms copied into pseudo regs

	* integrate.c (copy_for_inline, copy_rtx_and_substitute):
	Set up filename and lineno fields of copy of ASM_OPERANDS.

Sat Jul 29 18:58:49 1989  Richard Stallman  (rms at

	* integrate.c (expand_inline_function): Handle struct-value-addr
	passed in memory just like that passed in reg:
	in either case, translate the pseudo-reg made in
	(function_cannot_inline_p): Permit inlining in that case.
	But reject it if using pcc-style return convention.

	* stor-layout.c (layout_type): Consider STRICT_ALIGNMENT
	for ARRAY_TYPE just as for RECORD_TYPE.

Wed Jul 26 12:54:59 1989  Richard M. Stallman  (rms at mipos3)

	* cse.c (fold_rtx): If WIDTH is zero for binary operator,
	look at the modes of the original operands.

	* cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT).
	(predecide_loop_entry): Likewise.
	(fold_rtx): Look at it, for (if_then_else (cc0) ...).

	* expr.c (expand_builtin): Pass back return value from

	* stmt.c (assign_parms): Allow arg pointer reg not to be fixed.
	If it is not, copy it to a pseudo reg and use that later on.

Tue Jul 25 15:42:04 1989  Richard M. Stallman  (rms at mipos3)

	* expr.c (expand_builtin): New builtin __builtin_classify_type.
	* tree.h, c-decl.c: Additional support.

	* flow.c (mark_used_regs): Treat arg pointer like stack pointer.

	* expr.c (emit_library_call):
	Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc.

Mon Jul 24 11:18:10 1989  Richard M. Stallman  (rms at mipos3)

	* loop.c (regs_match_p): Fix braino.

	* integrate.c (copy_for_inline, copy_rtx_and_substitute):
	Make ASM_OPERANDS constraint vector be shared like operand vector.

	* xm-iris.h: New file.

	* Makefile (stage4): New target.

	* gnulib2.c (badd, bsub, bmul, bdiv): If want long value from
	arithmetic, widen the operands first.
	(__div_internal aka bdiv): Rename to __bdiv.

	* (seq combination patterns): Fully initialize cc_status.

	* expr.c (emit_push_insn): Like July 19 change, for BLKmode.

	* stmt.c (expand_function_end): Stack-restore for alloca
	is now done after the return_label.

	* loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg.

	* integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs.
	(expand_inline_function): Always create parm_map.
	Handle structure value that way if nec. even if no parms.
	Otherwise, find the pseudo used in the function to hold the
	structure address, and map it to a new pseudo.

	* expr.c (expand_call):
	Use mark_addressable to make FNDECL addressable.
	* c-typeck.c (mark_addressable): No longer static.

	* cse.c (cse_insn): Modify last change: don't canon_reg
	for hard regs inside clobbers.

	* expr.c (expand_assignment): ALIGN arg to store_field comes from
	the structure, not from the value stored.

Fri Jul 21 16:23:45 1989  Richard M. Stallman  (rms at mipos3)

	* stmt.c (warn_if_unused_value): Don't warn for a cast
	around a MODIFY_EXPR.

	* tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it.
	(CPP_PREDEFINES): Add some.

	* combine.c (simplify_and_const_int):
	Simplify (and (ashiftrt (zero_extend FOO) N) M).

	* optabs.c (expand_binop): When widening,
	for some operations we need not actually extend.

Thu Jul 20 16:16:35 1989  Richard M. Stallman  (rms at mipos3)

	* Makefile (insn-emit.o): Depend on insn-codes.h.

	* stmt.c (check_for_full_enumeration_handling): 
	Handle all cases for TYPE_NAME of enum type.

Wed Jul 19 17:00:39 1989  Richard M. Stallman  (rms at mipos3)

	* fold-const.c (fold_convert): Don't fail to force_fit_type.

	* expr.c (emit_push_insn): When pushing only part of scalar on stack,
	adjust stack offset not to count the words not pushed.

	* stmt.c (expand_function_end): Always put return structure address
	in return register.

	* c-typeck.c (process_init_constructor): Assume 0 for nameless field.

	* recog.c (general_operand, memory_operand):
	Check validity of mem address using the mode of the MEM.

	* fixincludes: When calling egrep, use redirect, not -s.

Tue Jul 18 11:18:55 1989  Richard M. Stallman  (rms at mipos3)

	* Makefile (bootstrap*): Pass value of libdir down.

	* cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs.

	* cse.c (cse_insn): Don't use no_labels_between_p to check
	for jump to following label; find following label and compare.

	* combine.c (try_combine): Don't substitute into subreg(x)=y
	if modes of x and y are not tieable.

	* out-i386.c (call_top_dead_p): Don't fail to check
	the rtx code of the insns themselves.

	* (tstsf, tstdf): Don't discard TOS if not dead.

	* stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P
	for pseudos which live across jumps or labels.
	(stupid_life_analysis): Update last_jump_suid, last_label_suid.
	(stupid_mark_refs): Use those to set reg_crosses_blocks.
	(stupid_find_reg): Check that data, passed from stupid_life_analysis.

	* toplev.c (main): Avoid using caddr_t.

	* (inverted bgeu peephole): Typo in opcode.

Mon Jul 17 12:29:45 1989  Richard M. Stallman  (rms at mipos3)

	* (mulb patterns): Turned off due to assembler bug.

	* rtl.c (read_name): Use 0, not NULL, for character.

	* (movqi): Typos in mov opcodes.

	* tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P):

	* stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK,
	not just whether defined.

	* (seq, etc.): New patterns.
	* expr.c (do_store_flags): If result is wrong mode, 
	ensure rest of bits are cleared.
	Before storing low part of TARGET, emit a CLOBBER for it.

	* (load address): Use an immediate add if possible.

	* (ashlsi3): Don't generate leal; shift is faster.

	* Now struct_value_rtx is 0 to treat it as a parm.
	* expr.c (expand_call): Implement that.
	* integrate.c (expand_inline_function): Don't freak out.
	* tm-apollo68.h (STRUCT_VALUE): Make it 0.

	* On 386, called function must pop the structure value address.
	* tm-i386.h (STRUCT_VALUE): Don't change this.
	Address is now pushed but not counted as a parm.
	* out-i386.c (function_epilogue): Use ret $4 to pop that address.
	* output.h: Declare the current_function_... variables.
	* final.c: Include output.h.

	* varasm.c (make_decl_rtl): Insert missing `else', validating reg decl.

Fri Jul 14 14:12:17 1989  Richard M. Stallman  (rms at mipos3)

	* out-sparc.c, out-spur.c (output_move_double):
	Fixed typo, addreg0 => addreg1.

	* c-decl.c (lang_decode_option): Handle -fshort-enums.
	(finish_enum): In that case, give enum minimum number of bytes.
	* toplev.c (main): Default flag_short_enums.
	* toplev.c, flags.h (flag_short_enums, flag_signed_char): 
	Define those flags here, not in c-decl.c and c-tree.h.

	* (mulqi3, umulqi3): New patterns.

	* c-convert.c (convert_to_integer): Tighter restrictions on
	distributing truncation through max, min, and multiplication.
	If operands were extended from unsigned, make the operation

	* cccp.c (main): Fix bug where #include <...>, when -I- was used,
	failed to search standard dirs and/or searched some dirs
	intended only for #include "...".

	Increment push_loc after store or load, not before.

Thu Jul 13 11:24:30 1989  Richard M. Stallman  (rms at mipos3)

	* emit-rtl.c (add_insn_after): Don't update last_insn
	if insn is in a sequence.  Instead, update end of sequence.

	* stmt.c (fixup_var_refs): Update end of stacked sequence.

	* stmt.c (expand_function_start): Set result rtl before assign_parms.

	* optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries.

	* stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR.

	* stmt.c (expand_function_start): Make sure parm_birth_insn
	is a NOTE.

	* Makefile (clean): Delete tmp-insn-*.

Wed Jul 12 14:24:12 1989  Richard M. Stallman  (rms at mipos3)

	* (mulqi3): Restrict operand 2 to `q' reg.

	* reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK
	for regs to be inherited.
	Also check HARD_REGNO_MODE_OK at end for modes of both
	reload_in and reload_out as well as reload_mode.

	* Makefile (maketest): Update for config subdir.

Tue Jul 11 16:29:57 1989  Richard M. Stallman  (rms at mipos3)

	* integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT.

	* Changes by Angel Li.
	Define variables CC, CFLAGS, LDFLAGS, LIBS.
	Use LIBR library, not LIB.  Specify a /INC in CFLAGS.
	Use MCR to run the gen* files.  Add some comments.
	* Similar.
	* New file.

	* stmt.c (assign_parms): Compute parm alignment from passed type.

	* c-typeck.c (actualparameterlist): Instead of truncating
	and then promoting for PROMOTE_PROTOTYPES, go straight to int.

	* c-parse.y (setspecs): Save old current_declspecs on a stack.
	(decl, component_decl): Restore from that stack.

Wed Jul  5 15:01:00 1989  Richard Stallman  (tiemann at yahi)

	* tm-aix386.h, xm-aix386.h: New files.

	* loop.c (check_dbra_loop): Handle either test or compare
	for insn two before loop end; detect and reject anything else.

	* expr.c (expand_call, expand_builtin): If alloca is done,
	set current_function_calls_alloca.
	* stmt.c (expand_function_end): If so, generate code to save and
	restore the stack pointer, if not EXIT_IGNORE_STACK.

	* (movsi): Fixes for moving from fp or sp.

	* tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars.

Tue Jul  4 11:01:00 1989  Richard Stallman  (tiemann at yahi)

	* reload1.c (choose_reload_targets): Don't depend on
	reload_spill_index when cancelling invalid inheritance.
	Also, abort if trying to preserve death info
	on a spill reg used in operand addressing.

	* fold-const.c (fold): Don't fold "foo"[n] here.
	* expr.c (expand_expr): Do it here.
	Handle wide strings correctly.

	* (movsf,movdf): Disallow mem-mem moves.
	Enable mem-to-reg moves.

	* c-decl.c (finish_{struct,enum}): Warn if inside parm decls.
	(in_parm_level_p, declare_parm_level): Record when inside.
	* c-parse.y (parmlist, parmlist_or_identifiers): Call

	* c-decl.c (parmlist_tags_warning): Revise warning message text.

	* tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler.

	* tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars.

	* c-typeck.c (decl_constant_value): Use only literal values.

Sat Jul  1 17:29:54 1989  Richard Stallman  (tiemann at yahi)

	* integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs.

	* stmt.c (expand_function_start): Set new global

	* stmt.c (get_frame_size): Return the size, not the offset.
	* integrate.c (expand_inline_function): When setting FP_DELTA,
	compensate for this change.
	* tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h

	* out-mips.c (function_arg): Return 0 for BLKmode.

	* tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows.
	* out-mips.c (function_inarg): Delete; no longer used.

	* (addsi3): Use register_operand for operands 0,1.
	(load address): New pattern, following movsi.
	(fix_trunc*): Use trunc insn, not cvt.
	(cmpfs + bgt peephole): Operands were backwards in template.

	* gcc.c (main): Record in explicit_link_files which input files go
	straight to linker.  If linker is not run, complain about them.
	(execute): Increment execution_count, to show we were called.

	* gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc.,
	so we find all switches that could be valid.

	* varasm.c (output_constructor): Position fields according to
	DECL_OFFSET; don't try to compute alignment here.

	* tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this.

	* reload1.c (emit_reload_insns): Fix stupid error in last change.

	* c-decl.c (duplicate_decls): If redeclaring builtin, give error is
	type mismatched; otherwise warn only if -W.

	* jump.c (jump_back_p): Verify that PREV is not null.

Mon Jun 26 13:50:28 1989  Richard Stallman  (rms at

	* reload1.c (choose_reload_regs): If number of reloads needing
	spill regs exceeds n_spills, don't inherit any reloads.

	* sdbout.c (sdbout_record_type_name): Dumb error in last change.

	* reload1.c (emit_reload_insns): Extend last change: don't use
	equiv reg if reg is in use at same stage of insn, either.

Sun Jun 25 00:00:56 1989  Richard Stallman  (rms at

	* reload1.c (emit_reload_insns): Don't use an equivalent register
	to reload from, if that register was used for reloading
	earlier in this insn.

	* sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the
	type name.  Get rid of TYPE_TAG_NAME as separate macro.

	* optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks.

	* reload1.c (choose_reload_regs): Typo, clearing reload_override_in.

	* tm-i386.h: Add register classes SIREG and DIREG.
	(enum reg_class, REG_CLASS_NAMES): Define class names.
	(REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents.
	(REG_CLASS_FROM_LETTER): Define letters `S' and `D'.

Sat Jun 24 00:17:16 1989  Richard Stallman  (rms at

	* c-decl.c (keep_next_level): New function.
	(struct binding): New slot `keep' says make a LET_STMT for this level.
	(pushlevel, poplevel): Implement that.
	* c-parse.y (stmt exprs): Call keep_next_level.

	* sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE.
	Correct for size less than 0.
	(plain_type): Correct for size less than 0.

	* global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber.

	* reload1.c (order_regs_for_reload): Among regs explicitly used,
	prefer those used less often.

	* reload1.c (choose_reload_regs): If we find alternate place
	to reload from, verify it after all reloads assigned.
	New variable reload_override_in used for this.

	* combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and
	STRICT_LOW_PART for place being set.
	(subst): When using reg_last_set to find what a register contains,
	verify the entire register was set.

	* toplev.c (rest_of_decl_compilation): Report invalid register name.

Fri Jun 23 13:19:41 1989  Richard Stallman  (rms at

	* tm-hp9k3bsd.h: New file.
	* config.gcc: New target hp9k320-bsd.

	* gcc.c (record_temp_file): Don't add a name twice to one queue.

	* stmt.c (expand_expr_stmt): Call warn_if_unused_value.
	(warn_if_unused_value): Code extracted from expand_expr_stmt.
	Recurse to handle COMPOUND_EXPR.  Don't warn about COND_EXPR.

	* tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h;
	return operand unchanged.

	* reload1.c (emit_reload_insns): Don't use recog_memoized
	on an asm.

	* jump.c (delete_insn): Update last_insn.
	* emit-rtl.c (set_last_insn): New function.

	* reload1.c (reload): Put a note at end of insn chain.

	* gcc.c: Put cpp output of .S file into a .s file.

Thu Jun 22 22:14:35 1989  Richard Stallman  (rms at

	* optabs.c (expand_binop, expand_unop): Emit queue before library call.
	It is done within emit_library_call, and cse screws up if there is a
	queued insn in the middle of a cse-able sequence.

Wed Jun 21 11:57:22 1989  Richard Stallman  (rms at

	* tm-mips.h (CPP_PREDEFINES): Define -Dunix.

	* reload.c (combine_reloads): Combined reload needed for entire insn.

	* c-parse.y (yylex): Braino checking for out-of-range escape seq.

	* stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS.
	(layout_struct): Don't let a bitfield cross the storage unit

Tue Jun 20 00:03:48 1989  Richard Stallman  (rms at

	* varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify
	alignment of the constant.
	CONSTANT_ALIGNMENT is a new optional macro.

	* varasm.c (force_const_mem, get_or_assign_label):
	Make buffer bigger.

	* toplev.c (print_target_switch_defaults): New fn called for -version.

	* toplev.c (compile_file): Detect error closing output file.

	* stor-layout.c (fixup_unsigned_type): Don't shift by 32.

	* stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn.

	* stmt.c (expand_end_case): If index is narrow and cannot be
	directly compared, widen it just once.

	* c-parse.y (yylex): Support multi-character constants.
	Thorough rewrite of char constant parsing.

	* c-decl.c (pushdecl): Replace local extern function decl with
	previous global decl if latter is inline, or builtin, or has
	more arg type info.

	* hard-params.c (xmalloc): Define it, for alloca.c.

	* tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile.

	* expmed.c (store_fixed_bit_field): Avoid shift by 32.

	* stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG.
	* final.c (final_scan_insn): For SDB output, do the
	sdbout_begin_function at that note.

	* reload1.c (choose_reload_regs): If a reload reg inherits
	from a previous reload, verify safety after all reloads are assigned.

	* c-decl.c (build_enumerator): Remove no-op casts.

	* reload.c (find_reloads): If an earlyclobber operand matches
	an input operand it is constrained to match, that's not a problem.
	If an earlyclobber operand loses due to earlyclobber, its matching
	input operand also loses.

	* reload1.c (choose_reload_regs): Don't use result of find_equiv_reg
	if that reg is used for reloading in an earlier part of the insn.

	* cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1.

	* Makefile (hard-params*): Use $(OLDCC).

	* c-typeck.c (c_alignof): No warning for -pedantic.

	* c-parse.y (readescape): Don't have both error and warning
	on one hex escape.

	* c-parse.y (yylex): Treat vertical tab as white space.
	(skip_white_space): Likewise.

	* c-parse.y (datadef): If pedantic, warn for stray semicolon.

	* expr.c (expand_increment): Pass accurate unsignedp arg
	to expand_binary_op.

Mon Jun 19 13:36:20 1989  Richard Stallman  (rms at

	* config.gcc (news, news-gas): Use xm-m68k.h.

	* final.c (output_asm_label, output_addr_const): Make buf bigger.

	* cexp.y (main): Handle EOF on input.
	(lookup, warning): Provide as a dummy.
	(is_idchar, is_idstart): Declare as unsigned char.

	* cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values.
	Support hex escapes.  Warn if octal or hex escape doesn't fit in char.

	* cexp.y (yylex): Sign-extend char constants if appropriate.

	* genemit.c: Make insn-emit.c include insn-flags.h.

	* gcc.c: Move record_temp_file past page which declares vflag.

	* integrate.c (expand_inline_function): If copying an insn with
	a REG_EQUIV note, make a similar note.

	* Allow reload regs to be reused for parts of an insn.
	* reload.c (find_reloads): Classify each reload for which part
	of the insn it is needed in.
	(find_reloads_address, etc.): Pass down the overall operand
	that this is part of, to record it on address reloads.
	(push_reload): Record that for each reload.
	* reload1.c (reload): Compute maximum needs of any part of the insn.
	(choose_reload_regs): Part of old choose_reload_targets.
	Hairier criteria for inheriting reloads and for which ones are
	available for the next insn to inherit.
	(emit_reload_insns): The rest of old choose_reload_targets.
	Emit reload insns in proper order according to where they are needed.
	* Record `reload_reg_in_use' separately for each part of the insn.
	(mark_reload_reg_in_use): New function.
	(reload_reg_free_p, reload_reg_free_before_p): New functions.
	(reload_reg_reaches_end_p): New function.

	* expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization.

	* rtlanal.c (rtx_equal_p): Check vectors have same length.

Sun Jun 18 12:16:14 1989  Richard Stallman  (rms at

	* stmt.c (expand_expr_stmt): Maybe warn if top-level operator
	makes an unused result.

	* gcc.c (delete_temp_files, delete_failure_queue):
	If -v, report failures in unlink.

	* Makefile (includes): New target to run fixincludes.
	(install): Swap arms of if-statement.

Sat Jun 17 12:41:53 1989  Richard Stallman  (rms at

	* stor-layout.c (layout_union): Arg to error_with_decl was missing.

	* (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE.

	* loop.c (consec_sets_giv): Change type of force, force2.

	* combine.c (dump*): Declare arg as FILE*.

	* Makefile (clean): Delete hard-params.

	* flow.c (life_analysis): Use a special obstack for the temporary

	* (clr pattern): On 68000, use moveq to clear data reg.

	* gvarargs.h: File varargs.h renamed.
	The old name conflicted with <varargs.h>, now that -I. is used.
	* tree.c, expr.c, emit-rtl.c: Change #include commands.
	* Makefile (install): Install gvarargs.h under name varargs.h.
	* gcc.c: Include gvarargs.h, not system's varargs.h.

	* Makefile: Use -I$(srcdir) before -I$(srcdir)/config.
	* config/tm.h: Deleted; didn't work if config was a symlink.

	* cse.c (cse_insn): Record location of inner_dest
	so it can be replaced properly if a new MEM rtx is made.

Fri Jun 16 14:17:20 1989  Richard Stallman  (rms at

	* Compile and link rtlanal.c.

	* c-typeck.c (build_array_ref): Call fold on the array ref.
	* fold-const.c (fold): Simplify array ref of string constant.

	* stmt.c (expand_asm_operands): Fix error message.

	* Makefile (gnulib2): Remove old members before compiling new.
	Fix stupid errors.
	* gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions.

	* genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete.

	* cse.c (fold_cc0): Extra arg specifies machine mode.
	Callers changed.
	(cse_insn): Record original mode of each src for this purpose.

Thu Jun 15 12:35:18 1989  Richard Stallman  (rms at

	* gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c.
	Use long long for argument type.

	* rtlanal.c (may_trap_p): Moved here from loop.c.
	Return 1 for division by explicit zero.

	* reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses):
	Rerecognize insns which are changed by this.

	* (call_value): Don't return prematurely.

	* (movqi): Handle moving Aregs to mem and vice versa.
	(bftst -> btst): Restrict to bitpos less than 8
	so operand may be non-offsettable.
	(nop): New pattern.
	(return): Was disabled; now deleted.
	* tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it.
	* out-alliant.c (output_btst): Same change as in out-m68k.c

	*, out-alliant.c: Offsetable -> offsettable.

	* c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile. 

	* c-decl.c (duplicate_decls): Don't save inline function data
	from previous definition if a new *definition* is seen.

	* integrate.c (access_parm_map): Handle subregs and constants.

	* stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0.

	* tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it.

	* tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h.

Fri Jun  9 01:39:30 1989  Richard Stallman  (rms at

	* Makefile (float.h): Avoid using $(MAKE).

	* Don't cram two things into STMT_BODY of a LET_STMT.
	* tree.h (struct bind_stmt): New field, subblocks.
	(STMT_SUBBLOCKS): New macro to access it.
	* print-tree.c (walk): Print new field.
	* tree.c (build_let_stmt): Store the old BODY arg into subblocks field.
	* c-parse.y (stmt expr rule): Put rtl expr alone into body field.
	* dbxout.c (dbxout_block): Recurse on subblocks, not body.
	* sdbout.c, symout.c: Likewise.
	* integrate.c (copy_decl_tree): Likewise.
	* stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise.
	* expr.c (expand_expr): For LET_STMT, simply use its body.

	* machmode.def: Add sixth arg to each entry.
	* tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE.
	* rtl.h (GET_WIDER_MODE): New macro; table in rtl.c.
	* expr.c (expand_expr): Use that for widening multiply.

	* stmt.c (fixup_var_refs_1): When converting MEM to QImode for
	bit field, adjust the address if possible to make bitpos
	less than 8.
	* (bftst -> btst): Restrict to bitpos less than 8
	so operand may be non-offsettable.

	* cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file.

	* out-m68k.c (output_btst): Handle COUNT bigger than size of unit.

	* cccp.c (CHECK_DEPTH): Macro to detect instack overflow.
	(finclude, macroexpand, expand_to_temp_buffer): Use that.

	* cccp.c (rescan): Don't check for disabled macro if traditional.
	(macroexpand): Don't disable macro if traditional.

	* sdbout.c (sdbout_one_type): Take out last change; assembler barfs.

	* c-parse.y (maybe_attribute): Eliminate #-syntaxes.
	Make ATTRIBUTE the name for __attribute.

	* c-parse.gperf: Add __attribute{,__} and __signed{,__}.
	* c-parse.y: Install results of that change.

	* Fix bug in sizeof ({...}).
	* c-decl.c (poplevel): Set TREE_USED.  Return the LET_STMT.
	* c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT,
	clear its TREE_USED, and use it as the result.
	* expr.c (expand_expr): Allow LET_STMT as an expr.
	Set its TREE_USED and expand the TREE_VALUE of its body.
	* dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set.
	* sdbout.c, symout.c: Likewise.

Thu Jun  8 00:06:36 1989  Richard Stallman  (rms at

	* c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0
	to 0.0e0 as well.

	* flow.c (life_analysis): Prevent allocation of regs live at setjmp
	on certain machines.  Controlled by LONGJMP_RESTORE_FROM_STACK.
	Sets reg_live_length to -1.
	* local-alloc.c (block_alloc): Be prepared for that.
	* tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it.

	* gnulib2.c (all interfaces): Declare args and values as long long,
	and split them using unions.

	* loop.c (check_dbra_loop): Don't reverse loop if there are two
	refs to varying addresses.  Consider foo[i] = foo[i-1].
	(count_nonfixed_refs): Subroutine to count them.

	* cexp.y: Distinguish signed and unsigned.
	An integer value is now represented by a struct.
	All rules for arithmetic changed.
	(yylex): Adapt to change in yylval data type.

	* limits.h (LONG_MIN): Make sure it's a signed long.

	* sdbout.c (sdbout_one_type): Output types of fields first,
	if they are structs.  Don't go through pointers.
	(sdbout_field_types): Subroutine for that

Wed Jun  7 13:00:44 1989  Richard Stallman  (rms at

	* fixincludes: Switch to /usr/include before doing vuid_event.h.
	Use $2 as output directory for sed.

	* tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx.
	* tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling.

	* expr.c (expand_increment): Typo testing for BImode component.

	* convex changes from csmith:
	* tm-convex.h: use EXTRA_SECTIONS to do .bss.
	out-convex.c: set_section, align_section are now unused.
	* add pattern to pick an A-reg destination for sums
	whose source involves a dedicated A reg (frame or arg pointer)
	* immediate and, or, xor instructions store a 32-bit
	result.  Fix instructions that assumed it was 64.

	* (probe): New pattern to create stack space.

	* Makefile (float.h): Ignore errors from hard-params.
	Specify ./ to run it.

Tue Jun  6 15:45:27 1989  Richard Stallman  (rms at

	* out-tahoe.c: Rename `offsetable' to `offsettable'.

	* (nop): New pattern.

	* (umul...): Constrain operand 1 as `0', not `a'.
	`a' sometimes wanted two a-regs for operands 0 and 1.

	* cccp.c: Forward-declare some structs.

	* c-decl.c: Rearrange fcn fwd decls and struct decls.

	* expr.c: Move some fcn fwd decls after structs their args use.
	* genpeep.c, genextract.c: Likewise.

	* loop.c: Forward-declare some structs.

	* stmt.c: Move decls of structs before those of static functions.

	* loop.c (strength_reduce): Delete extra arg to check_eliminate_biv.

	* integrate.c (expand_inline_function): Supply missing arg
	to convert_to_mode.

	* gcc.c (handle_braces): Supply missing arg to do_spec_1.

	* explow.c (lookup_static_chain): Accept a context arg.

	* expmed.c (store_split_bit_field): Pass ALIGN arg
	to extract_fixed_bit_field.

	* expr.c (expand_assignment): Convert TYPE_ALIGN to bytes.
	(store_constructor, expand_expr): Likewise.

	* m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns.
	(Fully supported only with MOTOROLA and HPUX_ASM flags.)

	* jump.c (do_cross_jump): Don't die if LABEL is 0.

	* tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro.
	* tm-iris.h: New file.  Unsplit lines accidentally split.

Mon Jun  5 15:39:30 1989  Richard Stallman  (rms at

	* integrate.c (output_inline_function): Call init_function_start,
	not expand_function_start.
	* emit-rtl.c (restore_reg_data): No need to init reg_rtx_no.

	* stmt.c (init_function_start): Set current_function_returns_struct.

	* rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p
	* loop.c (strength_reduce): Reject biv initial value which is altered
	subsequently before actual loop start.

	* rtlanal.c: New file split out from rtl.c.
	Has things not used in the gen files.

	* loop.c (strength_reduce): Reject biv initial value in a hard reg
	clobbered by an intervening function call.

	* tree.c (get_identifier): New flag needed to enable id-clash warnings.
	(start_identifier_warnings): Set that flag.
	* c-decl.c (init_decl_processing): Call that, after making built-ins.

Sat Jun  3 14:41:34 1989  Richard Stallman  (rms at

	* final.c (final_scan_insn): No basic block profiling at jump tables.

	* stmt.c (expand_decl): Probe the stack to make pages exist.
	* expr.c (expand_builtin): Likewise, for alloca.

	* move-if-change: Specify /bin/sh.

	* tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS
	with constant operands but not inside CONST.

	* integrate.c (output_inline_function, save_for_inline):
	Save stack_slot_list, and restore it for actual output.
	* emit-rtl.c (gen_inline_header_rtx): New arg for this.

	* emit-rtl.c (restore_reg_data): Initialize reg_rtx_no.
	(restore_reg_data_1): Handle reg_rtx_no jumping past

	* reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0.

	* integrate.c (copy_rtx_and_substitute): Typos for stack parm
	addresses in PLUS case.

	* genoutput.c (gen_insn, gen_peephole): Make output_n fns static.
	(output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined.

	* tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h.

Fri Jun  2 15:40:47 1989  Richard Stallman  (rms at

	* cccp.c (do_include): A file included via a system header file
	counts as a system header file for -M.

	* gnulib2.c: Support boolean ops and shifts.

	* loop.c (emit_iv_inc): Use emit_iv_init_code.

	* rtl.h (CONST0_RTX): Don't try to cast abort.

    	* tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'.
	Delete two garbage lines.

	* loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison
	value.  If value is constant, recognize the insn, and if that fails,
	put the value in a register.  

Thu Jun  1 16:56:39 1989  Richard Stallman  (rms at

	* print-tree.c (dump): Don't die if rtx components are null.

	* expmed.c (expand_mult_add): New fn to do A * X + B.
	(make_tree): New subroutine.
	* loop.c (emit_iv_init_code): Use that.  Much simpler now.

Tue May 30 17:20:40 1989  Richard Stallman  (rms at

	* fold-const.c (fold): Use TREE_SET_CODE to store in tree codes.

	* tree.h (struct tree_common): Make `code' an unsigned int.
	(TREE_CODE, TREE_SET_CODE): Put in casts.

	* optabs.c (emit_cmp_insn): Supply all the args in recursive calls.

	* toplev.c (report_error_function): Fix typo; METHOD_TYPE missing.

	* fixincludes: Add code to make internal non-directory links.

Mon May 29 21:36:28 1989  Richard Stallman  (rms at

	* gcc.c (find_exec_file): Try both with and without machine_suffix.
	(find_file): Use machine_suffix here too.

Sat May 27 00:02:26 1989  Richard Stallman  (rms at

	* reload.c (decompose): OFFSET wasn't initialized.

	* cse.c (cse_main): Assign monotonic cuids.
	(make_regs_eqv, CHEAPER): Use cuids, not uids.
	(cse_end_of_basic_block): Return a cuid, not a uid.

	* expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs
	moved included one extra previous insn.

	* emit-rtl.c (emit_line_note): Don't check -g here.
	(emit_note): For line number when no -g, increment cur_insn_uid anyway.
	* stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED.

	* loop.c (loop_optimize): Don't count line-number NOTEs for luids.
	Prevents -g from affecting optimization decisions.

Fri May 26 17:31:15 1989  Richard Stallman  (rms at

	* local-alloc.c (block_alloc): Don't count notes in insn_number.
	Prevents -g from affecting order of allocation.

Thu May 25 14:12:19 1989  Richard Stallman  (rms at

	* local-alloc.c (block_alloc): Clear full length of regs_live_at.

	* (cmpsi): Make this the first cmp pattern.

	* jump.c (do_cross_jump): Skip NOTEs while checking for existing label.

	* cse.c (cse_insn): When no-oping a jump, decrement use count of label.
	(cse_basic_block): If label use count is 0, go past it.

	* integrate.c (access_parm_map): New fn, broken out of
	copy_rtx_and_substitute, handles case of mem ref to stack arg.
	(copy_rtx_and_substitute): Call it.
	Also use it for address of a stack arg.

	* gen*.c (fatal): Declare 1st arg as string.

Wed May 24 00:13:36 1989  Richard Stallman  (rms at

	* optabs.c (init_optabs): Handle movdi and movdf insns.

	* final.c (end_final): Realign locn ctr after outputting string.

	* tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib.

	* tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386.

	* gcc.c (find_exec_file): Use machine_suffix.
	(process_command): Set that for -b option.

	* integrate.c (function_cannot_inline_p): No size limit
	for functions declared inline.

	* loop.c (skip_consec_insns): New fn, skip several insns or libcalls.
	(force_movables): New fn, part of scan_loop broken out.
	(ignore_some_movables): New fn, ignore a movable whose insn
	is within another movable's libcall.
	(scan_loop): Call those three.
	Don't handle m->consec for zero-extend movables, since always 0.

Tue May 23 12:58:24 1989  Joe Weening  (weening at

	* config/
	Removed operand classes 'x', 'y', 'G', 'H'.
	Added "%." to many opcodes to simplify comparison with
	Changed TARGET_68881 to TARGET_CE.
	Changed floating-point insns to better describe the Alliant CE.
	Most args to floating-point insns are now nonimmediate_operand.
	Removed special insns for pushing doublewords onto stack.
	Added non-CE versions of movsf and movdf to avoid using FP
	registers in this case.
	(float*i*f2): Don't allow immediate ops.
	(sne): Fix typo, fsne => fsneq.
	(call, call_value): Changed to always pop args from stack
	upon return; this gives better code than before and conforms
	to Alliant calling standard.
	Incorporated some recent changes to

	* config/out-alliant.c:
	(regno_reg_class): Removed FPA reg classes.
	(output_move_const_double): Function not needed, removed.

	* config/tm-alliant.h:
	Removed FPA registers and reg classes.
	Target flags: changed TARGET_68881 to TARGET_CE, removed
	Removed TARGET_CE test in several places since we need to
	use FP regs even for non-CE programs.
	(TARGET_VERSION, CPP_SPEC): Define for Alliant.
	(CONDITIONAL_REGISTER_USAGE): Removed, not needed.
	Use fp0 to return floating-point values.
	(FUNCTION_PROFILER): Define for Alliant.
	(FUNCTION_EPILOGUE): Remove use of rtd instruction.
	Renamed CC_IN_68881 to CC_IN_FP.
	(NOTICE_UPDATE_CC): Incorporate changes that were made
	in tm-m68k.h.

	* config/xm-alliant.h (LINK_SPEC): Pass -X to linker.

Tue May 23 12:58:24 1989  Richard Stallman  (rms at

	* sdbout.c: Don't include c-tree.h.

	* tree.c (build_index_type): Use sizetype for min and max values.
	Convert maxval rather than clobbering it.

	* tm-hp9k320.h: Finish unterminated comment.

	* sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm.

Sun May 21 12:58:06 1989  Richard Stallman  (rms at

	* stmt.c (aggregate_value_p): New fn says whether expression is a type
	that functions cannot return as a scalar.
	(assign_parms, expand_function_start): Use that.
	* expr.c (expand_call): Likewise.

	* gcc.c (delete_failure_queue): New subroutine.
	(delete_temp_files): No longer delete the failure queue.
	(main): Delete failure queue after each failing compilation.

Sat May 20 13:16:23 1989  Richard Stallman  (rms at

	* varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION.

	* Change %u0 to %:.
	(movsi): Add constraint alternative accepting address arg.

	* fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8.
	(combine): Special case shortcuts for plus, minus, mult, div.

	* stmt.c (expand_function_start): Simplify hairy statement for 3B1.
	* expr.c (expand_call): Likewise.

	* math-68881.h: New file.

	* (movqi): Handle moving aregs to mem and vice versa.

	* dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions
	in cases that occur in C.

	* stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0
	when function returns no value.

	* tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME.

	* c-decl.c (store_parm_decls): Call init_function_start.

Thu May 18 00:41:37 1989  Richard Stallman  (rms at

	* stmt.c (expand_null_return_1): New arg USE_GOTO says jump to
	return_label even if could otherwise use a return insn.
	Make a return_label if we need one and don't have one already.
	If have parm cleanups, always jump to cleanup_label.
	(expand_null_return): Pass 1 for USE_GOTO if cleanups pending.
	(expand_return): Set LAST_INSN if have local cleanups or parm cleanups.
	Use that if jumping to tail-recursion label.
	Optimization for returning a comparison is safe for local cleanups
	but don't do it if there are parm cleanups.
	Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups.
	(this_contour_has_cleanups_p): New function.

	* stmt.c (init_function_start): New function, beginning of
	expand_function_start broken out.
	Use DECL_PRINT_NAME to get function's name.
	(expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS
	Compute RETURN_LABEL sooner; make one if parm cleanups.
	If parms have cleanups, put scalar return value in pseudo-reg.
	Don't mark that pseudo with REG_FUNCTION_VALUE_P.
	(expand_function_end): Simplify decisions about output of return_label
	and return insn.
	If DECL_RESULT is pseudo-reg, copy it to real return reg.

	* stmt.c (expand_function_end): Handle ordinary struct values
	like pcc, but only if unoptimized.
	(expand_function_start): Make a return_label for ordinary struct value.

	* stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE.
	(layout_decl): Allow TYPE_DECL.

	* stor-layout.c (layout_basetypes): Code for basetypes broken
	out of layout_record.  Sets the type size tentatively.
	(layout_record): Start with that tentative size.
	Also, don't do anything with CONST_DECL members.

	* stor-layout.c (layout_union): Simpler error report for static memb.

	* reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING
	conditional to apply only to push instructions.

	* expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY.
	* stmt.c (assign_parms): Likewise.

	* toplev.c (announce_function, report_error_function):
	(error_with_decl, warning_with_decl): Use DECL_PRINT_NAME.

	* toplev.c (compile_file): Subtract integration_time from parse_time.

	* toplev.c (compile_file): Don't output read-only static variables
	at end of compilation if address was not used.

	* toplev.c (rest_of_compilation): Handle flag_syntax_only.

	* toplev.c (main): Handle -g0 and -G0 options.
	For -g and -G, set use_gdb_dbx_extensions.

	* toplev.c (main): Set `progname'.
	(pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line):
	(sorry): Print value of `progname', not "cc1".

	* tree.def: Delete FRIEND_DECL.  Add PUSH_EXPR and POP_EXPR.

	* tree.c (simple_cst_equal): Handle INDIRECT_REF.

	* tree.c (lvalue_p): Handle METHOD_TYPE.  Handle NEW_EXPR.

	* tree.c (copy_list): New function.

	* tree.h (struct tree_decl): New fields print_name and assembler_name.

	* c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter.

Wed May 17 22:07:17 1989  Randall Smith  (randy at

	* dbranch.c (emit_delay_sequence): Reset insn code to -1 when
	turning insn into a sequence so that it won't think that it matches
	something in the md file.

	* dbranch.c (insn_eligible_p): Call refers_to_regno_p with a
	non-zero range.

	* dbranch.c (pnote): Modified to make sure instruction clobbered
	register is a set, rather than, say, a clobber.

Wed May 17 14:01:20 1989  Richard Stallman  (rms at

	* sdbout.c (sdbout_parms): Handle parm with no name.

	* loop.c (combine_movables): Test for overlap of zero-extend regs
	was screwed up.

	* c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars,
	since c defines sizeof (char) as 1.
	(pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}. 

Tue May 16 16:27:32 1989  Richard Stallman  (rms at

	* reload1.c (choose_reload_targets): Don't reuse regs
	mentioned in reload_reg_rtx.

	* tm-tahoe.h,, out-tahoe.c, xm-tahoe.h: New files.

Mon May 15 16:25:12 1989  Richard Stallman  (rms at

	* fixincludes: Exit with explicit status 0 at end.
	cd to /usr/include before cd to subtree root in case of relative link.
	Create dir $LIB earlier.
	When checking for a link, treat .. like an absolute target.

	* symout.c (symout_block_symbols): Give every local decl a typespec.
	* cexp.y (parse_number):
	* flow.c (life_analysis, dump_flow_info):

	* loop.c (consec_sets_invariant_p): Logic error accepted consec sets
	of which only one was invariant.

	* expr.c (expand_expr): Use no subtargets inside loops.
	* stmt.c (inside_loop): New function.

Sun May 14 00:11:07 1989  Richard Stallman  (rms at

	* tree.h: Declare long long types.

	* c-parse.y (combine_strings): Make string contents saveable.

	* tree.c (savealloc): New function.

	* (movdi): % missing in fmove%.d.

	* c-parse.y (yylex): Detect overflow past 64-bits.
	Detect specially numbers not fitting in signed long long.

Sat May 13 13:16:05 1989  Richard Stallman  (rms at

	* reload1.c (alter_frame_pointer_addresses): Preserve volatility.

	* varasm.c (output_constructor): Die if BITS_PER_UNIT is too big
	for this function to work.

	* genpeep.c (match_rtx): For match_operator, match the operands, too.

	* varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode.

	* stor-layout.c (make_signed_type, make_unsigned_type):
	(fixup_unsigned_type): Use HOST_BITS_PER_INT.

	* stor-layout.c (layout_type): Use TFmode if appro.

	* optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi.

	* c-typeck.c (get_floating_type): Compare MODE against modes of types.
	(signed_type, unsigned_type, signed_or_unsigned_type, type_for_size):
	Handle long long types.
	(digest_init): Don't assume width of `char' is BITS_PER_UNIT.

	* c-parse.y (yylex): For truncating chars, use width of `char' type.
	Allow `ll' in int constants and make long long.
	Also make long long if constant won't fit in an int.

	* c-decl.c (SHORT_TYPE_SIZE): Round up when dividing.

Fri May 12 22:36:21 1989  Richard Stallman  (rms at

	* real.h: Allow multiple inclusion.

	* tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering.

Thu May 11 00:36:21 1989  Richard Stallman  (rms at

	* fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h

	* c-parse.y (stmt from expr): Do default conversion if useful
	for sake of ({...}).

	* (andcc recognizer): Operand missing in subreg.

Wed May 10 17:20:38 1989  Richard Stallman  (rms at

	* rtl.c (read_name): Error if name is missing.
	(dump_and_abort): Don't print char args if -1.

	* (umulqihi3): Operand numbers were missing.

	* reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg
	if it's free and correct class. 

	* cse.c (canon_hash): Handle empty strings.

	* cccp.c (macroexpand): Newline newline treated like real white space
	when stringifying.

	* Rename *offsetable* to *offsettable*.

Tue May  9 22:54:58 1989  Richard Stallman  (rms at

	* c-decl.c (finish_type): Layout any variants of the type.

Tue May  9 12:30:28 1989  Randall Smith  (randy at

	* final.c (final_scan_insn, final): Added an argument to
	final_scan_insn to disallow peephole processing (to turn it off
	during delayed branch scheduling).

	* final.c (final_scan_insn): Made insn not matching any MD rtl a
	criteria for delayed branch case.  Moved delayed branch case to just
	before real insn recognition to reduce the number of insns on which
	recog_memoized is called.

Mon May  8 15:02:42 1989  Richard Stallman  (rms at

	* fixincludes (LIB): Allow overriding.

	* cccp.c: Don't search /usr/include/CC by default.

Mon May  8 13:09:21 1989  Randall Smith  (randy at

	* print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE.

Sun May  7 12:44:53 1989  Richard Stallman  (rms at

	* print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL.

Sat May  6 00:13:47 1989  Richard Stallman  (rms at

	* tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0.
	* fold-const.c (combine, fold, div_and_round_double): Handle new code.
	* expr.c (expand_expr): Likewise.
	* c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR.

	* integrate.c (expand_inline_function): Use size of passed type
	for allocating stack slot with that type.

	* c-parse.y (maybe_attribute, attribute*): New syntax for Apollos.
	These tokens currently not generated.

Fri May  5 18:43:01 1989  Richard Stallman  (rms at

	* toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux.

	* optabs.c (expand_binop): If backtracking, don't delete insns made
	for -fforce-mem.

Thu May  4 01:57:23 1989  Richard Stallman  (rms at

	* reload.c (find_reloads): Don't compare an earlyclobber operand
	with itself.

	* reload.c (immune_p): Constants and stack slots don't overlap.

	* Put no-ops in front of loops and labels,
	to prevent confusion in the debugger.
	* c-parse.y (loops and labels): Call emit_nop.
	* stmt.c (emit_nop): New function--sometimes emit a no-op.
	* *.md (nop): New insn.

	* expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET.

Wed May  3 01:34:58 1989  Richard Stallman  (rms at

	* loop.c (scan_loop): Scanning around end of loop
	should not set maybe_never.

	* varasm.c (get_or_assign_label): Use SELECT_SECTION if defined.
	* varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro).

	* Change %u to %u0 to avoid error check.

	* tm-mips.h (TARGET_VERSNUM): Inc. to 1 08.
	(TARGET_VERSION): Change strings.
	(AL_DEBUG): Don't define it.
	(HARD_REGNO_MODE_OK): Add some casts to int.
	(STACK_ARGS_ADJUST): Name was misspelled.
	(PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc.
	(ASM_FILE_END): Change function name.
	* out-mips.c (function_arg_advance): Delete debugging printfs.
	(function_inarg, function_arg): Likewise.
	(compare_collect, compare_restore): Add some.

	* reload1.c (reload): Fix handling of caller_save_needed.

	* stmt.c (expand_function_start): Clear caller_save_needed.

	* stmt.c (emit_case_nodes): Some compiler has trouble with calling
	a function pointer.
	* gnulib.c: likewise.

Tue May  2 15:32:25 1989  Richard Stallman  (rms at

	* loop.c (combine_movables): For zero extend,
	do each from-mode separately.

Mon May  1 00:18:47 1989  Richard Stallman  (rms at

	* tm-apollo68.h: New file.

	* c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc.
	* c-parse.gperf: Corresponding changes.

	* c-parse.y (check_newline): Set main_input_filename before
	considering optional arguments.

	* final.c (final_scan_function): Return next insn to process.
	Usually that's the following insn; occasionally, previous compare.

	* c-decl.c (DOUBLE_TYPE_SIZE): Wrong value.

	* reload.c (decompose): Failed to return value.

	* Support local specified-register variables.
	* varasm.c (decode_reg_name): New function, cvt asmspec to regnum.
	(make_decl_rtl): Call that.
	* toplev.c (rest_of_decl_compilation): Handle local specified-register

	* (tstqi, trunc*qi): Constrain to `q' regs.

	* loop.c (scan_loop, move_movables): ->global for zero-extend register
	now means register is used outside range from where it is set
	to the following label.  Non-global zero-extend regs
	may be entirely cleared.

	* loop.c (combine_movables): Loop that combines matching movables
	broken out from scan_loop.
	Now also combine non-global zero-extend registers with each other
	if their lifespans don't overlap.

	* c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF):
	Always convert to desired result type.

Sun Apr 30 12:58:58 1989  Richard Stallman  (rms at

	* c-decl.c (init_decl_processing): New macros parameterize int types.

	* fixincludes: Use sed instead of ex.  No problem with split lines.

	* print-tree.c (dump): Print type's name, if any.

	* c-parse.y: Use __inline, not plain inline.

	* toplev.c: New option -fdelayed-branch.
	(compile_file): Open and close dbranch dump file.
	Collect and print dbranch time.
	(rest_of_compilation): Optionally do dbranch scheduling, 
	(main): Handle -dd.

	* rtl.c (copy_rtx): Handle null pointers as code `e'.

	* final.c (dbr_sequence_length): New function.
	(final_scan_insn): Most of `final' broken out.
	Add support for SEQUENCE insns.
	last_ignored_compare and new_block now top-level static.

	* c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile.

Sat Apr 29 13:03:20 1989  Richard Stallman  (rms at

	* c-parse.y (asm statements): Output line numbers.

	* loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy
	additive term rtx's to prevent sharing between insns.

	* c-parse.y (check_newline): Increment input_file_stack_tick.
	* toplev.c (report_error_function): Describe input stack only if

	* c-decl.c (finish_struct): Reject zero width for named field.

	* tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'.
	* tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'.

	* Makefile (cleanconfig): cleanlinks renamed; also delete gnulib.
	(gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after.

Fri Apr 28 00:38:32 1989  Richard Stallman  (rms at

	* config.gcc (genix): Correct xm file name.

	* tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h.

	* Makefile: Make float.h using hard-params.
	(clean): Delete float.h.

	* hard-params.c: New program.

	* varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined.
	(in_section): Use EXTRA_SECTIONS if defined.

	* toplev.c (compile_file): Call ASM_FILE_END if defined.

	* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override.

	* loop.c (emit_iv_init_code): Force A to a reg if it isn't.

Thu Apr 27 12:51:14 1989  Richard Stallman  (rms at

	* tm-mips.h (ASM_START_FILES): Don't call print_options.
	Don't call the funny abort-functions.
	* out-mips.c: Delete funny debugging functions and aborts.
	(print_options): #if 0.
	(compare_restore): Test for COMPARE, not MINUS.
	(mips_section_get, mips_output_external, mips_asm_final): New fns.

	* input.h: New file with *input_filename, lineno and input_file_stack.
	Included in toplev.c and c-parse.y.
	* c-decl.c (finish_function): LINENO is now arg.
	* c-parse.y: Calls changed.

	* c-parse.y (check_newline): Handle `1' or `2' from cpp
	by pushing or popping input_file_stack.
	* toplev.c (compile_file): Push main input file on input_file_stack.
	(report_error_function): If in include file, print the chain
	of include-locations.

	* cccp.c (output_line_command): New arg says whether entering or
	leaving a file.  Output `1' or `2' on #-line if so.  Callers changed.

	* gnulib2.c: Little-endian fixes from

	* fixincludes: Wrong quoting in `echo' command.

	* tm-mips.h (REG_P): Duplicate defn deleted.
	(PRINT_OPERAND): `\' was missing.

Wed Apr 26 02:44:59 1989  Richard Stallman  (rms at

	* cccp.c (handle_directive): Preprocess even #pragma, but copy 
	to output file afterward.
	(do_pragma): Use standard calling convention.
	(install_builtins, special_symbol): Define __INCLUDE_LEVEL__.

	* cccp.c (do_include): Don't forget to close file.

	* final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P
	to validate punctuation after percent.
	* tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h:

	* Version 1.35 released.

	* c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants.

Tue Apr 25 15:47:11 1989  Richard Stallman  (rms at

	* reload.c (find_reloads_address_1): Always return a value.

	* flow.c (mark_set_1): Look inside zero_extract, sign_extract.

	* expr.c (emit_library_call) [STACK_ARGS_ADJUST]:
	Fix typo for `struct args_size'.

Mon Apr 24 00:12:18 1989  Richard Stallman  (rms at

	* flow.c (mark_set_1): Look inside strict_low_part.

	* c-typeck.c (decl_constant_value): Don't use var's init if volatile.

	* print-tree.c (dump): Don't call walk on rtx's.

	* integrate.c (expand_inline_function): Convert expanded arg from
	passed mode to nominal mode.

Sun Apr 23 13:14:47 1989  Richard Stallman  (rms at

	* fixincludes: fix _IO macros if split across two lines.
	Fix typo: EOF was indented.

	* gnulib2.c: New file with DImode library routines.
	* Makefile (gnulib2): Put them into gnulib.
	Must be explicitly requested.

Fri Apr 21 13:45:45 1989  Richard Stallman  (rms at

	* cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall;
	use -trigraphs for that.

	* cccp.c (main): Use -trigraphs to enable trigraphs.
	* gcc.c: Pass -trigraphs to cpp; don't pass -T.

	* Makefile: Variable srcdir relates location of sources
	to current directory.  Default is `.'.

	* integrate.c (expand_inline_function): When copying expanded arg,
	use mode it's passed in, not arg's nominal mode.

	* dbxout.c (dbxout_block): Print generated name with assemble_name.

Thu Apr 20 12:36:09 1989  Richard Stallman  (rms at

	* stdarg.h: check __sparc__ instead of sparc.

Tue Apr 18 18:58:03 1989  Richard Stallman  (rms at

	* tm-next.h (STARTFILE_SPEC): Define it.

Mon Apr 17 19:56:05 1989  Richard Stallman  (rms at

	* dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format
	the labels LBB... and LBE...

Sun Apr 16 23:57:47 1989  Richard Stallman  (rms at

	* Change MINUS to COMPARE where appropriate.

Sat Apr 15 16:11:49 1989  Richard Stallman  (rms at

	* c-decl.c (finish_struct, redeclaration_error_message):
	Rename variables named OLD and NEW.

	* (cse'd mult pattern): Handle memory operands.
	Optimize small integer operands.

	* stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles
	are properly aligned, despite unaligned STACK_POINTER_OFFSET.

Fri Apr 14 10:59:56 1989  Richard Stallman  (rms at

	* expr.c (expand_call): Bugs treating struct value address as param:
	do so only if it's supposed to be pushed;
	decode value of FUNCTION_ARG properly.

	* tm-altos3068.h (CPP_SPEC): Some braces were dropped.

	* gcc.c (pexecute): Print message when exec fails.
	(perror_exec): New fn.
	(perror_with_name,pfatal_with_name): Change message syntax.

	* tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op.

Wed Apr 12 00:20:31 1989  Richard Stallman  (rms at

	* cse.c (cse_insn): Can record constant value being stored in
	a bit field, if we can tell that truncation won't change it.

	* (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT
	since the cc's are set from the old contents.

	* gcc.c (compilers): Running `as', put -o option before input file.

	* gcc.c: Delete output file only if that file's compilation fails.
	* gcc.c (record_temp_file): Changed args: always_delete, fail_delete.
	(store_arg): Likewise.  Callers changed.
	(clear_failure_queue): Called after each compilation.

Tue Apr 11 01:18:53 1989  Richard Stallman  (rms at

	* combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const))
	optimization was sometimes invalid.

	* tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns
	does not set the cc's usefully.

	* Makefile (cleanlinks): Just do `clean', not `realclean'.
	(realclean): Delete config links also.

	* expr.c (expand_call): Handle case where return value is in memory
	but TARGET is a register.

	* c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE
	is passed to binary_op_error instead of CODE.
	All callers changed.
	(binary_op_error): CODE = NOP_EXPR is new special case.
	(truthvalue_conversion): Call build_binary_op_nodefault directly
	and specify NOP_EXPR for the error code.

	* c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum.

Mon Apr 10 19:44:48 1989  Chris Smith  (csmith at mozart)

	* tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't,
	but set it anyway.  It makes for better code on this
	word machine.

	* (one_compl*): add not:QI and not:HI, which
	do get used after all.

	* tm-convex.h (A_REG_P, S_REG_P): define new macros use them

	* (addsi3): tidy up constraints.

	* tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok.

	* add a pattern to push REG+CONST so we can
	prefer an A reg.

	* tm-convex.h (tstqi): should sign extend, not zero extend.

	* expr.c (convert_move): Extending narrow to DI via SI,
	operand of extendsidi2 was wrong.

	* emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE.

Mon Apr 10 05:19:39 1989  Richard Stallman  (rms at

	* recog.c (nonmemory_operand): Test constant operands
	as general_operand does.

	* tm-m68k.h (PRINT_OPERAND): Limit effect of code `d'
	to constant addresses.

	* loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with
	nonconstant coefficients, since the coeffs could be zero.

	* loop.c (can_eliminate_biv_p): Check each giv for ! ignore
	before assuming it can be used.
	(check_eliminate_biv): New fn, a piece of strength_reduce broken out.

	* cccp.c (error_from_errno): New fn, like error and perror_with_name.
	(do_include): Call that if open fails.
	(finclude): Print I/O error msg before closing desc.

	* c-decl.c (shadow_tag): If more than one tag or structure,
	or anything other than a tag, warning.

	* c-parse.y (components): Just warn if memb decl has no member,
	and only if pedantic.

	* loop.c (strength_reduce): Print uids, not luids, for dump.
	(record_giv): giv_count field counts only DEST_REG givs.
	(check_dbra_loop): src_two_before_end was set wrong.

	* loop.c (record_giv): New arg LOOP_END; all callers changed.
	Don't mark giv replaceable if used past LOOP_END.
	(find_mem_givs): New arg LOOP_END; all callers changed.

	* out-i386.c (FP_CALL): Make this a `return' stmt.

Fri Apr  7 11:56:58 1989  Richard Stallman  (rms at

	* expr.c (expand_expr, case ..._DECL): Preserve mode thru
	calling change_address.

	* expr.c (emit_library_call): Typo: ARGNUM => COUNT.

	* expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY.
	* stmt.c (assign_parms): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.

	* STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should
	be updated in place.
	* tm-mips.h: Define it.
	* expr.c (expand_call): Adapt to this.  Assume padding comes after args
	so turn off the feature of changing the args' offsets.
	(emit_library_call): Adapt to this.

	Truncate SFmode constants to single precision.

	* c-typeck.c (mark_addressable): Fix test for local vs global reg var.

	* config.gcc: Change `:-' to `-' in var refs.
	Shell on convex doesn't handle `:-'.

Thu Apr  6 00:09:01 1989  Richard Stallman  (rms at

	* integrate.c (expand_inline_function): Compare actual's mode
	against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode.

	* c-decl.c (implicitly_declare): Make the decl permanent if
	in global binding level.  (Can happen for certain invalid input.)

	* c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR
	containing an ERROR_MARK.

	* config/tm.h: New file.

	* loop.c (only_reg_use_p): Fix bugs in recursion, add some fast
	special cases.  Comment on return value was backwards.
	(strength_reduce): Negate the value of only_reg_use_p.

	* genoutput.c (output_prologue): Output `#include hard-reg-set.h'.
	* Makefile: insn-output.o depends on that.

	* toplev.c (main): Typo recognizing -Wswitch.

	* config.gcc (mips): New alternative.
	* tm-mips.h, out-mips.c,, va-mips.h: New files.
	* varargs.h: Include va-mips.h if on mips.

Wed Apr  5 16:58:04 1989  Richard Stallman  (rms at

	* c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL.

	* stmt.c (expand_function_start): Ref subr instead of
	current_function_decl; should make no difference.

	* stmt.c (assign_parms): Do extra padding for some parms,
	controlled by MAX_PARM_BOUNDARY.
	* expr.c (expand_call): Same thing for caller side.
	Note this is implemented only for machines that lack push insns.
	Also, in both cases, it doesn't handle variable-size args.

Tue Apr  4 12:22:06 1989  Richard Stallman  (rms at

	* gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too.

	* varasm.c (make_decl_rtl): Delete never-executed clause.

	* (movqi, loadhi, extend*, zero_extendhisi):
	Make subregs with C code, not RTL patterns, so we can
	avoid generating subreg of subreg.

	* optabs.c (emit_cmp_insn): Not all clauses always succeed,
	so stop using `else' structure.

	* stmt.c (expand_return): Avoid moving void to void, in cleanups case.

Mon Apr  3 18:04:33 1989  Richard Stallman  (rms at

	* (cmphi): Don't allow a-reg vs a-reg, since that sign-extends.
	If there is one a-reg, make sure it is not last.

Sun Apr  2 13:02:26 1989  Richard Stallman  (rms at

	* stor-layout.c (agg_mode): Use highest mode that has desired size.
	Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE.
	(That defaults to the size of DImode.)

	* machmode.def: Add PSI, PDI and XF, CXF modes.

Sat Apr  1 00:50:11 1989  Richard Stallman  (rms at

	* (ashd, lshd): Delete patterns that logand the count with 31.
	The shift count is not truncated on this machine.

	* combine.c (subst): Simplify nested or's, nested xor's.
	(try_distrib): XOR doesn't distribute through anything.

	* rtl.c (rtx_equal_p): Don't die on null pointers.

	* loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare.

	* loop.c (invariant_p): Mem refs in constant pool are invariant.

	* c-decl.c (redeclaration_error_message): If -traditional, allow
	redeclarations of typedef provided they agree.

	* c-decl.c (start_decl): Do expand_decl on the decl that pushdecl
	returns.  If there was a prev. decl with a different type,
	we have changed its type and cleared its old rtl, so it need new rtl.

Sat Apr  1 00:50:11 1989  Matthew Self  (rms at

	* expr.c (convert_move): Modified to use mode classes
	instead of refering to specific machine modes.

	* expr.c (do_jump): Converted to use CONST0_RTX macro.
	do_jmp no longer refers to any machine modes directly except
	for VOIDmode!

	* expr.c (compare, compare1): Modified to use CONST0_RTX
	macro.  No longer refers to any machine modes directly
	except VOIDmode and BLKmode!

	* machmode.def: Documented assumptions made about the order
	of machine modes during mode widening.

	* optabs.c (expand_binop, expand_twoval_binop, expand_unop,
	emit_cmp_insn): Added mode widening which is independent of
	specific machine modes.  It assumes that we may widen to any
	higher numbered mode of the same mode class.
	  NOTE: the checks for VOIDmode ops which were present in
	QI and HI to SI widening are now present in all widening.
	I assume this is correct.  Also, widening is now possible
	from QI to HI.  This may or may not be a good thing....

	* rtl.h (CONST0_RTX): Added definition of new macro
	CONST0_RTX (mode).

	* rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros.
	* rtl.c (note_insn_name, reg_note_name): New tables.
	* rtl.def (NOTE): Change last field from `i' to `n'.
	* rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note.
	Print operand code `n' as name of kind of note.
	(read_rtx): treat `n' like `i'.

	* loop.c (struct induction): Add `mode' field.
	(strength_reduce, record_giv): Set the `mode' field in V.
	(can_eliminate_biv_p, eliminate_biv): Use that field.

	* loop.c (struct iv_class): `init_insn' records what inits the biv.
	Replaces `init_val_set' flag.
	(strength_reduce): Update and test `init_insn' instead.
	Use of a biv between its init and the start of the loop
	does not preclude its elimination from the loop.
	Setting a giv is ok for eliminating a biv, even if giv is "ignore",
	since that just means giv will be combined with another.
	Handle some DEST_ADDR givs for that purpose.
	Test for giv-setting before check can_eliminate_biv_p.
	New error check for replaceable giv whose value needed after loop.
	(only_reg_use_p): New fn.

	* expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM:
	Associate even harder.

	* loop.c (strength_reduce): Treat all constant biv init vals like ints.

	* loop.c (strength_reduce): Clear all_reduced when v->ignore is set;
	the code to check this later didn't always do the job.

	* loop.c (verify_loop): Set loop_continue.
	(scan_loop): mention its value.
	* rtl.h: Define NOTE_INSN_LOOP_CONT.
	* stmt.c (expand_loop_continue_here): Output one.

Fri Mar 31 10:08:29 1989  Richard Stallman  (rms at

	* c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like
	void *.

	* rtl.c (rtx_addr_varies_p): Don't die on null exp.
	* cse.c (refers_to_mem_p, refers_to_p): Likewise.

	* gcc.c (validate_switches, validate_all_switches): New fns.
	Mark a switch as valid if any compiler spec or the linker spec
	matches it, even for languages not being used.

Thu Mar 30 00:22:14 1989  Richard Stallman  (rms at

	* loop.c (loop_optimize, move_movables): when moving a `clr' insn used
	in zero-extension, sometimes change it to an `and' so that the
	significant low bits are not clobbered.

	* cccp.c: Implement __BASE_FILE__ and #once.
	(savestring): New fn.
	(struct file_name_list): new name for struct directory_stack.
	(enum node_type): Add T_ONCE, T_BASE_FILE.
	(directive_table): Add #pragma once.
	(initialize_builtins): Add __BASE_FILE__.
	(special_symbol): Handle __BASE_FILE__, together with __FILE__.
	(do_include): Ignore the file if it's on the #pragma once list.
	(do_once): New fn; add current file to #pragma once list.

	* cccp.c (do_include): Don't add non-ex files to list of deps.

	* config.gcc: Use {...:-...}, not {...=...}.

	* c-parse.y: Add precedence for IF/ELSE, and for parens;
	avoids some conflicts.

	* tm-newsgas.h: Include tm-news.h and define USE_GAS.

	* tm-news.h: New name for tm-news800.h.
	If not USE_GAS, define SONY_ASM.
	Don't define USE_GAS by default.
	(CPP_PREDEFINES): Various alternatives depending on processor type.
	(ASM_FORMAT_PRIVATE_NAME): Override this.
	(ASM_IDENTIFY_GCC): Override; output nothing.
	Max for halfword link insn is 32k, not 64k.
	(FUNCTION_EPILOGUE): Don't output move.l if no regs to restore.
	(PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses.
	* (movhi): Add SONY_ASM conditional.

	* cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT

	* gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF.

Wed Mar 29 09:54:13 1989  Richard Stallman  (rms at

	* gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that
	-Tdata can be handled right.

	* stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch
	(expand_end_case): Call it, if orig index was enum.
	* toplev.c (main): Handle -Wswitch.
	* c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case.

	* tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't
	define any duplicates.
	* final.c: Delete reg_name.

	* c-parse.y (is_reserved_word): Add keywords __asm and __inline;
	also __const and __volatile.
	(yylex): Keywords that start with `__' are recognized regardless of
	-traditional or -ansi.

	* c-parse.y (check_newline): Always recognize #ident.
	Macro IDENT_DIRECTIVE is no more.
	If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident.
	* tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT.
	* tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h:
	Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in
	default way.

	* expr.h (RETURN_IN_MEMORY): New macro, default defn here.
	* expr.c (expand_call): Use it to control where to return value.
	* stmt.c (expand_function_start): Likewise.

	* out-sparc.c (find_addr_reg): Abort if none found.
	Eliminate confusion; do only one change between tests for PLUSness.
	(output_move_double): Arg to find_addr_reg is address, not mem ref.
	* out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise.

	* jump.c (find_cross_jump): Don't let either E1 or E2 be included
	in the range of matching insns preceding the other (E2 or E1).

	* c-parse.y (check_newline): No error for `#pragma\n'.

	* Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here.

	* stmt.c (walk_fixup_memory_subreg): handle null.

	* tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn,
	to avoid conflict with final.c.

Tue Mar 28 15:23:17 1989  Richard Stallman  (rms at

	* cccp.c (do_include): If fail, print system error message.
	(perror_with_name): Use more standard error format.  Inc. `errors'.

	* dbxout.c (dbxout_function): Output any temporary types
	that were made by dbxout itself.

	* stmt.c: always use an epilogue if pcc-struct-return.
	(expand_function_start): Compute return_label after testing that.
	(expand_function_end): Output a return insn after pcc-struct-return
	processing, if there is a return insn.
	(expand_null_return): Don't output a return insn, in that case.
	Simplify the conditions--depends entirely on HAVE_return.

	* tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call.

	* reload.c (find_reloads): Certain mem addresses will be offsetable
	after reloading; in particular, those where reg_equiv_address applies.

	* loop.c (check_dbra_loop): Change MINUS to COMPARE.

	* c-typeck.c (convert_for_assignment): Return THE standard error_mark.

Thu Mar 23 09:39:02 1989  Richard M. Stallman  (rms at watson)

	* c-parse.y (components): Error if empty.

	* dbxout.c (dbxout_symbol): Output const variables as N_STSYM.

	* varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd.

	* c-decl.c (grokdeclarator): Warn about `long long long'.

	* reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P.
	* final.c (alter_subreg): Preserve volatile bit of MEM.

	* (cmpsi, cmphi): Permit cmpm.

	* gcc.c (find_file): Use standard_startfile_prefix_2.
	Now search /usr/local/lib/, /lib/ and /usr/lib/.

	* tm-m68k.h (PRINT_OPERAND): Support code `d'.
	* (cmpsi, cmphi, cmpqi): Use it for all mem addresses.

	* final.c (output_asm_insn): Don't allow %LETTER without an
	operand number.
	* tm-m68k.h,, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s.
	* tm-alliant.h, Likewise.
	*, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R.

	* stmt.c (expand_end_stmt_expr): Pop pending stack args.

	* varasm.c (assemble_variable): For 0-size common variable,
	allocate at least 1 byte.

	* tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l,
	for doubles.

Mon Mar 13 10:24:56 1989  Richard M. Stallman  (rms at ccvi)

	* out-i386.h (function_prologue, function_epilogue):
	Use call_used_regs, not a copy, so -f options work.
	Save regs in the opposite order.
	Save regs even starting from 0 if they happen to be call-saved.

	* Bug fixes from Rob McMahon.

	* loop.c (strength_reduce): When inserting insn to set
	nonreplaceable giv, put it after all the consecutive insns
	that compute it.

	* reload.c (find_reloads): When forcing const to mem,
	use the insn's operand mode, not the const's mode.

	* reload1.c (choose_reload_targets): Use wider of inmode and outmode
	when determining have_groups.

	* reload1.c (choose_reload_targets): typo checked wrong insn with

	* reload1.c (choose_reload_targets): Enable #if-0'd code for
	forgetting old reloads in case of output reload from a non-spill-reg.

Sun Mar 12 00:04:49 1989  Richard M. Stallman  (rms at ccvi)

	* c-parse.y (yyerror): Add forward-decl here.
	* c-tree.h: Delete decl here.

	* New macro USE_C_ALLOCA.
	* cse.c (cse_main): Do alloca (0) to clear out C alloca.
	* flow.c (life_analysis):
	* local-alloc.c (local_alloc):
	* reload1.c (reload_as_needed): likewise.

	* loop.c (emit_iv_init_code, eliminate_biv):
	Always put constant in a PLUS last.

	* gcc.c (make_switch): Unused function deleted.

	*gcc.c (switches): Each switch has a `used' field.
	(process_command): Init it to 0 when making `switches'.
	(do_spec_1, handle_braces, give_switch): Set to 1 when switch is used.
	(main): If it remains 0 at the end, print error message.

	* expr.c (convert_move, convert_to_mode): Don't truncate a MEM in
	place if it is volatile.

	* loop.c (strength_reduce): When reducing a giv, if the biv is
	incremented between the giv's creation and its use, increment
	the reduced giv var *after* its use.

	* c-decl.c (duplicate_decls): Warn about proto vs nonproto
	only if no other errors apply.

	* jump.c (invert_exp): Don't crash if arg is null.

	* (float*i*f2): Don't allow immediate ops.
	(sne): Fix typo, fsne => fsneq.

	* expr.c (store_one_arg, expand_call): When size doesn't matter,
	pass const0_rtx, not (rtx) 0.

	* expr.c (do_jump): Args to invert_exp were missing.

	* gcc.c (store_arg): Now 2 separate args for delete-on-success
	and delete-on-failure.  All calls changed.
	(do_spec_1): DELETE_THIS_FILE is meaningful for output files.

	* config/xm-alliant.h (LINK_SPEC): Pass -X to linker.

Sat Mar 11 10:30:41 1989  Richard M. Stallman  (rms at ccvi)

	* tm-*.h, xm-*.h, *.md: Moved to subdir `config'.
	* output-*.c: Moved to `config/out-*.c'.
	* Makefile (.c.o): Define rule to use -Iconfig when compiling.
	(various): Delete the commands from some compilation rules.
	Put -Iconfig in other compilation commands.
	Also some reordering of variable defs and comments for cleanliness.
	(realclean): Change a shell comment to a Make comment.

	* fold-const.c (fold): Simplify and extend TRUTH_... operators
	knowing that args must be ints and values will be 0 or 1.

	* gcc.hlp: New file (for VMS).

	* reload1.c (reload): Don't let two 2-groups overlap.

	* reload.c (push_reloads): When a plain reg matches a reload
	for an increment, don't change the reload_in to a plain reg.
	Leave the increment there.

	* integrate.c (expand_inline_function): Don't try to inline
	unless the parm machine modes really match what's expected.

	* stmt.c (emit_case_nodes): default_label is an rtx, not tree.

	* tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1.

	* output-sparc.c (output_move_double): Don't trust random structs
	to be double-word aligned.

	* gcc.c: Pass -Wcomments to cpp.

	* rtl.def (ASM_OPERANDS): New operands, source file and line.
	* rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS.
	* stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes.
	* toplev.c (error_for_asm): likewise.
	* rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE.

	* combine.c (try_combine): Check explicitly for volatility in I2, I1.

Fri Mar 10 19:30:10 1989  Richard M. Stallman  (rms at ccvi)

	* c-parse.y (GOTO stmt): Set TREE_USED for the label.
	* c-decl.c (poplevel): Warn about unused label.

	* c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars.
	(lang_decode_options): Options to set them.
	* c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target.
	* c-decl.c (grokparms): Maybe warn if nonprototype fn decl.

	* flags.h, toplev.c (warn_shadow): New flag.
	* toplev.c (main): Decode it.
	* c-decl.c (pushdecl): Maybe warn about any shadowing.
	Existing parm-shadowing warning now disabled if shadowing decl
	is also a parm.

	* flags.h, toplev.c (warn_id_clash, id_clash_len): New flags.
	* toplev.c (main): Decode -Wid-clash-LEN.
	* tree.c (get_identifier): Implement warning if two idents match.

	* toplev.c (compile_file): Warn about statics defined and unused.

	* rtl.h (CONST0_RTX): New macro.

	* recog.c (offsetable_address_p): New 1st arg says whether to demand
	a strictly valid address.
	(offsetable_memref_p): Pass nonzero.
	* stmt.c (optimize_bit_field): Pass zero.

	* cccp.c (main): Allow -Wcomment like -Wcomments.
	* c-decl.c (lang_decode_options): Likewise.

Sun Mar  5 15:02:59 1989  Randall Smith  (randy at

	* [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3,
	sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure
	that the test function's in the match_operands of the define_expand
	and define_insn's matched, and made that test function
	"register_operand" when both define_insn's really needed registers
	in that spot.

Sat Mar  4 00:25:37 1989  Richard M. Stallman  (rms at c2v)

	* expr.c (emit_push_insn): Don't ever bypass the big-endian
	padding at the end.

	* cccp.c (deps_output): Break line if would otherwise exceed 75 chars.
	Make a name for that value 75.

	* combine.c (subst): Handle general case of (subreg (sign_extend X)).

	* tm-sun386i.h (CPP_PREDEFINES): Define `sun'.

	* fixincludes: change `find' calls to find dirs thru symlinks.

	* flow.c (mark_set_1): (set (subreg (reg N))...)
	does make reg N significant for this basic block.

Fri Mar  3 13:55:25 1989  Richard M. Stallman  (rms at c2v)

	* c-decl.c (parmlist_tags_warning): Print an explanation
	for the first such warning.

	* (extendsfdf): Let op 1 match op0 if that is an fp reg.

	* expr.c (expand_call): Fix stupid errors copying pcc struct value.

	* varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast.

Thu Feb 23 05:55:57 1989  Richard Stallman  (rms at

	* Version 1.34 released.

	* c-typeck.c (build_c_cast): If EXPR is an error mark, return that.

	* fold-const.c (div_and_round_double): Abort if divisor is 0.
	(combine): Likewise, for real constants.
	(real_zerop): New subroutine.
	(fold): Don't try to fold division if divisor is 0.
	Don't try to fold reals if can't do arithmetic on them.
	Don't try to compare reals for TRUTH_..._EXPR if can't do arith.
	Use real_zerop to test reals for zeroness.
	For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on
	first operand alone.

	* c-typeck.c (store_init_value): Fix error msg text.

	* tm-sparc.h (FUNCTION_PROFILER): Use `mcount'.
	* tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'.

Wed Feb 22 04:33:22 1989  Richard Stallman  (rms at

	* tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of
	-Dmc68000 depend on TARGET_DEFAULT.

	* tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf.

	* integrate.c (expand_inline_function): Don't map struct-value-address
	in memory if fn does not use it.

	* c-parse.y (check_newline): At skipline, detect eof.

	* stmt.c (uninitialized_vars_warning): Change text of warning.

Tue Feb 21 03:58:50 1989  Richard Stallman  (rms at

	* output-sparc.c (output_mul_insn): Handle case of both args
	in reg 8, or both in reg 9.

	* tm-sparc.h (ASM_SPEC): Define, to handle -pipe.

	* tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args.
	(BLOCK_PROFILER): Likewise.  Use tempvar.

	* (QImode btst): Allow nonoffsetable mem refs.

Mon Feb 20 00:32:42 1989  Richard Stallman  (rms at

	* flow.c (mark_used_regs): Don't record about global reg vars.

	* config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h.

	* tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN.

	* gcc.c (compilers): Pass `-a' to cc1.
	* tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'.

	* expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy;
	old method of preadjustment is broken by changes in emit_library_call.

	* c-decl.c (finish_decl): New temp `temporary'; don't get confused
	about whether allocation was temporary.

Sun Feb 19 17:03:35 1989  Chris Smith  (csmith at mozart)

	* tm-convex.h: define PCC_STATIC_STRUCT_RETURN

	remove pshea patterns, movsi does it better.
	add ashift:DI abs:DF abs:SF
	(tstdi): use a clobbered register instead of a bogus DImode zero.
	(trunchiqi2): delete noninstruction cvth.b
	(udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now.
	(call, call_value): delete stupid call/ret -> jump optimization.
	(call, call_value): flush call_ap_check, use reg_mentioned_p instead.

	* (movxx): swap constraint alternatives so that the
	leftmost alternative is (set =g r).  This makes (set mem const)
	get combinable input reloads of const instead of uncombinable
	output reloads to mem.  They still do not combine, but wtf,
	I'll inch up on it.

	* output-convex.c: (const_double_{high,low}_int): new routines
	to pick apart const_doubles for assembler.

Sun Feb 19 01:40:17 1989  Richard Stallman  (rms at

	* (shift memory right 24 bits): Another `a1' typo.

	* config.gcc (convex-*): Delete troublesome whitespace.

	* c-decl.c (grokparms): Delete redundant `parm != 0' tests.

	* stmt.c (fixup_memory_subreg): Slight simplification.

	* tm-sparc.h (FUNCTION_PROFILER): Fill delay slot.
	(BLOCK_PROFILER): Use %g2, not %g0.  Use sethi.

Sat Feb 18 02:11:25 1989  Richard Stallman  (rms at

	* expr.c (expand_expr): Ignore const array's initial value
	if it's an error_mark.
	* c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark
	if the decl is a permanent node.

	* cccp.c (rescan): If traditional, if macro ends inside string,
	keep scanning for the end of the string.
	(handle_directive): A line of just `#' becomes blank.
	(collect_expansion): \ in strings traditionally doesn't hide macro arg.

	*, (addsi3): New alternative a=r+a, in addition
	to old a=a+r, needed since reload-insns are not commuted.

Fri Feb 17 03:15:23 1989  Richard Stallman  (rms at

	* tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it.
	* toplev.c, flags.h: New var flag_pcc_struct_return.
	* stmt.c (expand_function_start): Obey new flag and new variable.
	* expr.c (expand_call): Obey new flag and new variable.
	* varasm.c (assemble_static_space): New function.

	* stmt.c (expand_return): If we need cleanups, compute retval first
	into pseudo reg, then do the cleanups, then copy it to return reg.

Thu Feb 16 02:59:52 1989  Richard Stallman  (rms at

	* regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined.

	* expr.c (expand_call): Handle conflict between two precomputed
	args that are both function calls returning structures.

	* loop.c (move_movables): Bkwds test of m->partial, for a matching reg.

	* expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST.

Wed Feb 15 01:59:15 1989  Richard Stallman  (rms at

	* toplev.c (flag_caller_saves): New var, for -fcaller-saves.
	DEFAULT_CALLER_SAVES controls initial value.
	* global-alloc.c (find_reg): Do caller saves only if flag set.
	* local-alloc.c (find_free_reg): Do caller saves only if flag set.
	* tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES.

Wed Feb 15 01:59:15 1989  Chris Smith  (rms at

	* caller-save.c: New file.
	* regs.h (CALLER_SAVE_PROFITABLE): New macro.
	(reg_n_calls_crossed): new int-vector replaces reg_crosses_calls.
	* flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info):
	Use reg_n_calls_crossed.
	* stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise.
	* global-alloc.c (find_reg): Sometimes allocate call-clobbered regs
	for call-crossing pseudos.
	New arg ACCEPT_CALL_CLOBBERED; callers changed.
	* local-alloc.c (find_free_reg): Similar changes.
	(qty_n_calls_crossed): New int-vector replaces qty_crosses_calls.
	(alloc_qty, local_alloc, combine_regs, find_free_reg): change that var.
	* regclass.c (call_fixed_regs, call_fixed_reg_set): new vars.
	(init_reg_sets_1): Initialize them.
	* reload1.c (reload): Call caller-saves processing if needed.

Wed Feb 15 01:59:15 1989  Richard Stallman  (rms at

	* expr.c (expand_expr): INTEGER_CST for DImode: don't handle
	endianness here.  So CONST_DOUBLE_LOW is always the low word.
	* varasm.c (force_const_mem): Handle it here. 

	* expr.c (convert_move): widening followed by extendsidi2 had braino.

	* integrate.c: Don't include ctype.h; not needed and kills Sun cpp.

	* (cmpsf, cmpdf and their recognizers):
	Replace MINUS with COMPARE.
	Also, use VOIDmode for COMPAREs, not SF or DF.

	* optabs.c (sign_expand_binop): Handle ops such as division where
	an unsigned char could be widened and handled with signed int insns.
	* expmed.c (expand_divmod): Use that.

	* c-typeck.c (digest_init): Allow for type variants in validating
	initialization from a string constant.

	* c-typeck.c (decl_constant_value): Disable opt. if pedantic or
	outside functions, so that validity of program is never affected.

	* fold-const.c (fold): Signedness-test for ABS_EXPR was backwards.

Tue Feb 14 01:30:47 1989  Richard Stallman  (rms at

	* cccp.c (main): Don't omit normal output, if we want deps on
	a separate stream.

	* c-decl.c (grokdeclarator): Don't record any arg types for functions
	if -traditional.

	* print-tree.c (prtypeinfo): Mention permanent attribute.

	* tm-next.h: New file.

	* c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK.

	* c-decl.c (duplicate_decls): For fns, new static decl overrides
	old non-static one.

	* emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we
	preserve volatility, etc.

	* stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno
	as file and line for any warning.
	* emit-rtl.c (emit_line_note): Set those vars.

	* c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl.

	* recog.c (offsetable_address_p): Use strict_memory_address_p,	
	since called from reload.c.

Mon Feb 13 03:11:50 1989  Richard Stallman  (rms at

	* (compare-to-reg patterns): Some still had MINUS.

	* toplev.c (main): Warn if `-a' on system that can't handle it.

	* stmt.c (expand_asm_operands): Delete unused local `val'.
	(pushcase_range): Likewise for `value'.
	(fixup_var_refs): Likewise for `insn'.
	* emit-rtl.c (start_sequence): Likewise for `save'.
	* loop.c (scan_loop): Likewise for `before_start'.
	* expr.c (expand_expr): Delete label `binop1'.

	* reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs.

Sun Feb 12 05:37:46 1989  Richard Stallman  (rms at

	* gnulib.c (__bb_init_func): New function


Sat Feb 11 00:05:55 1989  Richard Stallman  (rms at

	* tm-sparc.h (FUNCTION_PROFILER): Make it really work.

	* final.c (final): Use BLOCK_PROFILER at start of each basic block.
	(final_start_function): Use FUNCTION_BLOCK_PROFILER if -a.
	(end_final): New fn to output the block-profiling tables.
	* toplev.c (profile_block_flag): Set if -a.
	(compile_file): Call end_final.

	* combine.c (try_combine): Avoid combining in most cases if I3
	has an inc or dec and I1 or I2 uses the same register.

	* tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant.

	* c-typeck.c (actualparameterlist): Error if parm type is incomplete.

	* expr.c (expand_call): Ignore args that have incomplete type.

Fri Feb 10 02:26:02 1989  Richard Stallman  (rms at

	* c-parse.y (case stmts): strip dummy NOP_EXPRs.

	* reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here,
	(choose_reload_targets): not here.

Thu Feb  9 01:35:55 1989  Richard Stallman  (rms at

	* output-sparc.c (output_mul_by_constant): Forget cc status.

	* stmt.c (assign_parms): Don't put volatile parms in regs.

	* (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers.

	* cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)).

	* c-typeck.c (default_conversion, digest_init): For static const
	nonvolatile scalar variable, use its initial value if known.

	* expr.c (expand_expr: case COMPONENT_REF): If containing structure
	comes out volatile, leave the component MEM volatile too.

	* hard-reg-set.h: Fix multi-word case macros to swallow semicolon.

	* c-typeck.c (default_conversion): In array=>ptr, volatility
	of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE.

	* reload1.c (forget_old_reload_1, choose_reload_targets):
	New array reg_is_output_reload is converse of reg_has_output_reload.
	forget_old_reload_1 needs both.

Wed Feb  8 01:26:24 1989  Richard Stallman  (rms at

	* reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads.
	Do process a spill reg if it isn't used for reloading in this insn.
	(forget_old_reloads): Deleted, replaced with note_stores.
	(reload_as_needed): Undo Feb 1 change.
	Call forget_old_reloads_1 on pseudos autoincremented and not reloaded.

	* c-typeck.c (convert_for_assignment): Handle variant types.

	* c-decl.c (lang_decode_option): -Wall implies -Wunused.

Tue Feb  7 01:32:28 1989  Richard Stallman  (rms at

	* combine.c (try_combine): Don't try adding outputs to an asm_operands.

	* cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo.

	* stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0.

	* c-decl.c (parmlist_tags_warning): New fn.
	* c-parse.y (parmlist, parmlist_or_identifiers): Call it,
	to warn about any tags defined inside the parmlist.
	* c-decl.c (grokparms): Don't warn about ptr to incomplete type.
	The new warning is better.

Mon Feb  6 01:11:36 1989  Richard Stallman  (rms at

	* expr.c (store_constructor): Incorrect ALIGN arg in store_field calls.

	* c-parse.y (%union): Delete unused alternative.

	* c-decl.c (grokparms): Use main variant to test for ptr to incomplete.

	* c-decl.c (finish_enum): Delete superfluous init for `pair'.

	* cse.c (fold_rtx): Optimize X+0, X-0 in floating point.
	Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against.
	(equiv_constant): Allow CONST_DOUBLE.

	* cse.c: Optimize past if-statements that are known to fail.
	(cse_insn): If condjump becomes uncond to end of this block,
	set cse_skip_to_next_block.
	(cse_basic_block): If that happens, ignore rest of block, and maybe
	treat next block as part of this one (if tables have room).
	Resume insn that starts next basic block to be scanned.
	(cse_main): Make room for at least 500 qtys.
	(cse_end_of_basic_block): Subroutine broken out of cse_main.

	* c-parse.y (hash, is_reserved_word): Rewrite: new hash technique.

	* c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch
	involving a function definition.

Sun Feb  5 17:31:12 1989  Richard Stallman  (rms at

	* (movdi): Typo in `fmoved'.
	(ftruncsf2): Handle moving into fp reg.

	* jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P.

	* reload1.c (choose_reload_targets): Move all death notes to the
	output reload insn.

	* (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern.

	* loop.c (delete_insn_forces): Use presence of REG_RETVAL to check
	for value-of-library-call insn.

Sat Feb  4 18:17:56 1989  Richard Stallman  (rms at

	* integrate.c (expand_inline_function): Make addresses of stack
	slots valid somehow.

	* tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib.

	* expmed.c (store_bit_field): Avoid (subreg (mem)) when converting
	VALUE1 to SImode.

	* jump.c (jump_optimize): Do delete USE and CLOBBER insns.
	This is needed for proper jump optimization.

	* rtl.def (COMPARE): New code.
	* *.md (compare and related patterns): Use COMPARE, not MINUS:VOID.
	* loop.c (eliminate_biv, can_eliminate_biv_p): Likewise.
	* cse.c (fold_rtx, fold_cc0, cse_insn):
	* output-m88k.c (output_{f,}compare, output_store):
	* output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p):
	* combine.c (subst):
	* jump.c (jump_back_p):

Fri Feb  3 18:34:27 1989  Richard Stallman  (rms at

	* output-i386.c (notice_update_cc): If arith insn sets the cc's,
	discard all remnants of previous cc value and flags.

	* (ashiftrt mem by 24): Fix typo `a1'.

Thu Feb  2 14:55:44 1989  Richard Stallman  (rms at

	* output-sparc.c (output_mul_insn): Clear the CC status.

Wed Feb  1 20:01:54 1989  Richard Stallman  (rms at

	* Version 1.33 released.

	* reload1.c (reload_as_needed): On entering new basic block,
	if it didn't need reload regs, forget all inherited contents of those.

	* tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's.
	Also delete the clauses and tests for FPA regs. 

Tue Jan 31 21:51:05 1989  Richard Stallman  (rms at

	* config.gcc: Handle convex-c1, convex-c2.
	* tm-convex1.h, tm-convex2.h: New files that include tm-convex.h.
	* tm-convex.h: Define switches -mnoc1, -mnoc2.

	* config.gcc: rename `nofp' to `nfp', to match the file names.

Mon Jan 30 22:12:15 1989  Richard Stallman  (rms at

	* output-sparc.c (output_delay_insn): Extract the operands,
	call alter_subreg, constrain_operands and NOTICE_UPDATE_CC.
	So callers other than output_eager_then_insn don't lose.
	(output_eager_then_insn): No need to do that stuff.

	* symout.c (symout_block_symbols): Handle (MEM (REG)) for
	variable-sized arrays.

	* tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage.

Sun Jan 29 17:06:26 1989  Richard Stallman  (rms at

	* Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}.

	* combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt.
	now limited to within the context of (set (cc0) ...).

Sat Jan 28 14:26:08 1989  Richard Stallman  (rms at

	* cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs.
	(fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)).

	* output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant.

	* tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case.

	* Makefile (bootstrap2): Don't use bootstrap3 as subroutine.

	* varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain
	if its MEM is stored in it; so it can be cleared at end of function.

	* stmt.c (emit_case_nodes): Put a compare before each cond-jump.
	Two cond-jumps after one cond is invalid and makes cse produce garbage.

Fri Jan 27 01:05:01 1989  Richard Stallman  (rms at

	* tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881.

	* c-decl.c (start_decl): Don't expand_decl if DECL already has rtl.
	(grokparms): If just declaring fcn, incomplete parm type is just
	a warning, and don't discard the specified type.

	* expmed.c (expand_divmod): Be smarter about not clobbering args
	with intermediate results; one mem can clobber another, and a reg
	can clobber a mem.

	* tm-i386.h (FUNCTION_PROFILER): Use LPREFIX.  May actually work now.
	* tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h.
	This means changing asm syntax.

	* (eager branch peepholes): Don't forget 2nd arg to
	Don't print warnings.
	* output-sparc.c: (strict_single_insn_op_p): Return 0 for floating
	REG or MEM, since copying that may take 2 insns.
	(operands_satisfy_eager_branch_peephole): require delay insn to
	be strict_single_insn_op_p as well as safe_insn_src_p.
	(operand_clobbered_before_used_after): Don't print warnings.

	* varasm.c (decode_rtx_const): Clear entire structure incl. gaps.
	Avoids spurious hash mismatches.
	(force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field.
	Also look in that field rather than hashing, to save time.

	* c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so.
	(store_init_value): Change error msg.

	* c-decl.c (duplicate_decls): Classify prototype vs nonprototype
	mismatches better.

	* tm-3b1.h: Fix comment.

Wed Jan 25 12:46:50 1989  Richard Stallman  (rms at

	* Makefile (cleanlinks): Use -f.

Tue Jan 24 17:54:16 1989  Richard Stallman  (rms at

	* cse.c (canon_hash): Fix paren error in last change.

	* varasm.c (immed_real_const_1): Missing arg to bcmp.

Mon Jan 23 02:43:45 1989  Richard Stallman  (rms at

	* stor-layout.c (layout_type): BLKmode elts force array to be BLKmode.

	* genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output.

	* stmt.c (expand_expr_stmt): No "no effect" warning for error-mark.

	* varargs.h: Rename implicit arg name to __builtin_va_alist
	which triggers code in assign_parms.  Does this really matter?

	* (sne): New define_expand.
	(seq recognizers): Handle sne as well.
	* output-sparc.c ({strict_,}single_insn_src_p):
	Some NEG and MINUS insns are actually 2 asm insns.
	(safe_insn_src_p): No floating arith is safe; they can trap.
	(eq_or_neq): New fn, for seq/sne recognizers.

	* c-decl.c (grokdeclarator, size of array type):
	Strip from SIZE any NOP_EXPRs that don't change anything.

	* reload.c, recog.c: Include real.h so constraint macros can examine

Sun Jan 22 04:12:54 1989  Richard Stallman  (rms at

	* c-decl.c (init_decl_processing): Define __builtin_saveregs.
	* tree.h: likewise.
	* expr.c (expand_builtin): Handle it.

	* tm-sparc.h: Define TARGET_EAGER and -meager.
	* (eager branch peepholes): Reenable, but test TARGET_EAGER.
	Change fb insns to use %F.  Delete `,a' from some of them.
	* jump.c (jump_optimize): Don't delete USE and CLOBBER insns.

	* xm-vms.h (const): Define it as empty.

	* Move the rename of cexp_tab.c.
	Compile cccp.c with no macro definitions.

	* cccp.c (main): VMS conditional for setting max_include_len.

Sat Jan 21 12:53:00 1989  Richard Stallman  (rms at

	* varargs.h (va_start): On sparc, call __builtin_saveregs.
	Delete the old conditional that used va-sparc.h.
	Rename macros and locals to start with two underscores.
	* va-sparc.h: File deleted.

	* c-decl.c (store_parm_decls): Initialize OTHERS.

	* stmt.c (assign_parms): Obey layout_decl.

Fri Jan 20 02:19:32 1989  Richard Stallman  (rms at

	* cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address
	to 16 bits.

	* tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed.

Thu Jan 19 13:53:24 1989  Richard Stallman  (rms at

	* c-typeck.c (mark_addressable): For global reg var, report error.
	Now returns an int; value of 0 means caller should fail.
	All calls (in this file) changed.

	* stor-layout.c (layout_decl): Don't let an more than 1 word
	of any aggregate go in any 1 register.  (Needed for machines whose
	integer regs are 64 bits).

	* tm-convex.h, xm-convex.h,, output-convex.c: new files.

	* expr.c (convert_move): Use extendqidi2, etc. for converting
	small ints to double ints.  Use zero_extendsidi2 rather than
	clearing the high half.

Wed Jan 18 01:20:52 1989  Richard Stallman  (rms at

	* varasm.c (make_decl_rtl): If global `register' decl is invalid,
	make ordinary non-register rtl.

	* output-sparc.c (operand_clobbered_before_used_after): new fn.
	(reg_clobbered_p, safe_insn_src_p): New fns.
	(single_insn_src_p): Treat constants all as ok, even though not
	always literally so.  Also accept some SIGN_EXTENDs and ZERO_EXTENDs.
	(strict_single_insn_src_p): New fn, like above but is strict
	about constants and constant memory addresses.
	(relop): New fn.
	(output_move_double): Don't make a MEM, and don't use %m.
	(output_delayed_branch): New name for output_delay_insn.
	Now handle non-small constant operands.
	Avoid duplicate loads of g1 for constant addresses.
	Use recog_operand directly for output of the delay insn.
	(output_delay_insn): Now a completely new fn.
	(output_eager_then_insn, next_real_insn_no_labels): New fns.
	(operands_satisfy_eager_branch_peephole): New fn.

	* New peepholes for testing a recently used operand.
	New peepholes for delayed branches, incl. conditional ones.
	** Some of them commented out because they seem not to work.
	(andcc recognizer): Fix typo, missing %.
	(bgt): Change bgt to bg in output.
	(reversed jumps): Replace with one pattern using match_operand.
	It uses %F to output the condition.
	(movsi): For round-valued immed const, use just a sethi.
	For other immed, use explicit sethi and or.
	(movhi, movqi): use `move' for reg source or small int source.
	For other immed, use explicit sethi and or.
	(movsi, etc.):	Handle all constant addresses like SYMBOL_REFs.
	(movsf): Delete never-used duplicate code for constant addresses.
	(addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set.
	(andsi3, iorsi3, xorsi3): Likewise.
	(jump): Make an annulled branch.

	* tm-sparc.h (PROMOTE_PROTOTYPES): Define this.
	(GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses;
	also cleaned up.
	(NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory.
	Assume all PARALLEL insns are peepholes.
	(PRINT_OPERAND): New codes C and N for outputting conditions,
	either forward or reversed.  Also F for reversed floating.

	* jump.c (delete_for_peephole): New function to delete range of insns.
	* genpeep.c (gen_peephole): Output code to use this.

	* Makefile (install): Fix typo, had $${name} for $${file}.

Tue Jan 17 00:00:12 1989  Richard Stallman  (rms at

	* (ashlsi3): Use addl or leal for special cases.

	* c-decl.c (grokdeclarator): Make a non-global VAR_DECL public
	if it is external.

	* masm386.c: Clean up formatting.

	* cse.c (fold_rtx): Typo simplifying x|0 or x^0
	when the 0 comes second.

	* expmed.c (store_fixed_bit_field): For halfwords, verify that
	the field fits in an *aligned* halfword.
	(extract_fixed_bit_field): likewise.

	* expmed.c (store_split_bit_field): New arg align, passed in from
	store_fixed_bit_field and passed back to it.
	(extract_split_bit_field): likewise.

	* expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3.
	Also changes from Dec 23, Dec 28 and Dec 29.

	* tm-i386.h: Likewise for changes from Dec 30.

	* c-typeck.c (build_component_ref): If field's type is error-mark,
	return an error-mark.

Mon Jan 16 14:16:54 1989  Richard Stallman  (rms at

	* genpeep.c (main): Output code to exit early if insn is followed
	by a barrier.
	(gen_peephole): Reject barriers just like labels.

	* stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn.
	Caller changed.  Now static.

	* final.c (final): Set INSN_DELETED_P in insns when output.

	* final.c (final): Re-set BODY if peephole does anything.

	* c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list.
	(store_parm_decls): If we had a prototype, separate out anything other
	than a PARM_DECL declared in it, and pushdecl those at the end,
	after DECL_ARGUMENTS is set.

	* stmt.c (expand_end_case): Do stack adjusts after computing index.

	* expr.c (store_one_arg): Handle padding for case of BLKmode
	for which space was preallocated.

	* integrate.c (copy_rtx_and_substitute): When copying asm insn,
	preserve sharing of the input-operand vectors.
	(expand_inline_function): Clear {orig,copy}_asm_operands_vector
	to make that mechanism work.
	(save_for_inline, copy_for_inline): Likewise.

	* stmt.c (expand_asm_operands): Reject `+' in constraints.
	Every output constraint requires `='; inputs reject it.

	* stmt.c (expand_function_end): Arg to fixup_gotos was missing.

Sun Jan 15 00:28:23 1989  Richard Stallman  (rms at

	* cccp.c, gcc.c (main): Handle SIGPIPE.
	(pipe_closed): New fn; report suitable fatal error.

	* loop.c (loop_optimize): Initialize moved_once.

	* gcc.c (do_spec): Don't call `execute' if value != 0.
	Delete redundant second call to do_spec_1.

	* toplev.c (compile_file): Make declared-but-not-defined warnings
	only if -Wunused.

	* stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat.

	* tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong.

	* gcc.c (env_exec_prefix refs): Don't try to open via it if it's null.

	* output-sparc.c (output_store, output_load_{fixed,floating}):
	Fixed confusions between the mem ref and its address.

	* cse.c (canon_hash): global_regs has entries only for hard regs.
	* flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise.

	* cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR
	DIV and shifts with one arg 0 or 1.

Sat Jan 14 11:41:11 1989  Richard Stallman  (rms at

	* c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays.

	* fixincludes: Make all subdirs in advance, so no need for `dirname'.

	* genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES;
	instead, clear JUMP_LABEL for any jumps being deleted.
	No need to test INSN1 for being a label, since not called then.
	[If any of the matched insns is a JUMP_INSN, set want_jump,
	and in that case make the matched peephole a JUMP_INSN itself.]
	That's in an #if 0 now; it's good in jump, but not in final.

	* jump.c (jump_optimize): Don't do peepholes here.
	* final.c (final): Do them here.

	* jump.c (jump_optimize): In optimizing `if (foo) bar; else break;',
	don't try to invert anything but a standard-looking conditional jump.

	* jump.c (jump_optimize): Do peepholes on ALL BUT the first pass.

	* gcc.c (env_exec_prefix): New var used like user_exec_prefix
	but set from envvar GCC_EXEC_PREFIX.

Fri Jan 13 13:21:59 1989  Richard Stallman  (rms at

	* genpeep.c (gen_peephole): Test INSN1 for a label at the very start,
	then test following insns at the end of the loop.

	* (call recognizers): do CC_STATUS_INIT, for %g1.

Thu Jan 12 02:13:49 1989  Richard Stallman  (rms at

	* varasm.c (make_decl_rtl): Recognize more error cases for reg vars:
	BLKmode, or initializer given.
	Distinguisn missing asm from invalid name.

	* expr.c (expand_call): Never return 0; return const0_rtx instead.
	This makes expand_expr more uniform.

	* c-decl.c (grokparms): For ptr to incomplete type, just warn;
	don't change the parm's type.

	* stmt.c (expand_return): Set RETVAL_RHS so as to recognize
	tail-recursive fcn returning void.
	Unconditionally test value of expand_expr for being a REG.

	* reload.c (find_reloads): Don't process insns that have
	no constraint alternatives.  No more need for have_constraints.

	* recog.c (constrain_operands): New local var nalternatives.
	Don't bother checking the insn if nalternatives is 0.

Wed Jan 11 01:27:48 1989  Richard Stallman  (rms at

	* Implement global register decls.

	* varasm.c (make_decl_rtl): Handle global register vars.
	(make_function_rtl): Set function_defined: after 1st function dfn.
	(assemble_variable): Ignore global register vars.

	* c-decl.c (grokdeclarator): Don't reject global register decls.
	(builtin_function): Use make_decl_rtl, not make_function_rtl,
	to avoid setting function_defined.

	* regclass.c (init_reg_class{,_1}): Init and process global_regs.
	They are fixed, and call-clobbered.

	* flow.c (insn_dead_p): Storing one of global_regs is never dead.
	(mark_used_regs, mark_set_1): A global reg is never dead.

	* cse.c (canon_hash): Consider global regs volatile.

	* expr.c (do_jump): Know how to invert jumps which are sequences.

	* dbxout.c, symout.c, final.c: On USG, use our own stab.h.

	* tm-i386gas.h: New file for GAS on sysV (with DBX debugging info).

	* (bfchg and bfins patterns): Make # alternatives uniform.
	* Likewise; also in movdf patterns.

	* genoutput.c (output_epilogue): Spurious `break' disabled
	error check for mismatched # of alternatives.
	(output_epilogue, scan_operands): Errors in input are not fatal.

	* flow.c (regno_uninitialized): Avoid crash if no basic blocks.

	* (move insns): Delete special patterns that handled
	symbolic constant addresses.  The main move patterns now do this.
	* output-sparc.c (output_store, output_load_{fixed,floating}):
	Subroutines to do the work for this; has the code from those
	special patterns.  Also fixed bugs in testing against cc_status.mdep.

	* output-sparc.c (output_delay_insn): Clear the CC status.
	This is necessary for %g1 in the case of a call insn.

	* tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP.
	(REGNO_REG_CLASS): Corresponding change.
	(REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used.

	* optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode.
	All callers changed.
	Pass alignment (as rtx) as 4th arg to cmpstr gen functions.
	Use cmpstrhi if available.
	* expr.c (compare): Only this call passes a nonzero ALIGN.

	* expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx)
	as 4th arg to movstr gen functions.

Tue Jan 10 23:43:05 1989  Richard Stallman  (rms at

	* stor-layout.c (layout_type): Use BLKmode, if a struct isn't
	aligned well enough for a scalar mode.

	* expr.c (expand_expr): For static CONSTRUCTOR, ensure memory
	address is made valid.

	* genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands.

Mon Jan  9 17:07:56 1989  Richard Stallman  (rms at

	* varasm.c (output_constant): Split strings every 2000 chars.

	* stmt.c (expand_end_case): Test bkwds, handling constant switch arg.

Fri Jan  6 09:11:20 1989  Richard Stallman  (rms at

	* output-sparc.c (output_delay_insn): Add parens to first if test.
	(output_move_double): Turn addr for `sethi' into MEM for %m.

	* c-typeck.c (convert_for_assignment): move test for ERROR_MARK.

	* c-parse.y (unary_expr): Allow cast_expr as arg of unary op.

	* stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl;
	assemble_variable is called after this.

	* c-parse.y (primary -> identifier): Separate case for undeclared
	identifier outside of functions; avoids confusing error msgs.

Thu Jan  5 01:24:47 1989  Richard Stallman  (rms at

	* Makefile (install): Ignore errors in all `if' commands.
	Create $(libdir) if nec.

	* Makefile (insn-*.[ch]): Put in empty commands.  May help Ultrix Make.

	* stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps.
	Arg INDEX is an rtx, not a tree.
	(expand_end_case): Pass that arg.
	(node_has_{low,high}_bound): check for overflow, avoid confusion.

Wed Jan  4 02:24:21 1989  Richard Stallman  (rms at

	* (movdi, movdf): Use `&' constraint when loading reg from;
	otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))).

	* expr.c (emit_push_insn): For memory scalar partially going in regs,
	copy each word to reg before pushing.  Avoids memory-to-memory move.
	Make the displaced address valid.
	Also delete unfinished STACK_OFFSET variable.

	* c-parse.y (check_newline): Read just one #-directive and return.
	This prevents lossage when toplev.c calls it to get the main input file
	name, and it gets a following #ident as well.

	* c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual.
	* c-typeck.c (build_c_cast): Issue some warnings if set.

	* tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'.

Tue Jan  3 18:07:31 1989  Richard Stallman  (rms at

	* expr.c (emit_library_call): Do force_operand on each operand
	if it isn't a REG, MEM or constant.
	Do this, or mode conversions, earlier, before loading any hard regs.

	* (addsi3) [SGS]: Put a zero displacement in the `lea'.

	* c-typeck.c (default_conversion): Don't lose `const' or `volatile'
	when converting array type to pointer.

Mon Jan  2 01:18:01 1989  Richard Stallman  (rms at

	* expmed.c (store_bit_field, store_fixed_bit_field): New arg,
	alignment in bytes the structure is known to have.
	(store_fixed_bit_field): Handle working in halfwords,
	in case the pointer isn't known to have fullword alignment.
	* expmed.c (extract_bit_field, extract_fixed_bit_field): likewise.
	(extract_bit_field): fix unsignedp arg to extract_fixed_bit_field.
	* expr.c (store_field): New arg, passed to {store,extract}_bit_field
	(expand_assignment, store_constructor): Pass that arg.
	(expand_expr): Pass new arg to extract_bit_field.

	* (casesi_2 recognizer): Offset always 6 for 3b1.

	* c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs
	put on by build_c_cast (to make the result not an lvalue).
	(build_modify_expr, build_compound_expr): likewise.
	(build_conditional_expr): likewise.
	(actualparameterlist, build_function_call): likewise.
	(default_conversion, truthvalue_conversion): likewise.

	* loop.c (move_movables): If reg has moved out of one loop,
	divide `savings' by 2.

Sun Jan  1 03:00:07 1989  Richard Stallman  (rms at

	* c-typeck.c (truthvalue_conversion): Distribute the conversion
	into the arms of a COND_EXPR.

	* cse.c (fold_rtx): Don't fold a MINUS with VOIDmode
	into a symbolic constant--it's incorrect.

	* cse.c (cse_insn): If SRC is a subreg with known value, simplify it.

	* integrate.c (copy_rtx_and_substitute): Allow a ref to a part of
	MEM parm whose actual parm is a reg, provided it refs
	the low part of the MEM.
	(function_cannot_inline_p): Don't inline functions which have
	aggregate parameters and take their addresses.  This could produce
	refs to non-low-parts, which copy_rtx_and_substitute can't handle.

	* c-typeck.c (build_modify_expr): If lhs is COND_EXPR,
	make a COMPOUND_EXPR to ensure the rhs is computed before the branch.

	* Implement -pipe.
	* gcc.c (do_spec_1): `|' is now a special delimiter
	which goes in the argbuf.
	When a newline is preceded by a `|', delete it if no -pipe.
	Otherwise, don't execute yet, and keep scanning.
	(do_spec): At end, if we have stuff with no newline, execute it.
	(handle_braces): Implement %{|foo:...}.
	(execute): If argbuf contains some `|'s, run several processes
	and pipe them together.
	(pexecute): new subroutine to make one of the processes.
	(find_exec_file): new fn to search for program to execute.
	(record_temp_file): new arg FAIL_ONLY.
	(store_arg): 2nd arg == 3 means delete file on failure.
	This is used for output files.
	(delete_temp_files): delete certain files only if fail.

	* cccp.c (include_defaults): /usr/include before /usr/local/include.

	* recog.c (asm_noperands): 1-off in loop checking CLOBBERS
	when no output operands and PARALLEL.

	* expmed.c (negate_rtx): Sign-extend the high bits rather than clear.

	* cse.c (fold_rtx): fold negation of real values.
	(fold_cc0): fold comparisons on real values.

	* Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H.

	* Handle floating-point problems for cross-compilation.

	* real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE.
	* varasm.c (immed_double_const, decode_rtx_const): Use these.
	({force,clear}_const_double_mem): Likewise.
	* output-*.c (output_move_double): Use these.
	* output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise.
	* tm-*.h (PRINT_OPERAND): Use these.
	* output-i386.c (print_operand): Use these.
	* final.c (output_addr_const): Likewise.
	* emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE.

	* real.h (union real_extract): Portable type for storing real as ints.
	* varasm.c (immed_double_const, decode_rtx_const): Use these.

	* varasm.c (immed_real_const_1, decode_rtx_const):
	Don't assume REAL_VALUE_TYPE is 2 ints long.
	* emit-rtl.c (init_emit_once): Likewise.

	* real.h (REAL_VALUE_TYPE): Define as `double' if not defined.
	(REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used.
	(REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined.
	* tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value.

	* rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE
	needs more space.  Change the rtx_format element to match.
	* varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE.
	(force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE.
	* emit-rtl.c (init_emit_once): Likewise.
	And use REAL_VALUE_ATOF to get a floating zero.
	* optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP.
	* c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF.
	* fold-const.c (split_tree): Don't accept REAL_CSTs.
	(combine, fold_convert, fold): Use REAL_ARITHMETIC if defined;
	else don't fold reals if they are not doubles.
	* tree.c (build_real_from_int_cst): Likewise.
	* print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value
	in hex, since we don't know how to do it right.

Sat Dec 31 14:15:13 1988  Richard Stallman  (rms at

	* optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL,
	* tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct.

	* tm-sun3-nfp.h, tm-sun3-fpa.h: New files.

Fri Dec 30 00:14:36 1988  Richard Stallman  (rms at

	* cccp.c (main): Certain envvars specify a file to write deps info to.

	* toplev.c (compile_file): Warn about undefined fns declared static.

	* (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards.
	* tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise.  Also missing `\'.

	* reload1.c (count_occurrences): New function.
	(choose_reload_targets): Don't delete a reload if the same reg
	is used elsewhere in the current insn.
	(delete_output_reload): code split out from choose_reload_targets.

	* c-typeck.c (build_c_cast): Always put on some operator,
	so the cast is never an lvalue for strict ANSI.

	* c-typeck.c (initializer_constant_valid_p): Don't depend on
	distinction between NOP_EXPR and CONVERT_EXPR.

	* c-convert.c: Fns reordered; new comments.

	* fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR,
	return a NOP_EXPR.
	New var TYPE holds type of expr.

	* c-parse.y (expr_no_commas): Split off cast_expr and unary_expr,
	to reject `sizeof (int) foo'.

	* toplev.c (main): Treat plain `-' as input filename.

	* final.c (final): If an insn's output routine returns 0,
	it means to output the deleted compare insn immediately preceding.

	* (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP
	rather than explicitly clearing the overflow flag.

	* tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort.
	* (branch insns): Put real data (sometimes 0) in 3rd arg
	of OUTPUT_JUMP.  0 means preceding test may not be deleted.
	(lea pattern): Clear the cc's.
	* output-i386.c (notice_update_cc): various arith insns set the cc's.

Thu Dec 29 13:22:01 1988  Richard Stallman  (rms at

	* stmt.c (expand_decl_init): Do nothing for static decls.

	* reload.c (find_reloads_address{,_1}): Return 1 iff entire arg
	was reloaded as a whole, else 0.
	(find_reload): If find_reloads_address returns 1, don't let that MEM
	satisfy a `>' or `<' constraint.

	* (cmpmb): Delete special pattern, make cmpqi handle it.
	The special pattern couldn't handle reloading the incremented register.

	* integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN,
	not BITS...

	* combine.c (subst): Consider big-endian correction
	when simplifying (subreg (mem ...) ...).

	* reload.c (find_reloads): Don't crash if matching operands in `asm'
	are both read or both write.

	* expr.c (emit_push_insn): Address for movstr must be XINNER, not X.

	* toplev.c (main): Typo parsing `-fno...'.

Wed Dec 28 13:07:21 1988  Richard Stallman  (rms at

	* toplev.c (rest_of_compilation): `volatile' fns need jump_optimize
	for warnings, as if -Wreturn-type.
	* c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn.
	* c-decl.c (finish_function): Warn if `volatile' fn can drop thru end.

	* cse.c (canon_reg): Handle nulls as subexpressions.
	(fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise.
	* loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p,
	{basic,general}_induction_var): Likewise.

	* expr.c (expand_call): Handle `const' functions:
	Local IS_CONST is 1 if function is const.
	Attach REG_RETVAL and REG_LIBCALL notes around the call.
	Copy fn address to register outside of those notes.
	Likewise precompute all parms outside them.

	* expr.c (expand_call): If fn is volatile, emit barrier after the call.

	* c-decl.c (grokdeclarator): Allow function declared const or volatile.

Sat Dec 24 18:40:12 1988  Richard Stallman  (rms at

	* integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING
	or STRUCT_VALUE	is defined, can't inline functions returning BLKmode.

Fri Dec 23 13:26:26 1988  Richard Stallman  (rms at

	* expr.c (store_constructor): Compute array's size
	with int_size_in_bytes.

	* varasm.c (assemble_variable): If shared data, go to data section
	before outputting an uninitialized symbol.

	* tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash.
	(SHARED_SECTION_ASM_OP): Macro defined.
	* tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined.

	* c-typeck.c (c_expand_asm_operands): Warn if output op is `const'.

	* Fix problem where a stmt expr in an initialization
	refers to the variable it is initializing.
	* stmt.c (expand_decl_init): New fn split out from `expand_decl'.
	* c-decl.c (finish_decl): Call that.
	Don't call expand_decl if already done.
	(start_decl): Call expand_decl if type is complete already.

	* Makefile (install): Typo in ranlib command.

Thu Dec 22 15:57:12 1988  Richard Stallman  (rms at

	* tree.h (tree_identifier): New field.
	(IDENTIFIER_ERROR_LOCUS): Accessor for it.
	* c-parse.y (primary => IDENTIFIER):
	Undeclared variable gets one err msg per function it appears in.

	* (andsi3): Delete extra brace.

	*, xm-alliant.h, tm-alliant.h, output-alliant.c: New files.

	* combine.c (SUBST, SUBST_INT): Store new field `is_int'.
	(copy_substitutions): Don't copy an int as an rtx.

	* Makefile (INSTALL): Install gcc.1 properly.

	Add missing backslashes.

See file OChangeLog.
Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never