4.4BSD/usr/src/contrib/gcc-2.3.3/ChangeLog.2

Thu Jan 31 00:33:33 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (scan_loop): Check each libcall for regs it uses
	but does not mention in the equivalent value.
	To move the libcall, we must have at most one such reg
	and it must be moved as well.
	(libcall_other_reg): New subroutine.
	* rtlanal.c (record_excess_regs): New function.

	* tree.c (gcc_obstack_init): New function.
	(init_obstacks, save_tree_context): Use that.
	(OBSTACK_CHUNK_SIZE): New parameter.
	* xm-next.h: New file.
	* configure (m68k/next): Use that file.

	* flags.h (flag_no_common): Declare new flag to treat external defs
	as ANSI specifies (i.e. not as common).
	* toplev.c (flag_no_common, f_options): Support -fno-common.
	* varasm.c (assemble_variable): Don't output a common if
	flag_no_common is set.	Treat as if initialized to 0.

	* gcc.c (default_compilers): Define __ASSEMBLER__ for .S file.

	* tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs.
	(LINK_SPEC): Pass through all -K and -T options.
	* xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning.

	* tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags.
	(TARGET_SWITCHES): Alternatives to set them.
	* tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040.

	* out-m68k.h (standard_68881_constant_p):  Always return 0
	for TARGET_68040 since fmovecr is no longer implemented in hardware.

	* m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for
	TARGET_68040, since it is no longer implemented in hardware.
	(muldf3): Don't use fscale on 68040, since not implemented in hardware.

	* toplev.c (optimize): Now stores specified optimization level.
	(main): Keep the largest optimization level specified.
	Handle any integer.

	* c-decl.c (pushdecl): Don't make an extern global for -traditional
	if it uses any local types.

	* tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value.

Wed Jan 30 12:41:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc.

	* function.c (put_var_into_stack): Allocate var ref chain link
	while in the proper function's obstack.

	* fold-const.c (const_binop): Don't crash for real/0 if have infinity.

	* flow.c (mark_set_1): Don't make log link for hard reg in asm insn.

Wed Jan 30 07:45:33 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* sched.c (schedule_block): Indicate what insns constitute each
	basic block.

Tue Jan 29 12:35:42 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets.

	* print-tree.c (print_node): Print message if TREE_PERMANENT is wrong.
	* tree.c (object_permanent_p): New function.

	* print-tree.c (print_node): Remove DECL_LANG_FLAG_10.

Tue Jan 29 10:07:48 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (minus/xor/and, neg/ne/compare/and): Delete these.  This
	should be done by combine.
	(compare operator): Eliminate except when a SET_SRC.
	* tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a
	default optimization.

Mon Jan 28 12:52:11 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL.
	(struct tree_common): Eliminate virtual_flag.
	(struct tree_decl): Add virtual_flag.

	* Makefile.in (enquire.o): Pass -DNO_STDDEF.

	* m68k.md (tablejump): Now have a define_expand that does
	different things depending on CASE_VECTOR_PC_RELATIVE,
	and a separate define_insn for each case.

	* function.h (outer_function_chain): Declare the variable.

	* tree.c (debug_obstack): Fix typos.
	* tree.h (struct tree_common): Fix typo.

	* Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted.
	(gnulib): Depend on gnulib1.target and gnulib2.target explicitly.

	* dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL.

	* cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0.

	* cexp.y (keywords): Cast names for parens to U_CHAR *.

	* gcc.c (process_command): Fix typo setting switches[n_switches].arg.

	* loop.c (loop_reg_used_before_p): Check insns before INSN, not after.

	* objc-actions.c (objc_finish): Renamed from lang_finish.
	* objc-parse.y (program): Call objc_finish at the end.

	* Changes from Matthew Self (mself@next.com):

	* objc-parse.y:	 Since objc-parse.y was so out of date with
	respect to c-parse.y, I started over with c-parse.y and
	reintegrated the Objective-C modifications.  Now that
	Objective-C is working I hope that objc-parse.y will be kept
	more up to date....  I did not re-integrate the lexer since I
	don't have gperf working.  I simply cut and pasted what
	Stallman had in objc-parse.y.  Someone with access to gperf
	should re-generate this stuff.

	* objc-actions.c (comp_method_with_proto,
	comp_proto_with_proto):	 Stallman's change to use the
	functions end_temporary_allocation and
	resume_temporary_allocation is incorrect, since it always
	leaves allocation temporary, whether it was before or not. 

	Perhaps the push and pop functions would do the trick....

	* objc-actions.c (get_arg_type_list):  Use new function
	groktypename_in_parm_context.

	* objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl,
	_OBJC_SELECTOR_REFERENCES_id):	Removed.

	* objc-actions.c (synth_module_prologue):  Eliminated code to
	forward declare the selector references array.

	* objc-actions.c (init_objc_symtab):  Eliminated code to
	initialize "refs" field in objc_symtab structure (which is
	now vestigial).

	* objc-actions.c (build_selector_translation_table): Rewrote.

	* objc-actions.c (build_selector_reference):  New routine.

	* objc-actions.c (build_message_expr, build_selector_expr):
	Use new routine.

	* config/tm-next.h (GO_IF_INDEXABLE_BASE):  Don't use pc
	relative addressing for LABEL_REF's.  Since branch tables are
	in the const section, we treat LABEL_REF's like SYMBOL_REF's
	here.  Otherwise invalid addresses were being generated.

	* config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE):
	Use absolute branch tables rather than relative ones.

	* config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END):  Output
	an N_SO symbol with no name to mark the end of the module.
	This is needed to support scattered loading on the NeXT.

	* config/out-next.c (handle_pragma):  Call to xrealloc had wrong args.

	* configure: Entry for NeXT must set out_file to out-next.c.

	* config/out-next.c:  Typo: "flags" -> "flags.h"

	* config/tm-next.h (LIB_SPEC):	Brought up-to-date.  There
	are probably more changes needed here.

	* c-decl.c (pushdecl_top_level):  New function.	 This was
	copied from an older version of g++.

	* c-decl.c (init_decl_processing): Make alloca first arg sizetype.

	* c-decl.c (groktypename_in_parm_context): New function.

Mon Jan 28 07:07:01 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN
	might have been made by loop.c for an outer loop.

	* loop.c (move_movables, strength_reduce): Replace register references
	in REG_NOTES as well as PATTERN.

	* loop.c (strength_reduce): Call maybe_eliminate_biv twice, not 
	three times.
	(maybe_eliminate_biv): Don't abort if elimination fails even though
	we thought it wouldn't.	 This can happen if certain insn patterns 
	aren't valid.
	(maybe_eliminate_biv_1): Ensure that we do not change the insn at
	all if all the required changes can't be done.

Sun Jan 27 21:26:29 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in: Rename config-dir back to config.

Sat Jan 26 17:48:22 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* objc-parse.y (program): Call objc_finish.
	* objc-actions.c (objc_finish): Renamed from lang_finish.

	* objc-actions.c, objc-parse.y: New version from NeXT.

Sat Jan 26 17:37:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Disable special-case of
	A ? B : C when B and C are simple.  This is now done better by jump.

Sat Jan 26 13:16:58 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros.
	(struct tree_common): New flag fields.
	* dbxout.c (dbxout_type): Get rid of conditional; can always use these.

	* cccp.c (lookup_import): Do return -2 if file found.
	(main): Handle `.m' suffix like `.S'.

	* configure (m68k/next): Use out-next.c.

	* WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args.
	* gcc.c (struct switchstr): New field `args' replaces `part2'.
	(process_command): Record all the args a switch has.
	(give_switch): Pass all the strings in `args'.

	* tree.h (struct tree_common): Normally make `code' an enum tree_code.

	* m68k.md (tablejump): New pattern.
	(casesi, etc.): Deleted.

	* tree.c (debug_obstack): New function.

	* toplev.c (compile_file): Call dbxout_finish near the end.
	* dbxout.c (dbxout_finish): New function.

	* print-tree.c (print_node): Always print ERROR_MARK node briefly. 

	* objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros.

	* gcc.c (execute): Make fatal signal message clearer.
	(default_compilers): For .m file, define __OBJC__,
	and pass -lang-objc and -gen-decls to cc1.

	* dwarfout.c: Include output.h.
	(current_function_decl, asm_out_file): Explicit extern decls deleted.
	(abort, fatal): Explicit extern decls deleted.
	(NO_RETURN): Definition deleted.
	(named_labels): Don't declare it.
	(output_symbol): Don't use it.
	(MAXPATHLEN): Don't define this.  Don't include sys/param.h.
	(output_source_file_die): Avoid limit on file name size.
	(output_symbols_for_stmt): Deleted.
	(output_symbols_for_block): Adapt to using BLOCK, not LET_STMT.

	* configure: Renamed from `config'.
	* config: Directory renamed back from config-dir.

Sat Jan 26 1990	 Ron Guilmette (rfg at ncd.com)

	* README.DWARF: updated to reflect changes to dwarfout.c, the
	inclusion of dwarf.h (and its changes) and the fact that the
	DWARF support is no longer directly tied to the DG versions of
	GCC.

	* dwarfout.c: included a patch (provided by Ray Essick) to allow
	dwarfout.c to properly get a value for MAXPATHLEN even on (old)
	System V.3 systems.

	* dwarfout.c: added support for long long types (as suggested by
	Ray Essick).

	* dwarfout.c: added support for the AT_comp_dir attribute.  Also,
	as part of this change, the name of the compilation directory is
	no longer placed into in the .sources section.

	* dwarfout.c: added support for the AT_addr_ranges attribute.

	* dwarfout.c: added support for the AT_prototyped attribute.

	* dwarfout.c: added support for the AT_src_info attribute. Also,
	as part of this change, there is no longer a "special" entry
	at the start of the .srcinfo section for each compilation unit,
	and the contents of the "special" final entry in the .srcinfo
	section have changed (to { -1, -1 }).

	* dwarfout.c: modified to allow additional GNU DWARF extensions
	to be generated whenever the corresponding extended attribute
	codes are defined (presumably within a modified dwarf.h file).

	* dwarfout.c: use the section names .srcinfo and .sources rather
	than .finfo and .files.	 The additional specificity is warranted
	because the DWARF information may someday include information
	about object files as well as source files.

	* dwarfout.c: fixed a bug where a type attribute was being generated
	for functions and function types even when the return type was
	void.  "Standard" dwarf says that if the return type for a function
	or function type is void then no type attribute should be generated
	for the corresponding DIE.

Sat Jan 26 04:22:08 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and
	friends.

	* cplus-typeck.c (build_unary_op): Merge change to generate better
	code from simple cast expression.

Fri Jan 25 10:06:28 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name
	is anonymous, lest we recurse ad infinitum.

Thu Jan 24 23:56:55 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop, expand_unop): Word at a time only for ints.

Thu Jan 24 09:40:37 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with
	SUBREG.	 Don't emit a symbolic definition for variables that can't
	be represented.

Thu Jan 24 21:18:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* config: Conditional for setting $os was backward.
	Also mention name of make-var file if one exists.

	* out-i386.c: Delete a large piece of accidental insertion.

	* dwarfout.c: Don't include c-tree.h or cplus-tree.h.
	(INT_TYPE_SIZE, etc.): Define them if not overridden.
	(fundamental_type_code): Distinguish types by TYPE_PRECISION.
	But also check for the built-in C type names.

Thu Jan 24 15:23:17 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (default_compilers): Pass all args starting with "O" to 
	cc1 so that -O2 is passed along.

Thu Jan 24 13:10:27 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c (expand_expr_stmt): Don't warn for any casts to void.

	* config: Fix typos setting shell vars.
	Rename config to config-dir.
	Insert missing \ in case for delta.

Wed Jan 23 16:31:27 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be
	a SEQUENCE.

	* loop.c (check_dbra_loop): Use emit_jump_insn_before when writing 
	out compare and jump sequence, not emit_insn_before, to ensure that
	if we only write one insn  that it is a JUMP_INSN.

	* toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop.
	(rest_of_compilation): Rerun cse after loop if desired.
	(main): Add support for -O2.
	Prescan args for -O and -O2 to set default values for many -f options.
	Add call to new macro OPTIMIZATION_OPTIONS.
	Save status of -version until all args have been processed; then
	write out the info.
	(print_single_switch): New function.
	(print_switch_values): Renamed from print_target_switch_defaults.
	Now prints out currently enabled -f, -m, and -W switches.  Calls
	print_single_switch to write out switch and handle long lines.

	* rtl.def (SUBREG): Change rtx class from 'o' to 'x'.

	* cse.c (find_comparison_args): Ignore hash table entry if not valid.

Wed Jan 23 00:12:24 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* config: File renamed from config.gcc.
	Allow abbreviations for +-options.
	Allow config HOST TARGET.
	Support +gas and +nfp as separate options.
	Rename all the machine alternatives to general scheme:
	cpu/company-system.  Allow abbreviations for cpu/company pairs.
	* config-dir: Dir renamed from config.

	* Makefile.in (install-dir): Create bindir here.

	* cccp.c (main): Delete duplicat p++ left in last change.

	* Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*.
	(gnulib1.portable, gnulib1.target): Renamed from gnulib.*.
	They now make a file named gnulib1, from gnulib1.c.
	(LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*.
	(for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET.
	(stamp-gnulib2): This file is no longer used.
	(gnulib2.portable): Old stamp-gnulib2 rule renamed to this.
	Now create a file named gnulib2, from gnulib2.c alone.
	(gnulib): New target, combines gnulib1 and gnulib2 into gnulib.
	(mostlyclean): Delete additional temporary files.
	No need to avoid deleting stamp-gnulib2.
	(clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2.
	(realclean): No need to delete gnulib here.
	(install-gnulib): Changed dependencies.
	* gnulib1.c: File gnulib.c renamed.

	* Makefile.in (install-dir): Create bindir here.

	* cccp.c (main): Delete duplicat p++ left in last change.

Sun Jan 20 14:00:16 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY
	on whether or not it is defined.  Similarly for	PCC_BIT_FIELD_MATTERS. 

Wed Jan 16 18:56:30 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* cse.c (fold_rtx): When folding dispatch table, stay inside bounds.

Wed Jan 16 08:11:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload.c (find_reloads_toplev): Fix typo in recent change.

	* reload1.c (eliminate_regs): If we have a non-paradoxical
	(subreg (pseudo)) and the pseudo has an equivalent memory
	location, replace the SUBREG because find_reloads may do it.

Tue Jan 15 01:41:28 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (scan_loop): Condition for movability was wrong.
	A reg that isn't necessarily set may be unsafe
	even if used only inside the loop.
	However, a reg used only in the same basic block after the set is safe.
	So is a reg that isn't a user-level variable.

	* loop.c (loop_optimize): Reverse order of scanning loops.

	* loop.c (scan_loop): After skipping the insns of a libcall sequence,
	ignore notes when searching back to find the last insn of the seq.

	* cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation
	of prefixe in default include dirs.

	* cccp.c (main): Do path_includes after explicit options.

	* combine.c (try_distrib): Don't push + thru negative count shifts.

Mon Jan 14 09:40:28 1991  Ken Raeburn  (raeburn at watch.com)

	* cplus-lex.c (yylex): Even in `extern "C"', the keywords are the
	same.

	* cplus-lex.c (input_from_saved_text): New function.  Set string
	source for FILE pointer.
	(yylex, do_pending_inlines): Call it.

	* cplus-parse.y (stmts, stmt): Type is now `tree'.  Some actions
	fixed to return it.

	* cplus-lex.c (reinit_parse_for_block): New function, with most of
	the guts of reinit_parse_for_method.  Magic argument IS_TEMPLATE
	chooses a set of error messages.
	(reinit_parse_for_method): Call it.
	cplus-template.c (reinit_parse_for_template): New function, also
	calls reinit_parse_for_block.

Mon Jan 14 07:20:36 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (skip_consec_insns, move_movables, strength_reduce): Don't
	call find_reg_note on a NOTE.

Sun Jan 13 15:45:23 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c: Separate namespace for assertions.  Don't expand macros
	inside assertions in #if.  Allow arbitrary token sequences.
	(rescan): Special handling after `#' if assertions_flag.
	(expand_to_temp_buffer): New arg sets assertions_flag. Callers changed.
	(eval_if_expression): Pass 1 for that arg.
	(skip_paren_group): New function.
	(assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New.
	(assertion_install, assertion_lookup, delete_assertion): New functions.
	(T_ASSERTION): Deleted.
	(tokenlist_list): Renamed from arglist_list.
	(read_token_list): Renamed from read_keyword_list.  Much changed.
	Copy the strings into the heap.
	(free_token_list): Renamed from free_keyword_list.  Free the strings.
	(do_assert, do_unassert): Considerably changed.
	(check_assertion): Somewhat changed.
	(check_macro_name): Extra arg contributes to error message.
	* cexp.y (yylex): Parse everything as a name if keyword_parsing.
	(rule for assertions): Set, then clear, keyword_parsing.
	(keywords): Allow empty sequence.  Allow nested parens.

Sat Jan 12 12:18:00 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_unary_op): Make better code for simple casts.

	* reload.c (find_reloads): Computing reload_when_needed, don't neglect
	operands that don't have output reloads.

	* cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST.

Sat Jan 12 06:30:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (steal_delay_list_from_*): Add missing argument to calls to
	insn_sets_resource_p.
	(fill_eager_delay_slots, relax_delay_slots): Add missing argument
	to calls to mostly_true_jump.
	(relax_delay_slots): Correctly handle case where we can't invert jump.

	* reload.c (find_reloads_toplev): If we have a SUBREG of a
	pseudo that resides in memory and the address is not offsettable,
	substitute for the pseudo now so we can generate a reload for the
	address.

Fri Jan 11 14:39:09 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p.

Thu Jan 10 12:26:49 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target.
	(WORD_SWITCH_TAKES_ARG): Define to recognize -target.
	(LIB_SPEC): Define; handle -a.
	* tm-sun2os4.h: New file.
	* tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky.
	(TARGET_SKY): New macro.

	* tm-next.h (LIB_SPEC): Use -lsys_s, not -lc.

	* c-parse.y (yylex): Fix typo.

	* genoutput.c (output_prologue): Make insn-output.c use insn-codes.h.
	* Makefile.in (insn-output.o): Depend on insn-codes.h.

	* Makefile.in (install-headers): Save $(libsubdir) before cd.

	* Makefile.in (gnulib): Depend on config.status.

	* gnulib2.c (__umulsidi3): Use #else around inline function.
	Use __-style names for all machines.

Wed Jan	 9 17:06:18 1991  Michael Tiemann  (tiemann at cygnus.com)

	* out-sparc.c (various places): Change \; to \n\t in printf
	strings.

	* sparc.md: Change PIC initialization pattern to recognize pattern
	that doesn't involve a clobber.
	* out-sparc.c: Rest of change is here, where PIC initialization is
	emitted.

	* cse.c (simplify_unary_operation, simplify_binary_operation):
	Correctly adjust VAL for bits outside MODE.

Wed Jan	 9 15:45:26 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (libcall_dead_p): Handle a CALL in a PARALLEL.

Tue Jan	 8 13:35:50 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to
	convert_to_mode and expand_unop.

Mon Jan	 7 11:56:31 1991  Michael Tiemann  (tiemann at cygnus.com)

	* gplus.gperf: New keywords for templates and other extensions.

	* cplus-lex.c: Incorprate new gperf code.

	* cplus-class.c (resolve_scope_to_name): New function.
	(build_scoped_method_call): Call `resolve_scope_to_name' instead of
	handling by itself.
	* cplus-decl.c (pushdecl_class_level): Give forward declaration.
	(lookup_nested_type): New function.
	(pushtag,lookup_tag,xref_tag): Handle nested classes.
	(finish_function): Add comment about obscure argument passing
	convention for static method calls (at the call site).	Also, don't
	call operator delete with NULL pointer.	 Call it with
	`current_class_decl' instead.
	(globalize_nested_type): New function.	Used when we learn that a
	type which initially appeared to be nested should be defined in the
	global scope instead.
	(grokdeclarator): Call `globalize_nested_type' when grokking an
	as-yet undefined class type.
	* cplus-dem.c: Updated to handle qualified (i.e. nested) types.
	This means handling the new letter `Q' in mangled names.
	* cplus-init.c (build_member_call): Handle nested classes using
	`resolve_scope_to_name' instead of handling itself.
	* cplus-lex.c (typename_scope_in_progress): New static variable to
	allow the lexer to figure out what are nested class typenames,
	scoped member references, etc., without getting the parser too
	involved.
	(yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens.
	Also, recognize '<' and '>' separately from ARITHCOMPARE so we can
	implement templates.
	No longer recognizes (X::*) or (X::&) as single tokens.
	* cplus-method.c (build_overload_nested_name): New function to build
	internal names for nested typenames.
	* cplus-parse.y: Handle parameterized type syntax (more or less).
	(dummy_decl): Gone!
	Nested types are now handled.
	* cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT
	slot of TYPE_DECLs.  DECL_CONTEXT of typename is now the enclosing
	type for nested types.
	(DECL_NESTED_TYPENAME): An identifier pointer that makes the name of
	the type unique for the compilation.
	(IDENTIFIER_*): When initializing, call `perm_calloc', not
	permalloc, since non-zero values actually mean something,
	and we don't guarantee to initialize everything in one go.
	* tree.c (perm_calloc): New function.
	* cplus-typeck.c (default_conversion): Don't defaultly convert a
	naked METHOD_REF such that it becomes a virtual function table
	index.	Only let this happen if user requests it with `&'.

	* Makefile.in: Handle new source file cplus-template.c.

Mon Jan	 7 15:03:53 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (process_init_constructor): Error if values
	provided for an array of empty elements.

	* out-i386.c (fp_top_dead_p1): Follow jump only if optimizing.
	(fp_call_internal): Discard result if unused.  Use fp_top_dead_p1.

	* cse.c (cse_insn): In special case for (set REG0 REG1),
	change any REG_EQUIV notes to REG_EQUAL.

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

	* tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section.

	* genrecog.c (write_tree_1): Typo in printf string.

	* flow.c (libcall_dead_p): New arguments NOTE and INSN.
	Now test that the hard return reg in the call is dead.
	Callers changed.

Mon Jan	 7 12:27:07 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (cancel_changes): Cancel changes in opposite order we made
	them.

	* integrate.c (subst_constants): Only commute operands if op0 is const.

	* rtl.def (INLINE_HEADER): Add new integer field.
	* rtl.h (POPS_ARGS): New macro for place to save
	current_function_pops_args.
	(FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit.
	* emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args".
	* integrate.c (initialize_for_inline, output_inline_function):
	Correctly save and restore current_function_pops_args.

Sun Jan	 6 14:10:44 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro.
	* reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros.
	* recog.c (asm_noperands, decode_asm_operands): Likewise.

	* rtl.def (IF_THEN_ELSE): Set class to '3'.

	* cse.c (simplify_{unary,binary,ternary}_operation): New functions,
	from fold_rtx.
	(fold_rtx): Call these function to do the bulk of the work.
	Use GET_RTX_CLASS to find commutative and comparison operations.
	Swap folded_arg[01] when commuting operands.
	* rtl.h: Define new functions.
	* integrate.c (try_constants): Replace constant folding code with
	calls to new functions above.
	In commutative operations, put constants last.
	
	* genemit.c (struct clobber_pat): New data structure.
	(gen_insn): If pattern ends with a group of CLOBBERs of hard
	registers, store this information in a struct clobber_pat.
	(output_add_clobbers): New function.
	(main): Call it to write code to add CLOBBERs.
	* genrecog.c (struct decision): Add new field num_clobbers_to_add.
	(make_insn_sequence): If pattern ends with a group of CLOBBERs,
	set up to recognize it without the CLOBBERs but to indicate the
	number of CLOBBERs omitted.
	(add_to_sequence): Initialize num_clobbers_to_add.
	Remove unnecessary conditionalization on STORE_FLAG_VALUE.
	(break_out_subroutines, write_subroutine, write_tree): Remove
	RETURN_PREFIX parameter; TYPE is sufficient.
	(write_subroutine): Add extra parameter for recog_* functions.
	(write_tree_1): Pass TYPE instead of string for return.
	Write out code to return number of CLOBBERs needed.
	(write_tree): Add new parameter to recog_*.
	(main): Add new parameter to recog.
	Don't pass return string to break_out_subroutines and write_tree.
	* recog.c (recog_memoized): Pass extra (0) parameter to recog.
	* combine.c (recog_for_combine): New function.
	(try_combine, simplify_and_cc0, try_distrib): Use it instead of recog.
	(reg_dead_at_p, reg_dead_at_p_1): New functions.

	* flow.c (mark_set_1): Count in reg_n_sets when a part of a register
	is modified.
	Update SIGNIFICANT correctly when subreg_p and multiple hard regs.
	Compute reg_n_sets for hard registers.

Sun Jan	 6 13:41:49 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once.

	* Changes by wilson@cygnus.com.
	* calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead
	of assuming that it will always be greater than zero.
	* function.c (assign_parms): Same as above.  Also, correct
	calculation of STACK_BYTES.

	* reload1.c (reload_reg_free_p): Old input reload blocks input_addr.

Sat Jan	 5 18:32:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (mostlyclean): New name for old `clean'.
	(clean): Deletes gnulib also.
	(cleanconfig): Need not delete gnulib here.

	* reload.c (push_reload): Don't use dying reg unless operand fits.

	* c-parse.y (yylex): Hex and octal constants now traditionally signed.

Sat Jan	 5 18:03:50 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* regclass.c (regclass): reg_n_sets is one per set.  It does not
	take into account loop_depth.  So don't adjust by loop_depth here.

Fri Jan	 4 13:18:07 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (put_var_into_stack): Don't mung virtual reg.
	(fix_lexical_addr): Accept the virtual arg pointer.
	* function.h (struct var_refs_queue): New structure.
	(struct function): Use that for the pending var refs queue.

	* print-tree.c (print_node): Nicer format for rtl of decls.

	* c-decl.c (push_c_function_context, pop_c_function_context):
	No need to deal with current_function_decl.

	* c-parse.y (nested_function): Delete spurious nonterminal.

Fri Jan	 4 12:13:14 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (modify_vtable_entries): In case we are modifying
	the main vtable, start with the vtable that comes from the immediate
	baseclass, not the most base class.  This is needed because later
	fixups (for non-first and virtual baseclasses) do not fix up this
	case.

Fri Jan	 4 06:55:00 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_binop): Fix typo in testing for SImode operation.
	Generalize to apply in more cases by calling emit_store_flag rather
	than doing the gen_sltu explicitly.

	* expmed.c (store_bit_field, extract_bit_field): When insv/extv
	don't allow MEM and we need to load the field into a register, don't
	use the mode of OP0 if it is wider than the mode to be used for
	insv/extv operating on a register.

	* expmed.c (emit_stor_flag): Try to convert some comparisons with
	1 and -1 to comparisons with zero.
	Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it
	for being less than zero.

	* cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0;
	instead, test the relevant sign bit.
	Use GET_RTX_CLASS instead of comparison_code_p.
	* loop.c (get_condition): Likewise.

	* recog.c (validate_change): Eliminate duplicate code by always
	saving the change.  If in_group == 0, call apply_change_group.
	(apply_change_group): If recog_memoized fails, see if we have a
	CLOBBER at the end.  Use validate_change to replace the pattern
	with one without the CLOBBER if so; later we will verify that change.

	* tree.c (stabilize_reference_1): Now static; also, define as forward
	reference at start of file.

	* rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class"
	of the rtx operation.
	* rtl.h: DEF_RTL_EXPR has one additional arg.
	(rtx_class, GET_RTX_CLASS): New var and macro.
	* rtl.c: DEF_RTL_EXPR has one additional arg.
	(rtx_class): Initialize table.

	* reload.c (push_reload): If an input operand contains a dead
	register used nowhere else in the insn, try to use it as a reload reg.
	* reload1.c (reload_as_needed): If cancelling optional reload,
	clear reload_reg_rtx.
	(choose_reload_regs): If we can find reload value lying around,
	use that register unless choice made by find_reloads would also save
	an insn (the new choice added above won't).

	* genoutput.c: Update comments on things written.  Change order to
	agree with the order written.
	(output_epilogue): Remove extraneous tests.

Thu Jan	 3 13:32:54 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* rtl.c (read_rtx): Cast NULL vector.

	* By Jim Wilson.
	* tree.c (stabilize_reference): Modified to call stabilize_reference_1
	instead of save_expr.
	(stabilize_reference_1): New function.	For arithmetic operator trees,
	recurse on the subtrees.  Otherwise, put a SAVE_EXPR around the
	tree if it has side-effects.  

Thu Jan	 3 12:37:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (choose_reload_regs): Only set reload_when_needed to
	RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER.

Wed Jan	 2 18:28:23 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx.

Wed Jan	 2 07:53:04 1991  Michael Tiemann  (tiemann at cygnus.com)

	* sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3
	elements because `output_fp_move_double' can write to operands[2].

Wed Jan	 2 17:16:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (emit_call_1): If we have call_pop, use it if we have
	no stack arguments.

	* out-vax.c (relational_op): Deleted, redundant.
	* vax.md (branch): Use comparison_operator (in recog.c) instead of
	relational_op.
	* tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation.

	* reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear
	reg_has_output_reload and reg_is_output_reload for each insn, just
	ones that need reload.	Instead, interpret each entry as zero if
	n_reloads == 0.

Wed Jan	 2 15:52:13 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop): Fix typos.

	* toplev.c (rest_of_compilation): Clear cse_not_expected after loop.
	* rtl.h (cse_not_expected): Declare here.
	* expr.h: Not here.

Tue Jan	 1 21:55:11 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (constm1_rtx): New standard constant.
	(gen_rtx): Use it when appropriate.
	(init_emit_once): Initialize it.

	* out-vax.c (split_quadword_operands): New function.
	(relational_op): Likewise.
	* vax.md (extendsidi2, adddi3, subdi3): New patterns.
	(movdi): Use clrq when appropriate.
	(movaq recognizer): New pattern.

	* recog.h (OUT_FCN): New macro.
	* genoutput.c: Include recog.h in output file.	No
	longer define "const", since that happens in recog.h.

	* tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition.
	* out-vax.c (rev_cond_name): Return its name.
	* vax.md (unnamed patterns): Combine several reversed branch patterns
	into one, using match_operator with relational_op and "%C".

	* optabs.c (expand_binop): Handle multi-word addition and subtraction.

	* Makefile.in (install-gnulib): Use RANLIB_TEST.  Use libg_dir.
	(libg_dir): New customization variable.

	* assert.h (__assert): Use standard GNU format for error messages.

Tue Jan	 1 21:25:00 1991  Richard Kenner  (kenner at vlsi1)

	* reload1.c (eliminate_regs, case PLUS): Always move constant to the
	outside of a PLUS expression.

Tue Jan	 1 11:45:22 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* ecoff-cmp: Specify `c' in option to tail.

	* stor-layout.c (layout_record, layout_union, layout_type):
	Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute
	alignment and size of records, unions and arrays.
	* ROUND_TYPE_ALIGN: New.  Args are type, spec'd align, other min align.
	* ROUND_TYPE_SIZE: New.	 Args are type, size of contents, align.

	* reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]:
	Scan output and output-address reloads together.
	Check for matching hard reg.

	* config.gcc: Set proper shell vars in big dispatch.  Not `machine'.
	(i386-isc): New alternative.

Tue Jan	 1 08:29:49 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (update_block): Turn bb_tick update back on; it is needed,
	after all.

Mon Dec 31 18:12:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression
	number for attribute value.

	* cse.c (cse_insn): Use single_set when looking for an insn that sets
	cc0 followed by one that no longer does.

	* recog.c (find_single_use): If the next insn after one that sets
	cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE.

	* emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return
	something sensible if a SEQUENCE of length zero was passed.
	We no longer make a SEQUENCE with XVEC == 0, so don't test for it.

	* reload1.c (emit_reload_insns): Handle gen_move_insn returning
	no insns (occurs on RT for dummy registers).
	
	* rtl.h (reg_cc0_rtx, find_cc): No longer needed.
	* emit-rtl.c: Likewise.
	* conditions.h: Entire file is #ifdef HAVE_cc0.
	* final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0.
	(cc_status): No longer exists #ifndef HAVE_cc0.
	(final_scan_insn): Do CC processing only #ifdef HAVE_cc0.
	(alter_cond): Only exists #ifdef HAVE_cc0.
	* genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx.
	* genoutput.c (main): Include insn-config.h before conditions.h.
	* reorg.c: Likewise.
	* jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM;
	we'll have to do this optimization some other way later.
	* tm-a29k.h (NOTICE_UPDATE_CC): Deleted.

Mon Dec 31 14:44:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.h (enum_reload_when_needed):
	New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT.
	* reload1.c (choose_reload_regs): Use those when appropriate.
	(mark_reload_reg_in_use): Record this usage specially.
	(reload_reg_free_p, reload_reg_free_before_p): Handle this usage.
	(reload_reg_reaches_end_p): Likewise.
	(emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER.

	* i386.md (push for SFmode): Operand of fst was missing.

Mon Dec 31 08:50:17 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* stor-layout.c (layout_type): For ARRAY_TYPE case, don't try
	and compute a size if there is no TYPE_MAX_VALUE for the index.
	* tree.c, tree.h (build_index_2_type): New function, like
	build_index_type except it accepts the low value as an arg instead
	of assuming 0.

Mon Dec 31 08:09:10 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-typeck.c (c_expand_return): Handle case when we try
	to return a void value (such as a void function call) in a
	function returning void, and there are cleanups to run.

Sun Dec 30 21:08:32 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can
	be called from gcc.c.

	* tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be 
	holding a DImode value and so might be very expensive (we won't
	worry about TImode).

	* rs6000.md (subtract patterns): Fix incorrect operand number in %I.
	(movti): Disallow indexed memory operands.

	* out-rs6000.c (print_operand, case 'm'): Fix typo.
	(includes_rshift_p): Correctly compute mask.

	* out-a29k.c (output_operand): Add missing parentheses.
	(print_operand): Replace if/then/else structure with switch statement.

	* a29k.md (beq, bne): Try to use NE test whenever possible; it
	will produce better code if we have bit-tests.

Sun Dec 30 12:02:03 1990  Michael Tiemann  (tiemann at cygnus.com)

	* tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it
	takes when 'R' is passed in as CODE.  Also, handle 'B' letter.

	* sparc.md: (pattern for converting DFmode to SImode): Second
	argument to `output_asm_insn' should be `operands', not zero.
	(tablejump): The jump insn is "jmp", not "jump".
	(gen_fixtruncdfsi2): operands[2] should get the pseudo, not
	operands[3] (which is nonexistent).
	(call): Fix typo which had %o7 being emitted as %o.
	(various patterns): Fixed places where match_operand had the wrong
	operand number.

Sat Dec 29 17:27:00 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* sparc.md: cc_status no longer handles condition code updates.
	Instead, condition codes are explicitly set and used via
	hard register 0.  Special attributes specific to condition codes
	(such as whether conditional branches should test the integer or
	floating-point condition codes, or that the condition codes cannot
	be tested for a condition which would test the overflow bit) are
	handled by encoding the attribute in the mode for the condition
	code register.
	(type attributes): type "unary" insns have one input operand (1)
	and one output operand (0)
	type "binary" insns have two input operands (1,2) and one output (0)
	type "compare" insns have one or two input operands (0,1) and no output
	type "move" and type "arith" have been deleted.
	(prescan attribute): Deleted.  Machine description now puts
	floating-point zero in registers when needed.
	(use_cc attribute): Deleted.
	(fpcc define_delay): No longer depend on "use_cc" attribute.
	Also, fpcc delay characteristics hold for "fpcc" type insns.
	(cc attribute): Deleted.
	(cmpxx patterns): Now written as `define_expand's so we can stow
	away operands.	When the pattern that will use the results of the
	conditional test is emitted, it can use these operands to figure
	out the right way to emit the compare.
	(bcc patterns): Rewritten to emit comparison (based on stowed-away
	info) before emitting branch.
	(scc patterns): Handle all the cases with branch-free code.
	Added new pattern to recognize (x + (i == 0)).
	(movsi pattern recognizer): Split into two patterns so that e.g.
	"(set:SI (mem:SI ...) (const_int 5))" is never considered valid.
	Instead this has to be a two-insn sequence.
	(mov{hq}i pattern recognizers): Ditto.
	(movstrsi): Force operands[2] out of memory if it was in memory.
	({zero,sign}_extendXY): Now written as `define_expand's instead of
	`define_insn's for more accurate machine modeling.
	Added new pattern to optimize bit-field compares.
	(floatsisf2 patterns): Delete redundant setting of "in_call_delay"
	attribute.
	(fix_trunc{sf,df}si2 pattern): Use clobberable register in which
	the conversion can take place.	Used to use %f30,%f31.
	({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the
	pattern.
	(negdi2 pattern): Ditto.
	Added new patterns to handle merging of addition/subtraction with
	condition code testing (with (reg:CC_NOOV 0)).
	({and,ior,xor}cbsi3 pattern): Obsolete.	 Deleted.
	Added patterns to represent setting of condition codes in addition
	to performing logical operations.
	({neg,abs}df2 pattern): Use `R' print letter to overcome the need
	to use a C action instead of a simple template.
	(ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode
	operands.
	(jump pattern): Use `*' print code to obviate the need for a C
	action when a template can do.
	(tablejump pattern): Ditto, with `^' code as well.
	Deleted `define_split's that were used to handle mem-mem moves in
	the case of PIC generation.  Since all move insns are emitted and
	maintained as SPARC-valid insns, these should no longer be needed.
	(various patterns): (HI ...) is spelled (HI:SI ...).  Also, use
	`gen_lowpart' instead of building subregs directly.
	New `define_split's were added to split scc insns into simpler
	components which have single-insn templates.
	Fixed a return peephole when returning a SFmode value (it was
	missing the "ret"!).
	Lots of complicated peepholes that brought cc testing and
	arithmetic operations together were deleted.  This is because the
	combiner should now handle all these cases.

	* out-sparc.c (sparc_compare_op{0,1}): New global variables.
	Used to hold the operand(s) to compare insns in lieu of emitting a
	compare.
	(reg_or_cc0_operand): Deleted.
	(normal_comp_operator): New function.
	(cc_arithop): Now returns 0 for PLUS and MINUS.
	(cc_arithopn): Now returns 0 for XOR.
	(gen_compare_reg): New function.
	(sparc_address_cost): Simplified because it turns out it doesn't
	matter what is returned for illegitimate addresses.
	(hard_regno_mode_ok): Updated to use these new #defines.
	(C_MODES): New #define, for condition code modes.
	(S_MODES): Ditto, for single-word (and smaller) quantities.
	(D_MODES): Ditto, for double-word (and smaller) quantities.
	(T_MODES): Ditto, for tetra-word (and smaller) quantities.
	(SF_MODES): Ditto, for SFmode quantities.
	(DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc.
	(TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc.
	(output_floatsi{df,sf}2): Greatly simplified.
	(output_pic_sequence,output_pic_sequence_2,fp_zero_hook,
	output_tail_call): Turned off.

	* tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC.
	(WORDS_BIG_ENDIAN): Define as 1, not 0.
	(FIXED_REGISTERS): %f30 and %f31 are now allocatable.
	(REG_CC0_RTX, CC0_REGNUM): Deleted.
	(EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode.  The former
	is for when the overflow bit it not to be tested; the latter is
	for when the condition is sitting in the floating point unit.
	(SELECT_CC_MODE): New macro.
	(FINAL_PRESCAN_INSN): Deleted.
	(CC_* macros): Deleted.
	(PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for
	whether to print a noop or not), '*' (for whether to print a ",a"
	or not), and '^' (for whether to emit code for PIC branch or not).
	(PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to
	fputs where that is convenient.

	* expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if.

	* reload.c (struct replacement): Add new field subreg_loc.
	(push_reload): If reloading SUBREG_REG of a paradoxical SUBREG,
	store the location of the SUBREG in subreg_loc in REPLACEMENTS.
	(push_replacement): Initialize subreg_loc.
	(subst_reloads): Don't produce nested SUBREGs; use subreg_loc.

	* regclass.c (regclass): Handle (set X (op CONST Y)) properly when
	the modes of operands 0 and 1 are different.

Sat Dec 29 16:37:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (macroexpand): Test traditional when computing expansion size.

	* toplev.c (compile_file):
	If profiling, leave some space after `gcc_compiled.'.
	* tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted.

	* reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here.
	(choose_reload_regs): Not here--except for reg_has_output_reload.

	* c-parse.y (nested_function, notype_nested_function):
	Use compstmt for body, not compstmt_or_error.

	* Makefile.in (install-headers): Use basename on 
	* stupid.c (stupid_mark_refs): Really do mark clobbered hardreg
	live before the insn.

Fri Dec 28 05:44:10 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (subreg_lowpart_p): Use correct modes in
	WORDS_BIG_ENDIAN case.

	* reload.c (combine_reloads): Don't try to reference
	insn_operand_constraint for an ASM insn.
	Fix typo in testing for modified operand.

Thu Dec 27 19:02:54 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL.

	* cse.c (fold_rtx): Save mode of original first operand in case this
	is becoming (sign_extend (const_int)).

Thu Dec 27 16:15:56 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md, out-m88k.c (CCmode): Use it.
	(emit_bcnd): Avoid loosing when bcnd is changed into sxx.
	(hi16/lo16): Don't use these to form 16-bit immediate values.
	Introduce and use %X/%x.
	(length attribute): Make better use of defaults.

	* tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h.
	* xm-*88*.h: Clean these up.  Most differences go away by relying
	on the 88open standards.

Thu Dec 27 12:48:26 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expmed.c (store_bit_field, extract_bit_field):
	Change #ifdef to #if, testing BYTES_BIG_ENDIAN.

Thu Dec 27 07:36:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for
	label at end of function.

Wed Dec 26 22:35:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (sequence_element_free_list, sequence_result): New vars.
	(restore_emit_status, init_emit): Initialize them.
	(emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in
	sequence_result.
	Make these three routines more alike in structure.
	(start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs
	in sequence_element_free_list rather than making new ones.
	(start_sequence): No longer return unused rtx; only one caller
	needed to be changed (in function.c, see below).
	(end_sequence): No longer has argument.
	(gen_sequence): Try obtaining a pre-built SEQUENCE from
	sequence_result; no longer special-case length 0 vectors.
	* function.c (fixup_memory_subreg): start_sequence no longer
	returns an rtx and end_sequence no longer has an argument.
	* rtl.h (start_sequence): Now void.
	(push_to_sequence, end_sequence): Define.

Wed Dec 26 13:19:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib.c: No longer #undef perform_* if not __GNUC__.
	(perform_*): Define each if not already def.

Tue Dec 25 17:31:17 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (get_condition): Rework scan that looks for sets of things
	being compared to allow intervening insns; check to ensure that
	they don't set something that we need.	Return 0 if the best we can
	do is find something whose mode is in class MODE_CC.

	* calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of
	arguments on the stack and returns the number of bytes popped by the
	called function.
	* output.h (current_function_pops_args): Change description.
	* function.c (current_function_pops_args): Likewise.
	(assign_parms): Initialize current_function_pops_args here.
	(init_function_start): Not here.
	* tm-*.h (RETURN_POPS_ARGS): Reflect new meaning.
	(FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args.
	* out-i386.c (function_epilogue): Likewise.

Tue Dec 25 15:52:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib.c (all functions): Support a hook for redefining contents.
	These hooks are called perform_addsi3, and so on.
	They are used only if compiling with GCC.

	* rtlanal.c (single_set): Moved from loop.c.

	* cse.c (fold_rtx): For a MEM, fold address when looking for constant.
	(cse_insn): When fetch a constant label from a dispatch,
	substitute into following tablejump.
	(find_best_addr): Clear do_not_record before hashing.
	* jump.c (mark_jump_label): Don't record table-labels on non-jumps.

	* m68k.md (casesi_2 recognizer): Use register_operand as predicate.

Mon Dec 24 17:54:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC,
	when the index in it is constant.

	* c-decl.c (start_function): Handle new option -Wmissing_prototypes.
	(c_decode_option): Likewise.

Mon Dec 24 07:21:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (reload_completed, reload_in_progress): Now defined here.
	* output.h (reload_completed): No longer defined here.
	* emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c:
	Don't define reload_in_progress or reload_completed.
	* a29k.md, romp.md, rs6000.md: Likewise.

	* machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode,
	not zero.
	(CCmode): New mode.
	* machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES,
	if defined.
	(enum mode_class): New class MODE_CC; delete MODE_FUNCTION.
	* rtl.c (mode_name): Define to be known size; add names for extra
	CC modes, if present.
	(mode_class, mode_size, mode_unit_size, mode_wider_mode): Define
	to be known size.
	(init_rtl): Initialize extra CC modes.

Sat Dec 22 19:33:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i386v.h (MAXPATHLEN): Define if not already defined.
	* tm-i386vgas.h: New file.

	* out-i386.c (print_operand_address): Handle scaled indexing.

Sat Dec 22 11:15:03 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on
	NOTICE_UPDATE_CC doing the job.	 Instead, compliment the swapped
	compare.  Also, make COMPARE SImode.
	(and/cmpsi/sxx/neg): Add patterns to do this in one instruction.
	Change sign_extend/sxx to neg/sxx for other cases.
	(iorsi3/xorsi3): Use alternatives and explicit patterns.
	(casesi): Make the constant the second operand to cmpsi.
	(output_and): Must compliment value to use the clr instruction.
	(output_reg_adjust): Simplify the interface and use TEMP_REGNUM.
	(TARGET_SWITCHES): Eliminate needless no-* options.

Fri Dec 21 05:46:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (find_single_use{,_1}): New functions.
	* rtl.h (find_single_use): Declare it.

Thu Dec 20 21:27:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (init_optabs): Add __ to names of floating compare fcns.

Thu Dec 20 18:21:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from
	tree, not rtx, in case arg was CONST_INT.

Thu Dec 20 17:31:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (init_decl_processing): Don't define `ffs'.

Wed Dec 19 16:59:38 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (main): Handle if SIGPIPE not defined.

	* cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc.

Wed Dec 19 06:50:17 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG
	when we are being passed a paradoxical SUBREG of MEM.

	* cse.c (new_basic_block): Compilations spend about 5% of their time
	in this function so replace loop initializing qty_{first,last}_reg
	with copy from a larger consec_ints.  Only loop over extra entries.
	(cse_main): Allocate consec_ints to be default size of max_qty large.

	* reorg.c (get_branch_condition): Fix typos when reversing condition.
	(condition_dominates_p): Fix typo in comparison.
	(redundant_insn_p): This function was taking about 4% of the
	compilation time.  Rework so it doesn't split, only looks at resource
	usage if it finds a matching insn (since it usually won't), and
	improve code that looks at resources.  Now takes about 0.5% of
	compilation time.
	(fill_simple_delay_slots): Always call mark_target_live_regs with an
	active insn; currently being called with a CODE_LABEL.

Tue Dec 18 14:08:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* out-sparc.c: Fix uninitiated comment.

	* final.c (end_final): Call strip_off_ending to remove the file
	name suffix.
	(final_start_function): Execute SDB_DEBUGGING_INFO code only if
	generating SDB symbol info.

	* Makefile.in (cccp.o): Depend on gcc.

	* tm-sparc.h, xm-sparc.h: Make this machine big-endian.

	* expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4.

	* recog.c (nonmemory_operand): Reject reg whose class is NO_REGS.

	* c-decl.c (finish_struct, grokdeclarator):
	Strip NON_LVALUE_EXPR more than once.

	* combine.c (combine_instructions): Check that a jump insn uses CC0
	before trying to combine it with an insn that sets CC0.

	* cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c,
	symout.c, toplev.c: Use xmalloc instead of malloc.

	* cccp.c (do_include): Check for truncation of precompiled file name.

Mon Dec 17 16:53:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_binary_op_nodefault, build_conditional_expr):
	Fix indentation.
	* reload1.c (choose_reload_regs): Fix indentation.
	(gen_input_reload): Fix typo in comment.

	* reload.c (find_reloads): Call abort when the last operand is
	marked commutative, to make it easier to find this error.

	* rtlanal.c (refers_to_regno_p): Don't crash if X is 0.

Mon Dec 17 15:29:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (combine_regs): No need to see if suggested hard reg
	is suitable; if it isn't, it won't end up being used.  Existing tests
	were too conservative.

	* jump.c (delete_jump): When searching for the SET of the condition
	codes for a jump insn, give up if we hit a SEQUENCE.

Mon Dec 17 02:14:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (c_size_in_bytes): New function.
	(pointer_int_sum, pointer_diff): Use that.
	(pointer_diff): Handle warn_pointer_arith.

Sun Dec 16 22:27:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (start_decl): Ignore with error any init for a parm.
	(finish_decl): Likewise.

Sun Dec 16 01:02:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (rtx_equal_for_thread_p): Treat the special CC register as
	equivalent for the two threads we are looking at.

	* combine.c (try_combine): Fix typo in loop over I1 with PARALLEL
	body.  Also, don't test HARD_REGNO_MODE_OK for hard registers we are
	thinking about combining.  This screws up using registers to
	represent the condition codes, and probably doesn't save anything in
	the general case.

	* expmed.c (expand_and): Comment says that result is always stored
	in target, so the code now does this.

Sat Dec 15 18:09:46 1990  Michael Tiemann  (tiemann at cygnus.com)

	* loop.c (get_condition): Try a little harder to find the setter of
	the register used in a conditional test.  On the SPARC it is vital
	to either find the setter of the register used for the condition
	codes or for this function to return 0.	 Also, have test for
	non-NULL, matching `set' govern both normal and reversed cases of
	comparisons.

	* jump.c (jump_optimize): When moving USE insns from before jumps to
	after BARRIERs, put the label for the redirected jump after the
	BARRIER instead of just before the PREV_INSN of the original target.
	This gets around problems when there are NOTEs between the BARRIER
	and the original target.
  
Sat Dec 15 10:16:29 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sparc.md (cmpdf,cmpsf): No longer a define expand.  Now depends
	on fp zero being loaded into a register.
	(tstsi,tstdf,tstsf): Deleted.
	(seq,sne): Fail if we are not testing operands of integer mode.
	(movsi): Split recognizers into two parts.  The first handles
	[reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] =>
	[reg].
	(adddf,subdf,negdf): Simplify output routines using 'R' as an
	output letter.
	(tail_call): Turn this off.  It is never used, and it depends on
	routines which are about to become broken.
	(various places): Add USE_CC attribute where appropriate.
	(various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0))
	and delete CC_CLOBBER attribute from the pattern.
	* out-sparc.c (move_operand): No longer recognize certain
	immediates as a `move_operand'.
	(move_reg_or_immed_operand): New recognizer for immediates no
	longer recognized by `move_operand'.
	(output_pic_sequence*): Turned off.
	(sparc_address_cost): Simplified, since the value returned is not
	used if the address is not legitimate.
	(emit_move_sequence): Use `gen_lowpart' instead of building
	SUBREGs explicitly.
	(make_f30_contain_zero): Deleted.
	(output_tail_call): Turned off.
	* tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which
	means print the name of REGNO (X)+1.  No longer recognizes the 'G'
	letter.
	(PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to
	fprintf with calls to fputs or fputc.
	(FINAL_PRESCAN_INSN): No longer defined.

Sat Dec 15 14:37:51 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* recog.c (offsettable_address_p): Check validity in narrower modes.

Sat Dec 15 11:21:55 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a
	default meaning if <syms.h> is used.

Fri Dec 14 14:39:10 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (increment and test peephole): Updated so it would apply
	with the new method for doing cmpsi/bxx.
	* m88k.md (function units): Replace decode with alu and update
	accordingly.
	* out-m88k.c (emit_test): Add a mode parameter.
	* tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg
	pointer can be used.

Fri Dec 14 06:48:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (convert_move): Add missing argument to some recursive calls.

	* jump.c (invert_jump): Pass new label to recursive call.

	* expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code.
	(expand_and, emit_store_flag, label_rtx): Add definitions.
	(get_condition, compare_from_rtx): Likewise.
	* rtl.h	 (STORE_FLAG_VALUE): Provide a default value of 1.
	(reg_set_last): Add definition.
	(const_true_rtx): New variable.
	* cse.c: Remove defaulting of STORE_FLAG_VALUE from here.
	(const_true_rtx): Remove static version; now global.
	* emit-rtl.c (const_true_rtx): Define here.
	(gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE.
	(init_emit_once): Initialize const_true_rtx.
	* expmed.c (emit_store_flag): Rewritten.  Is passed the operands
	to compare in addition to the compare operation and emits both the
	comparison and the store-flag insn.
	Handles special-case of testing for A < 0 and A >= 0.
	If result is constant, just return it.
	Accepts an argument saying how to normalize the result and does
	appropriate normalization.
	Give preference to using the sign bit rather than the low-order bit.
	Allow sxx insns to fail.
	If don't have seq or sne insns, can sometimes do with abs.
	* expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only
	do store_flag if it is cheap.
	(do_jump): True comparisons return STORE_FLAG_VALUE, not 1.
	(compare_constants): Correctly handle unsigned comparisons.
	Return STORE_FLAG_VALUE, not 1, for true comparison.
	(compare_from_rtx): New name for compare1.
	Accept size and alignment, for BLKmode.
	No longer statuc.
	(compare, compare_from_rtx): No need to pass forward and reverse codes;
	can trivially derive the reverse code from the forward one.
	All callers changed.
	If one operand is constant, make it the second one.
	(compare): Let compare1 do most of the work.
	(do_store_flag): Rewritten, now lets emit_store_flag do most of
	the work.
	Handles the special-case of comparing a single bit with zero.,
	Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like
	this will be an expensive operation; all callers changed.
	If it looks like it will be possible to do a store-flag operation,
	call emit_store_flag; if it can't do it, emit as assignments and a
	jump.  If it doesn't look possible to do a store-flag operation, return
	zero before expanding anything.
	* final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the
	insn doesn't exist, we won't try to change it.
	* genemit.c (gen_exp): Use const_true_rtx when appropriate.
	* genrecog.c (add_to_sequence): Likewise.
	(try_merge_1): Two nodes aren't identical if they are to test
	different modes or if they have different values of EXACT.
	* integrate.c: Don't supply a default value for STORE_FLAG_VALUE here.
	* jump.c: Now includes expr.h (for emit_store_flag and get_condition).
	(jump_optimize): Split optimization that made store-flag insn
	into three separate optimizations, the first two of which are useful
	even in the absence of store-flag operations.
	(can_reverse_comparison): Set and use of cc0 must be immediately
	adjacent.
	(mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL.
	Consider two labels adjacent after reload if separated by just USE or
	CLOBBER insns.
	* loop.c: Now includes real.h.
	(get_condition_for_loop): New function.	 All callers of get_condition
	in this file now call this function.
	(strength_reduce): no_labels_between_p now skips FROM.
	(get_condition): No longer static.
	Refine cases when we can't reverse a comparison operation.
	* optabs.c (init_optabs): Initialize and define setcc_gen_code
	instead of setcc_gen_fctn.
	* rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_...
	functions do.
	(no_labels_between): Deleted.
	(reg_set_last, reg_set_last_1): New functions.
	* Makefile.in (jump.o): Now include expr.h.
	(loop.o): Now includes real.h.

	* c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet):
	New names.

	* alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode
	to comparison operators (EQ, NE, etc.) to agree with the mode of the
	destination.
	* out-m88k.c (emit_test): Likewise.

Fri Dec 14 00:12:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width.

Thu Dec 13 13:10:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cplus-init.c (expand_vec_init): Add missing arg to
	expand_exit_loop_if_false.

	* config.gcc (tron): Alias for gmicro.

	* c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed.
	(ptr_ftype_ptr_cptr_sizet): Likewise.

	* gcc.c (default_compilers): Handle .C.

	* Makefile.in (enquire.o): Add -I. so can find stddef.h.
	(install-cross): Install cc1obj like the others.

	* Makefile.in (gnulib.target): Renamed from gnulib.
	(gnulib): Renamed from tmpgnulib.  Rename that file in this rule.
	Also delete stamp-gnulib2 here.
	(gnulib.portable, gnulib.convert): Input now is named gnulib.
	(GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use).
	(gnulib2.target): Renamed from gnulib2.
	(gnulib2): New rule, alias for gnulib2.target.

	* local-alloc.c (local_alloc): Cast an enum used as index.
	* optabs.c (emit_indirect_jump): Likewise.
	* reload1.c (choose_reload_regs): Likewise.

Thu Dec 13 12:38:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (store_bit_field): Verify that operand 1 of movstrict
	satisfies its predicate.

Wed Dec 12 17:26:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gvarargs.h: Avoid duplicate inclusion using _VARARGS_H.

Wed Dec 12 14:11:30 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition
	code register.	As a temporary measure, NOTICE_UPDATE_CC is used
	to track swapped cmpsi cases.

	* m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT
	uniformly with define_expand.  Make gen_lshlsi3 generate ASHIFT
	and eliminate the optimization patterns using ASHIFT.  Eliminate
	other optimization patterns that will be handled by combine.

Tue Dec 11 22:13:48 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (convert_move): With slt, handle dest that's invalid.

	* stmt.c, tree.h (stmt_nesting):
	Typedef deleted; use `struct nesting *'.
	* stmt.c (expand_start_cond): If exitable, make an exit label.

Tue Dec 11 21:28:56 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (subst, case SUBREG): Update TO for earlier
	changes so we can always detect (subreg (mem ...)).

Tue Dec 11 10:56:53 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer
	to nesting structure (new type stmt_nesting).
	(expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer
	to nesting structure, substitute loop_stack if 0 (same behavior as
	before when there was no argument), so F90 CYCLE and EXIT statements
	(like C's continue and break stmts) can refer to other than the
	innermost loop.
	(expand_start_cond): Uses new names for if-related labels that
	reflect addition of "elseif" call, and sets endif_label to whatever
	exit_label gets set to (so we don't generate two identical labels
	for languages from which if is exitable via expand_exit_something).
	(expand_start_elseif): New function, used by Fortran.
	(expand_start_else): Moved above _end_cond so these four functions
	appear in the order they get called; uses new names, and fills in
	only endif_label if needed, not exit_label.
	(expand_end_cond): Handles end of any if, not just if-without-else.
	Generates both labels for next else/elseif pending (there was none)
	and the endif itself, if they exist (and there will always be at least
	one).
	(expand_end_else): Gone, call expand_end_cond instead.
	* c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to
	expand_..._loop_... to indicate the innermost loop; call
	expand_end_cond instead of expand_end_else.
	* tree.h: Typedef for stmt_nesting returned by expand_start_loop...
	and change their return types accordingly.

Mon Dec 10 06:59:14 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (check_asm_operands): Delete from here.
	* recog.c (check_asm_operands): Move to here; no longer static.
	(validate_change): Don't assume change is valid is asm_noperands >= 0.
	If recog_memoized returns < 0, accept change if asm_noperands >= 0
	and check_asm_operands returns non-zero.
	(apply_change_group): Likewise.
	(validate_replace_rtx_1): Swap operands on commutative operation
	if first is constant.
	Use plus_constant to simplify a PLUS with CONST_INT as second operand.

	* reload.c (find_equiv_reg): We must have a stable SP if GOAL is
	a MEM that uses SP.

	* combine.c (try_combine): Don't do anything if I2 or I1
	has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers
	and it is too messy to try to get things set up correctly.

Sun Dec	 9 22:07:41 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Don't check for /* */ concat here.
	(macroexpand): Always use raw arg if traditional.

	* c-parse.y (unary): Mark address of label as constant.

Sun Dec	 9 14:45:34 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC
	before recursive calling.
	(finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN
	when laying out TYPE_DECL.
	* cplus-tree.c (assoc_value): Change recursion condition to compare
	ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just
	against type.

Sat Dec	 8 10:40:00 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (attributes): Reorganize and include a block diagram.
	Make better use of defaults.
	* m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add
	the sparc peepholes for changing bsr/br into bsr.n/addu or
	bsr.n/subu.  Install the length attribute for this.  Requires the
	use of `def' to accomodate broken assemblers in the bsr.n/addu
	case.

Fri Dec	 7 06:12:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_end_label): Increment usage count of label we return
	so we know it won't go away.
	(dbr_schedule): Decrement count of end label and delete it if dead.

Wed Dec	 5 17:36:23 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md: Add instruction attributes for scheduling and delay
	slot information.
	* m88k.md (addsi pattern): Adding large constants does arise.
	(udivsi pattern): Wrong predicate.
	* tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using
	attributes.

	* make-m88k, make-m88kdgux: Say how to create m88k-trace.asm.

Wed Dec	 5 13:52:16 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop): Support insn_before == 0.

	* function.c (optimize_bit_field): Fix wrong arg to validate_change.

	* Makefile (includes): Export LIB.

Wed Dec	 5 13:31:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (try_combine): Don't discard CLOBBERs from an insn
	with ASM_OPERANDS.

Tue Dec	 4 16:12:21 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce
	POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate
	functions *_p instead of *_operand; cleanup addsi3 insns; simplify
	udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH
	SImode instead of VOIDmode; add a predicate to the increment and
	test peephole insn; deal with setting SFmode to zero; delete bogus
	pattern for divide-by-power-of-2.
	* make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm.
	Move movstr-m88k.sh to config/m88k-movstr.sh.

Mon Dec	 3 19:08:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (gnulib2.ready): New target.
	(stamp-gnulib2): Depend on that.
	Avoids recompiling gnulib2 each time cc1 changes.

Mon Dec	 3 16:17:56 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in
	xm-m88kdgux.h.
	* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal
	synthesis register.  Reworked the addressing method to be like the
	sparc (uses HIGH and LO_SUM).  Numerous cleanups.  These changes
	are based on work done by Steve Chamberlain (steve@cygnus).
	* tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER):
	Implemented.

Mon Dec	 3 15:19:04 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (special_symbol): Use time_t as type of t.

	* m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files.

	* gcc.c: Don't define R_OK, etc. if already defined.

	* out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler):
	Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode.

Sun Dec	 2 22:13:53 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* config.gcc (tower): New alternative.
	(mips-news): Adapt for version 2.

	* tm-tower.h, tm-tower-as.h, xm-tower.h: New files.

Sun Dec	 2 17:47:28 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing
	for changed vector.

	* out-rs6000.c (output_epilogue): Fix typo restoring general registers.
	(print_operand): Add new option %H.
	* rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though
	they don't clobber MQ to allow combining to work well.	This will be
	removed once combine knows how to add clobbers when required.
	Change patterns to reflect new canonicalization rules.
	Where we have (and (xshift)), add patterns for (zero_extend (xshift)).
	(andsi3, xorsi3): Fix bug in case where two insns are needed.
	(moveti): Don't call change_address when in reload.
	(sign_extend): Add patterns for sign extend preceeded or followed by
	one of the shifts it will do.  Use %H to output the merged shift.

	* out-romp.c (print_operand): Allow exact_log2 result to be zero.
	* romp.md: Likewise.
	* tm-romp.h (CONST_OK_FOR_LETTER): Likewise.

	* a29k.md (type attribute): Add types for floating-point insns.
	(in_delay_slot attribute): Update to allow for new types.
	(function_unit definitions): Add definitions for floating-point units.
	(andcb*3): Delete obsolete names.
	(convert insn): Use register_operand instead of gen_reg_operand for
	floating-point operand.
	(cpeq, feq, deq, etc): New patterns.
	(floating-point arithmetic): Add support for 29050 insns and
	accumulators; indicate function unit usage.
	(ior/and patterns): Put NOT as second operand.
	(orn insn): New, for 29050.
	(load patterns): If using match_operator, make it the highest operand
	number.
	(loadm insns): Add workaround for rev A1 bug on 29050.
	(negsf2, negdf2): Don't use XOR to negate on 29050.
	(movsf, movdf): Add support for accumulators on 29050.
	(movsi, movhi, movqi): No need to support special->special copies.
	Support consthz insn on 29050.
	(compare, scc, and branch insns): Rework to not use cc0.  Use a pseudo
	register instead.  Compare doesn't generate any code, but merely
	saves the operands.  scc and branch then emit the appropriate compare
	and jump (if branch) insns.
	(tstsi): Delete pattern; not used when no cc0.
	(peepholes): Remove peepholes to convert jumps to scc insns; now
	done in jump.c.
	* out-a29k.c (a29k_compare_*): New variables.
	(long_const_operand): Anything with low-order 16 bits zero is not a
	long constant on the 29050.
	(accum_reg_operand): New function.
	(gen_reg_operand): Returns false for accumulator registers.
	(output_operand): Allow accumulators.
	(ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted.
	(fp_comparison_operator, branch_operator): New functions.
	(output_compare): Deleted.
	(print_operand): Change meaning of %b and %B.
	Add new code %J.
	* tm-a29k.h (TARGET_VERSION): Say if compiling for 29050.
	(TARGET_FLAGS): Add -29000 to turn off support for 29050; this is
	still the default.
	(various register macros): Add support for the floating-point
	accumulators on the 29050.
	(CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using
	conthz on the 29050; keep old definition for 29000.
	(STORE_FLAG_VALUE): Now 0x80000000.
	(ASM_FILE_START): Write ".cputype 29050" when compiling for 29050.

	* combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the
	first operand of commutative operations.  Note that NOT used to be
	put as the second operand but it has always been assumed that 
	MULT would be the first operand in address expressions, so we have
	to change the previous canonicalization.  This is possible now that we
	have eliminated the andcbm3 operations.
	* i860.md (andnot): Remove obsolete andcbsi3 name and place NOT
	as first operand.
	* m68k.md (fpm*): Delete patterns with MULT as second operand and
	use "@" construct when possible.
	* m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names.
	Delete patterns with NOT as second operand.
	(xor.c): Rewrite in new canonical form.
	* mips.md (nor): Rewrite in new canonical form.
	* pyr.md (bicw): Remove pattern with NOT as first operand, removing
	obsolete name andcbsi3 in the process.
	* sparc.md: Remove patterns with NOT as first operand.
	Remove obsolete names andcbsi3, iorcb3, and xorcbsi3.
	Rewrite xnor into new canonicalized form.
	Add mode to HIGH and LO_SUM operations.
	* vax.md (bic*): Remove obsolete andcbm3 names.
	Put NOT as first operand when both generating and recognizing RTL.
	(jlbc): Rewrite with NOT as first operand.

Sun Dec	 2 17:08:16 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP.

	* stddef.h (ptrdiff_t): Prevent definition, as with size_t.

Sat Dec	 1 16:31:30 1990  Ron Guilmette	 (rfg at ncd.com)

	* dwarfout.c (lookup_filename, dwarfout_finalize): changed from
	maintaining a linked list of filename entries to maintaining an
	(expandable) array of filename entries instead.	 Also, changed
	code so that *all* filename strings are output (to the .files
	section of the asm file) in one swell foop just as the asm file is
	being finalized rather than writing out new filenames one-by-one
	as they arise (as previously). This circumvents a problem caused
	by rfg's naive assumption that assemblers kept a stack of prior
	section names (of depth > 1) which could be successively popped
	via multiple `previous' directives.  For some assemblers, the
	depth of the stack is only 1 and they can get confused if you do
	two (or more) `previous' directives in a row.  Anyway, it is no
	longer either necessary or useful to do that, so who cares.

	* dwarfout.c: added code to output newlines to the asm file just
	prior to each and every change of section (for better readability
	of the asm files).

	* dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS
	is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined.

	* dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES
	is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1').

	* dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not
	already defined (in the user's tm.h file) it will automatically be
	defined (by default) to `1'.  Also changed all instances of
	`#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'.
	The user must now intentionally *disable* this feature (by
	defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he
	wishes to have the additional information about files suppressed.

	* dwarfout.c: changed comments relating to optional defines for
	extended GNU DWARF features to include more information and to
	add some additional clarity.

Sat Dec	 1 16:00:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (subst): Call reverse_condition instead of
	reverse_comparison.
	We are allowed to reverse floating-point EQ and NE comparisons.

	* combine.c (subst): Call simplify_and_const_int for all AND
	and ZERO_EXTEND cases and all cases where we make one of them.
	Remove all other code in AND and ZERO_EXTEND cases.
	(simplify_and_const_int): Rewritten to follow a consistent model
	of tracking what AND's need to be done and which bits are not
	significant.  Consistently try a ZERO_EXTEND for all cases where
	the result is an AND with a mode-wide mask.  Move all remaining
	cases from AND any ZERO_EXTEND cases from subst.

Sat Dec	 1 09:13:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h (lang_type): Remove any_assigns_this,
	none_assigns_this from type_flags.
	* cplus-decl2.c (get_temp_name): If the initializer is a
	pointer to zero, cache it in EMPTY_TABLE.
	(finish_builtin_type): New function, to factor common code
	arising from building internal structures.
	* cplus-decl.c (init_decl_processing): Call it.

Fri Nov 30 10:39:04 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead
	of TREE_USED to indicate that we need debugging info for
	TTYPE.
	Note that nobody ever sets EXTENDED_DBX_DEBUG.	For now,
	change to test DBX_DEBUG.  For later, change everything to
	key off of EXTENDED_DBX_DEBUG.	
	Also, set `warn_return_type' to one always, since this warning
	is too valuable to lose.
	* cplus-tree.c (lang_output_debug_info): Don't test TREE_USED.	That
	field is already used by other routines, and we have all we need now
	in CLASSTYPE_ASM_WRITTEN.
	* cplus-dbxout.c (dbxout_type_method_1): Handle const,
	volatile, and const/volatile member functions.

Fri Nov 30 04:51:46 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (reg_last_set_value): New variable.
	(combine_instructions): Allocate and initialize it.
	(record_dead_and_set_regs): Set reg_last_value to source
	of assignment; clear it for a CLOBBER or partial assignment.
	(subst): Use reg_last_set_value instead of interpreting the
	insn in reg_last_set as if it was a single SET.

	* combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT.
	When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P.
	If cannot recognize the argument, just form a SUBREG; usually,
	it won't be recognized, but sometimes will allow further
	simplifications.

	* regclass.c (reg_scan): Save size of uid map; reallocate if
	we have more registers than we allocated.
	Leave some extra room in map.

	* stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn.

	* fold-const.c (decode_field_reference): Add missing arg declaration.

	* expmed.c (store_bit_field): Add missing last argument to
	recursive call.

	* cse.c (cse_insn): Remove extra arg passed to rtx_equal_p.

	* Makefile.in (proto): Make protoize.1 and unprotoize.1.
	(protoize.1, unprotoize.1): New targets.
	(install_man): Install protoize.1 and unprotoize.1./
	* proto-unproto.1: New file.

	* loop.c (scan_loop): Properly set SET_SRC in movables entry for
	MOVE_INSN == 1 and CONSEC > 0 case.
	(force_movables): Don't look at SET_SRC when CONSEC > 0.

	* expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO
	gets initialized after we build a variant type.

Fri Nov 30 00:35:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (ashr of 16 to 24 bits): Use extl, not extw.

Thu Nov 29 21:41:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros.

	* gcc.c (add_prefix): Add new element, don't replace old first elt.

	* dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing.

Thu Nov 29 17:50:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu)

	* stmt.c (expand_end_loop): Stop looking for branch to the loop
	exit when we hit a NOTE_INSN_BLOCK_{BEG,END}.
	* jump.c (duplicate_loop_exit_test): Likewise.
	Also, only copy line-number notes.

	* integrate.c (expand_inline_function): Call expand_expr for the
	arguments before allocating maps that are based on register numbers.

	* loop.c (loop_reg_used_before_p): Accept new argument, SET, to
	indicate which part of INSN is setting the relevant register.
	(scan_loop): Pass new arg to loop_reg_used_before_p.

	* function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can
	be replaced by MEM; use validate_change to check.

	* reload.c (find_reloads_toplev): Add missing arg to recursive call.

	* calls.c (expand_call): Correct two cases of missing mode to gen_rtx.

Thu Nov 29 02:42:35 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c: Bump version number to 1.90.04.

	* toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any
	special PIC code once we start really compiling a function (i.e., we
	are not in an inline function).	 Inline functions cannot
	meaningfully hold PIC code because there is no notion of position
	independence in code that isn't really being written down.

	* Makefile.in: Don't build cplus-cadillac.o by default.	 Build
	cplus-edsel.o instead.	Until Lucid frees their programming
	environment, their Cadillac will always be an Edsel to GNUsers.

	* stmt.c (fixup_gotos): Change loop to run in two passes so that
	cleanups don't experience a race condition.
	(expand_cleanups): Replace Nov 5 word-around with consistency check.
	The same cleanups should never be run twice.

	* cplus-decl.c (lang_{init,finish}): Move these functions...
	cplus-lex.c: ...to here.  Also, make change to lang_init analogous
	to Nov 27 change for C compiler.

	* cplus-decl.c (pushdecl): Don't warn about static/extern conflicts
	if X is a TYPE_DECL.
	(build_enumerator): Certain CONST_INT nodes cannot be coopted to be
	the constant for enumerator.  Mark them as non-shareable and don't
	coopt them.

	* cplus-decl.c (lang_{init,finish}): Declare these to be void
	functions to match new tree.h.

Wed Nov 28 18:48:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when
	not a paradoxical SUBREG.

Wed Nov 28 17:15:43 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx.

Tue Nov 27 21:54:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_external): Never write a .extern for a static
	name.

	* recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM
	by trying a new MEM.

Tue Nov 27 11:54:28 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-lang.c, objc-action.c: Include input.h.
	(lang_init): Call check_newline here.
	* toplev.c (compile_file): Not here.
	Call lang_init after setting input_filename.

	* tree.h: Declare numerous functions that the front end must provide.

	* rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES.

	* toplev.c (warn_return_type, W_options): Handle -Wreturn-type here.
	* c-decl.c: Not here.
	* flags.h: Declare it here, not in c-tree.h.

	* gcc.c (pexecute): Wait and retry if fork fails.

	* expr.c (do_jump): Pass all args to get_inner_reference.
	(expand_assignment): Fix typo in arg to get_inner_reference.

	* tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set.

Mon Nov 26 18:28:51 1990  Michael I Bushnell  (mib at churchy.ai.mit.edu)

	* cccp.c (handle_directive): Do backslash-newlines inside of
	strings.

Mon Nov 26 15:39:29 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (main): Handle -w.
	(warning): Do nothing if -w.
	* gcc.c (compilers): Pass -w to cpp.

	* c-decl.c (grokdeclarator): Don't discard arg types
	for prototype even if traditional.

Sun Nov 25 20:52:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* protoize.c: Undef CHAR_BIT, etc, before including limits.h.

	* reload1.c (old_asm_operands_vec, new_asm_operands_vec): 
	Type should point to a vector.
	(Eliminate_regs): For asm_operands, copy the vector properly.

Sun Nov 25 20:35:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu)

	* jump.c (jump_optimize): Fix typo in stack push combining code.

	* reload1.c (eliminate_regs): Ensure we share operands 3 and 4
	of ASM_OPERANDS operations if they were originally shared.
	Copy all rtx flags when making a new MEM.
	(eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check.

Sun Nov 25 16:37:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect.

	* gcc.c (do_spec_1): Handle %W{...}.
	(default_compilers): Use %W{...} when passing -o option.

Sat Nov 24 16:39:56 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific):
	Add conditionals for __GNU_LIBRARY__.

Thu Nov 22 13:48:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (optimize_bit_field_compare): Pass additional
	arg to get_inner_reference; it gets set if something was volatile.
	(decode_field_reference): New arg PVOLATILEP; passed to
	get_inner_reference.
	(merge_component_references): Add pointer to place to store if
	something is volatile to calls to decode_field_reference; don't
	do anything if it gets set (this may be very conservative).

	* stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of
	loop when looking for qualified conditional exit.

	* reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we
	have trouble access the register in M1, reload the reg, not subreg.
	Fix typo in testing for memory.
	(reload): Force reload of the operand in the above cases.

Wed Nov 21 17:39:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (strength_reduce, combine_givs): Don't penalize
	non-replaceable givs unless they are user variables; temporaries
	are probably dead even though we can't prove it.

	* integrate.c (save_constants): Don't get confused by looking
	inside CONST_DOUBLE_MEM.
	Call recursively on what get_pool_constant returned, in case it
	was itself the address of a pool constant.
	(copy_for_inline, copy_rtx_and_substitute, restore_constants):
	Remake CONST_DOUBLE so it gets chained in correctly and we don't use
	obsolete CONST_DOUBLE_MEM values.  Call recusively on operand we are
	about to pass to force_const_mem; it might have been a case of a
	constant value being an address of another constant.

	* loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1
	and add_val == 0.
	(maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2)
	cases; they have problems.

Wed Nov 21 16:06:14 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* dwarfout.c (location_attribute): Offset for bitfields is special.

	* expr.c (get_inner_reference): New arg pvolatilep.
	(expand_expr, expand_assignment): Use to set MEM_VOLATILE_P.

Wed Nov 21 10:34:25 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* stor-layout.c (layout_decl): Record whether a FIELD_DECL is a
	bit-field and if so its original type.
	* tree.h (DECL_BIT_FIELD_TYPE): New.
	* dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE.
	* dwarfout.c (output_member_die, bit_offset_attribute,
	bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE.
	* sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE.

	* sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New
	interfaces to compute the location of arguments and automatic
	variables.
	* dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise.

	* dbxout.c (dbxout_parms): Describe a parameter passed in
	registers but living on the stack as N_PSYM rather than N_LSYM.
	These are typically arg_pointer based locations.

	* out-m88k.c (m88k_debugger_offset): New function.
	* tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces
	SDB_AUTO_NORMALIZE_OFFSET.
	* tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks.

Tue Nov 20 23:48:57 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* dwarfout.c (dwarfout_init): Set stack depth to 1 at start.
	(output_padded_null_die): New function.
	(dwarfout_finalize): Use that to ensure length divisible by 4.

	* ns32k.md (addsi3): Don't use `addr' for very large displacements.

Tue Nov 20 05:48:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (can_reverse_comparison_p): It is safe to reverse an EQ
	or NE comparison, even if IEEE floating-point.

	* integrate.h (struct inline_remap): const_*_map now maps registers
	in calling function, not called function.
	Add fields to save values recorded from SETs.
	* integrate.c: Now includes insn-config.h and real.h.
	(expand_inline_function): New meaning for const_*_map.
	Don't fill in constant equivalences here; now done in try_constants.
	Show CALL_INSNs potentialy clobber all hard registers since we
	now record equivalences for hard registers.
	(try_constants): No longer need original RTL; all callers changed.
	Call note_stores to kill any known equivalences for registers changed.
	Record equivalences for PC, CC0, and registers set by this insn.
	(subst_constants): No longer need original RTL; all callers changed.
	Reflect new meaning of const_*_map.
	Perform more extensive constant folding, basically a subset of
	fold_rtx in cse.c; specifically, fold the result of comparison
	operations and IF_THEN_ELSE operations.
	Record the constant equivalences of SETs, if any.
	(try_fold_condition, const_equiv, fold_out_const_cc0): Deleted.
	* Makefile.in (integrate.o): Now includes insn-config.h and real.h.

Sat Nov 17 07:48:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (local_alloc): Don't allocate a reg that wants a
	class that has only one register; let global-alloc do it so that it
	can be given a GENERAL_REG if reload needs a spill reg of that class.

	* regclass.c (regclass, reg_class_record): Count savings in loops as
	being greater the same way we adjust reg_n_refs for loops in flow.c.

	* expmed.c (store_bit_field, extract_bit_field): Remove change of
	Oct 16; it causes problems with long long bit fields.

	* rtlanal.c (reg_overlap_mentioned_p): If called with a constant,
	return zero.  If called with a MEM, return 1 iff the second arg
	contains a MEM. 
	* reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT
	is a MEM and then pass it the address of OUT.

	* cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added
	to the hash table.  SRC_EQV is not added to the hash table if it
	is volatile or equal to DEST and similarly for SRC.  DEST is not
	added to the hash table unless either SRC_EQV or SRC is.

Thu Nov 15 23:43:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (convert_for_assignment): Change warning message.

Thu Nov 15 18:44:49 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* stmt.c (expand_end_loop): Generalize code to look for more
	than one branch to the exit and include unconditional branches
	to the exit; move the whole range to the end of the loop.
	* jump.c (duplicate_loop_exit_test): New function.
	(jump_optimize): Call it.
	Don't allocate jump_chain until we have finished deleting dead code.
	Leave some more room in jump_chain.
	(simplejump_p): Reject if not JUMP_INSN.
	(delete_insn): If simplejump_p, remove from jump chain.
	* loop.c (loop_skip_over): Deleted.
	(scan_loop): No longer call it.
	* cse.c (predecide_loop_entry): Deleted.
	(cse_basic_block): No longer call it.

Thu Nov 15 18:00:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* math-68881.h (HUGE_VAL): Add extra braces for Sun.

	* stor-layout.c (layout_type): Don't let array have less
	alignment than its mode calls for.

Thu Nov 15 13:05:30 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based
	on dbxout_parms and dbxout_reg_parms.

Wed Nov 14 08:48:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (emit_...): All of these now return the last insn
	emitted; previously some of them returned void.
	(emit_barrier_before): New function, similar to others.
	* rtl.h: All emit_... functions now return an rtx; reorder so
	declarations are in the same order as definitions in emit-rtl.c.

	* reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing
	test when checking candidate insn for resource conflicts.

Wed Nov 14 07:08:19 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* c-parse.y (pushlevel, compstmt): Place a line note at the first
	token beginning a block and at the close brace ending a block.
	These are the conventional locations for SDB and DWARF debugging
	information.

Tue Nov 13 18:16:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (assign_stack_local): If alignment not specified
	and not BLKmode, use at least word alignment.
	(assign_outer_stack_local): Likewise.

	* sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW.

	* dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE.
	(AT_line, AT_file): New definitions.

	* out-i860.c (output_block_move): Move .Lm%3 down one insn.

	* c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums.

Tue Nov 13 09:28:27 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* gcc.c (default_compilers): Report an error if -C is used without
	-E.  Pass -H to cpp.

	* sdbout.c (plain_type, plain_type1): save and output the
	rightmost array dimensions.

	* syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG.
	* sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it
	to be T_INT if not present in <syms.h>.

	* sdbout.c (sdbout_toplevel_data): Use abort rather than fatal.

Mon Nov 12 08:49:33 1990  Michael Tiemann  (tiemann at cygnus.com)

	* expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if
	MODE is VOIDmode.
	* optabs.c (init_optab): Call `xmalloc' instead of `malloc'.

	* out-sparc.c (hard_regno_mode_ok): Change initialization of array
	to match behavior of Nov 11 change for complex modes.

	* jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try
	to delete references to LABEL.	This is needed for machines like
	SPARC which use multiple insns to get the value of LABEL into a
	register.

Mon Nov 12 16:07:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT.

Sun Nov 11 00:27:34 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long.
	* tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary.
	* tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary.
	* tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle
	complex values in fp registers on machines where one reg holds a DF.

	* sdbout.c (sdbout_one_type): Do nothing for incomplete type.

	* c-decl.c (duplicate_decls): Warning only when redefining built-in fn.

	* c-decl.c (init_decl_processing): Use sizetype, not unsigned long,
	in prototypes for memcpy and memcmp.

	* c-parse.y (component_decl): Don't read the semicolon here.

	* toplev.c (compile_file): Reverse top-level decls before output.

Sat Nov 10 22:27:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}.

Sat Nov 10 20:34:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload.c: Provide a default definition of REGISTER_MOVE_COST.

Sat Nov 10 01:43:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list
	of only immediate basetypes anymore.  Use `get_base_distance' to
	check whether a type is an immediate basetype or not.

	* stmt.c (expand_return): Don't emit a USE if VAL is a
	pseudo-register.

	* integrate.c (function_cannot_inline_p): Call to strcmp for
	"__builtin_va_alist" must use IDENTIFIER_POINTER not
	DECL_NAME.

	* genattrtab.c (check_attr_test): Use XSTR macro instead of
	XEXP macro in places where strings are used.

	* tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero
	before comparing the equality of the possible lists.

	* cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking
	that the TREE_TYPE is an OFFSET_TYPE.

	* cplus-typeck.c (c_expand_return): Use DECL_RESULT of
	current_function_decl instead of `result' since `result' might be
	set to zero.

	* cplus-decl.c (xref_tag): Fixed typo in setting
	TYPE_USES_COMPLEX_INHERITANCE.

	* cplus-tree.c (assoc_value): Changed interface to take COPYING
	parameter.
	* cplus-{class,init,search,tree}.c  All callers changed.

	* cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we
	are converting to is not an OFFSET_TYPE.

Thu Nov	 8 15:26:27 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other
	macro defs to handle new complex type stuff.  Mostly guesswork; needs
	checking by people who really know each machine.
	* machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes.
	* machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c.
	* tree.c (build_complex_type): New function.
	* stor-layout.c (layout_type): Handle COMPLEX_TYPE.
	* expr.c (compare1, compare, move_block_to_reg, emit_push_insn):
	Change uses of GET_MODE_CLASS.
	* optabs.c (expand_binop, expand_twoval_binop, expand_unop):
	(emit_cmp_insn): Likewise.

Thu Nov	 8 06:19:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously
	uninitialized.

Thu Nov	 8 01:08:45 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong.

Wed Nov	 7 14:55:38 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib2.c (L_trampoline): Put it inside a dummy function.

	* enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl.
	Modified to undef CHAR_BIT, etc. if defined in stdio.h.
	* Makefile.in (enquire): Targets renamed.
	(enquire.o): Define NO_MEM.

Wed Nov	 7 14:18:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (invert_jump): If it is going to fail (i.e., redirect_jump
	fails), don't invert the jump.

	* expr.c (expand_expr, case COND_EXPR): Don't accept a hard register
	as a target if we are going to store into it before testing the
	condition because that evaluation may involve a subroutine call
	which might clobber it.

	* jump.c (delete_jump): reg_set_p should be called with PATTERN (insn).
	(thread_jumps): Add omitted last argument to rtx_equal_for_thread_p.

	* reload.c (find_reloads): Only skip insns which set one hard register
	to another if the cost of doing so is low;  if not, there may not be
	a single insn to do the copy and we may need a reload register.

Wed Nov	 7 00:01:18 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (component_decl_list): Allow missing semi at end.

	* loop.c (move_movables): When moving and deleting library call,
	don't be confused if an insn is deleted.

Tue Nov	 6 20:49:57 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax.
 
	* xm-iris.h (alloca): Delete redundant definition.
	* tm-iris.h (CPP_SPEC): Define variant symbols starting with _.
	Define __EXTENSIONS__.

	* config.gcc (editing .gdbinit): Search current dir, not just srcdir.

Tue Nov	 6 22:24:09 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Generate efficient code for
	A ? A : FOO and similar.

	* combine.c (subst): If we have, e.g., (lt CONST FOO), convert it
	to (gt FOO CONST).

	* recog.c (comparison_operand): Use comparison_code_p.

	* genconfig.c (walk_insn_part):	 Add operand to indicate if PART is
	going to be used to recognize an insn (as opposed to emitting rtl).
	If not, ignore CC0.
	(gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to
	walk_insn_part calls.

	* cse.c (find_comparison_args): Correctly compute rtx_code of
	comparison; if we find another comparison code inside, use it.
	* loop.c (get_condition): Likewise.

	* expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop.

Mon Nov	 5 12:55:00 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* final.c (output_addr_const): Don't print parens for CONST.

	* reload1.c (choose_reload_regs): Handle case where find_equiv_reg
	returns a SUBREG.  Also, use variable `regno' uniformly throughout
	code that finds equivalent register.

	* gnulib2.c (__floatdisf, __fixunssfsi): New functions.
	(__fixsfdi, __fixunssfdi): New functions.
	* gnulib.c (__floatsisf, __fixsfsi): New functions.

Mon Nov	 5 06:37:02 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g.,
	(A & 2) == 2 to (A & 2) != 0.  This eliminates the need for these
	patterns in MD files.
	Detect more general cases of comparing something with itself.

Mon Nov	 5 00:09:55 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c (expand_cleanups): Don't run any cleanup twice.

Sun Nov	 4 23:49:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (convert_move): Use emit_no_conflict_block when converting
	SImode to DImode.
	If have slt insn, emit a compare insn; we must not have a use of
	cc0 without a set; normally, the compare will be deleted as
	redundant in final.c.
	Use shift rather than clear/test/negate for high-order word when
	doing sign extension.

	* optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT
	notes on the trailing copy insn; nobody looks there.

	* combine.c (try_combine): Don't combine a reg-reg copy if the
	destination is used in a REG_NO_CONFLICT note.

	* reload.c (find_equiv_reg): Use true_regnum to support SUBREGs
	as well as REGs.

Sun Nov	 4 12:55:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* i386.md (extend*): Take out last change.
	Unix assembler rejects movsx...

	* expr.c (expand_expr): Special case for ignored volatile
	failed to return.

Sat Nov	 3 14:42:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a
	pessimization.

Fri Nov	 2 01:51:31 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c (expand_return): Don't emit a USE if VAL is a
	pseudo-register.

Fri Nov	 2 15:30:48 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib2.c (__builtin_saveregs): Add version for i860.

	* out-i860.c (output_block_move): Rearrange the copy loop.
	Now uses two labels and a more complicated lead-in.

Fri Nov	 2 14:17:24 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (extendsidi2):  New define_expand.

	* out-m88k.c:  Converted various constructs to use conventinal
	formatting.

	* m88k.md (ext pattern): Must have parens.
	* m88k.md (mul/div patterns): Added better documentation.  Removed
	unfounded restriction on immediate values.
	* m88k.md (increment and test peephole): Don't use %L.

	* out-m88k.c (m88k_layout_frame): Must allocate space for the
	addressing base register (-mpic).
	* out-m88k.c (output_tdesc): Use version 2 tdesc with PIC.

	* tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others.
	* tm-m88k.h: Fixes for dwarf.
	* tm-m88ksvr4.h: Dwarf changes.
	* xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments.

Fri Nov	 2 12:30:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (comparison_dominates_p): Return 1 if codes are the same.
	(thread_jumps): Use get_label_after.

	* a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE.
	(comparisons): Fix typo in define_split for floating-point NE.

	* reorg.c (fill_slots_from_thread): Don't mark as annulled if no
	delay list.

	* loop.c: Allow use of any register to store comparison results.
	(loop_skip_over): Don't treat comparison specially; copy all insns
	preceeding the jump.
	(check_for_endtest, other_reg_use_p): Deleted.
	(can_eliminate_biv_p, eliminate_biv): Deleted; code merged and
	placed into new maybe_eliminate_p_1.
	(may_eliminate_biv, may_eliminate_biv_1): New functions; recursively
	look at all rtx to see if every occurrence of a biv can be
	eliminated.
	(check_eliminate_biv): Deleted; callers changed to call
	may_eliminate_biv.
	(get_condition): Rework to look into previous insns to find insns
	that set the first operand of comparison insns.

Thu Nov	 1 22:07:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx, case COMPARE): Only convert compare to test if
	HAVE_cc0 is defined.
	* combine.c (subst): Copy COMPARE case from fold_rtx.  
	Simplify things like (ne (eq FOO BAR) (const_int 0)).

Thu Nov	 1 18:06:56 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* math-68881.h (HUGE_VAL): Alternate definition for Suns.

	* config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4.

	* tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix.
	(CPP_SPEC): New macro.
	(LIB_SPEC): Handle -shlib.

	* c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp
	an unsigned long, to be like size_t.

	* Makefile.in (hard-params): Depend on gnulib2, not gnulib.

Wed Oct 31 22:12:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* config.gcc (ultrix):	New alternative.

	* i386.md (extend*): Change opcode to movsx.  Was movs.

Wed Oct 31 09:41:27 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md: Deleted an old pattern for subtracting 0.
	* m88k.md: Deleted patterns for aligned bit-field insns.
	* m88k.md: Changed define_expand to define_insn for mulsi3 and
	umulsi3.
	* m88k.md: Converted various constructs to use conventional
	formatting.
	* m88k.md (mak patterns):  Fixed transcription errors.

Wed Oct 31 00:05:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (init_decl_processing): Predefine the ordinary names
	of alloca, abs, memcpy, etc.

	* c-decl.c (duplicate_decls): Allow redefining built-in as static,
	but optionally warn.

Tue Oct 30 14:39:17 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'.
	* tm-vms.h (DEFAULT_MAIN_RETURN): Define this.

	* c-parse.y (yylex): Base is not 8 for just `0'.

	* cccp.c (do_define): Invert test of compare_defs.

	* cccp.c (make_definition): Convert newline to newline-newline.

	* Makefile.in (hard-params): Depend on gnulib.

	* m88k.md (divsi3): Delete declarations of gen_... functions.

Tue Oct 30 14:26:20 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c: Rework handling of comparisons to generalize better to
	machines that use registers to hold condition code information.
	(prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0.
	(find_comparison_args): New function.
	(fold_rtx): Folded value of cc0 is the value previously stored into it.
	Rework handling of comparisons:	 use find_comparison_args to see what
	is being compared.  If they are constants, compute the result of the
	comparison.  If not, see if the two operands are equivalent (only for
	non FP or non-IEEE FP).	 Then see if we have already seen a comparison
	involving these operands that lets us give a value to this comparison.
	True comparisons return STORE_FLAG_VALUE, not 1.
	(fold_cc0): Deleted.
	(predecide_loop_entry): Call cse_insn on a copy of each insn at the
	loop test to propagate the values of items at the start of the loop.
	Then use fold_rtx to see if we know the result of the jump.
	(record_jump_equiv): Use new function find_comparison_args.
	(cse_insn): Just record value of CC0 if set; don't call fold_cc0.
	Don't modify PREV_INSN (insn) if INSN is a copy.
	(cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE.

	* jump.c (comparison_code_p, comparison_dominates_p): New functions.
	(thread_jumps): Use comparison_dominates_p.
	Remove debugging code.
	* reorg.c (condition_dominates_p): Use new function
	comparison_dominates_p.

	* emit-rtl.c (next_cc0_user): Don't get confused by being call with a
	copy of an insn; use INSN_UID to check for an insn in a delay slot.

	* rtl.c (reg_note_name): Add name for new REG_LABEL note.

	* emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN.

Tue Oct 30 09:26:15 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* Update what strings in files edited so far.
	* tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING
	and VERSION_INFO to more appropriately identify the compiler.

	* tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%'
	is encountered.
	* out-m88k.c (print_operand): Add a tab to %L output.  Delete
	unused cases.

	* m88k.md:  Rework the movstrsi pattern and provide call_block_move
	and call_block_move_loop to support expand_block_move.
	* out-m88k.c:  Rework the block move functions.
	* make-m88k, make-m88kdgux:  Eliminate movstr.h.

	* m88k.md, out-m88k.c: Eliminate assembler comments.

	* m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings
	about out of range shifts.

	* tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM.

Mon Oct 29 18:06:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* final.c (final_end_function): Handle dwarf output.
	(final_scan_insn): Likewise.
	(output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE.
	* toplev.c (rest_of_decl_compilation): Likewise.
	(rest_of_compilation, main): Likewise.
	* varasm.c (assemble_variable): Likewise.
	* flags.h (enum debugger): Define DWARF_DEBUG.

	* cccp.c (do_define): Rewrite criterion for warning.
	Don't warn if -D redefining symbol with constant numeric value.

	* toplev.c (output_file_directive): New function.
	* sdbout.c (sdbout_filename): Deleted.
	* tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h,
	tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that.

	* c-decl.c (named_labels): No longer static.
	(pushlevel): Clear named_labels.
	(poplevel): Don't clear it here.

Mon Oct 29 13:32:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* Makefile.in: Update dependencies for various files, mostly cplus-*
	files.

	* rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and
	CALL_INSN.
	* rtl.h: Add REG_LABEL register note.  For INSN and CALL_INSN, the
	presence of this register note has the same meaning that a non-NULL
	JUMP_LABEL would have with the Sep 26 change.
	* jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of
	JUMP_INSNs only.
	(mark_jump_label): If INSN is an INSN or a CALL_INSN, add a
	REG_LABEL note if a LABEL appears (and no such note already exists).
	??? Once recorded, this information appears never to be used.

	* jump.c (delete_jump): The deletion of INSN must take place when
	INSN is a simple jump.	Also, don't try to optimize if we come
	across an insn with the reorg-generated pattern (USE (INSN ...)).

	* cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping
	and undumping the compiler.

	* Merge cplus diffs from Kenner.
	* cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct.
	* cplus-typeck.c (build_conditional_expr): Ditto in three places.
	* cplus-lex.c (yylex,do_pending_inlines): Add conditionals for
	_IBMR2.	 This hair will disappear when pcccp support is merged, but
	needed for now.
	* cplus-tree.h: Conditionalize use of non-int bitfield types on
	ONLY_INT_FIELDS.  Also, remove duplication declarations of
	get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration
	of build_decl_list.

Mon Oct 29 11:45:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* fixincludes: Fix missing semi in rusers.h.

Mon Oct 29 07:07:47 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* flow.c (mark_used_regs): When converting "...*p...; q = p + size"
	to "q = p, ...*q..., q = q + size", show that Q is needed after INSN.

	* romp.md (negdi): Directly generate assembly code rather than
	converting this into a MINUS.

	* fold-const.c (fold, case COND_EXPR): Add missing condition in test
	for (A ? 0 : A).

Sun Oct 28 15:01:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (find_basic_blocks): An indirect jump can go
	to any label whose address is used as data.

	* m68k.md (zero-extend QI): Use gen_rtx, not change_address.

	* Makefile.in (USER_H): List va-*.h explicitly.
	(toplev.o): Depend on RTL_H.
	(stamp-*): Depend on move-if-change.
	(install-headers): Depend on various header files.
	(install-man): Depend on gcc.1.
	(gcc.o): Depend on gvarargs.h and obstack.h.

	* Makefile.in: Make sure every `if' has an `else'.

	* c-typeck.c (build_binary_op_nodefault): Prevent warning for
	variable shift count.

	* i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem.

Sun Oct 28 09:39:14 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (delete_jump): The deletion of INSN must take place when
	INSN is a simple jump.	Also, don't try to optimize if we come
	across an insn with the reorg-generated pattern (USE (INSN ...)).

	* sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take
	advantage of new 2.0 optimization capabilities.
	* old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of
	the above files before the rewrite.  They may be interesting for
	measuring performance of old vs. new machine description idioms.

Sun Oct 28 00:22:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (scan_loop): Don't think that a branch to an end-test of
	a containing look is actually the branch to the end-test of the
	outer loop.

	* reload.c (indirect_ok): Deleted.
	(find_reloads): Accept new arg IND_LEVELS instead of old IND_OK;
	pass this to find_reloads_address and find_reloads_toplev.
	(find_reloads_toplev): Accept IND_LEVELS and pass to
	find_reloads_address.
	(find_reloads_address): Accept IND_LEVELS and pass it on to 
	find_reloads_address_1.
	When calling ourself recursively for a MEM as an address, show
	one indirect level has been used.
	(find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves
	in recursive calls and to find_reloads_address.
	* reload1.c (spill_indirect_levels): New var; used to be
	spill_indirect_ok.
	(reload): Compute number of levels of indirection and set it into
	spill_indirect_levels.
	(reload, reload_as_needed): Pass spill_indirect_levels not
	spill_indirect_ok.

	* reload.c (find_reloads): Make similar change to "V" as "O".

	* reload1.c (eliminate_regs): For binary operations, don't call
	recursively on second arg if null (for EXPR_LIST).
	(eliminate_regs_in_insn): Perform register elmination in the
	REG_NOTES of an insn when we are doing it for the last time.

	* vax.md (call_value_pop): Use correct operand number for number
	of bytes popped.

	* tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if
	register allocation hasn't been done yet.

	* function.c (init_function_start): Initialize reg_renumber to zero;
	it is checked in rtx_renumbered_equal_p.

	* loop.c (loop_optimize): Ensure we assign a new LUID to all
	special notes, including NOTE_INSN_FUNCTION_BEG (0).

Sat Oct 27 12:22:46 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (print_operand, output_prolog): Don't try to fill delay
	slots with parts of epilogue or prologue unless -O -fdelayed-branch.

	* tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8.

	* reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos;
	they must not have gotten hard registers.

Fri Oct 26 11:30:28 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (main): Set machine_suffix before reading specs file.

	* c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts.

	* stor-layout.c (layout_record):
	BITFIELD_NBYTES_LIMITED affects bitfields only.

	* loop.c (note_addr_stored): Don't assume PLUS in address is aggregate.

Fri Oct 26 00:46:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h: Declare `build_type_conversion' once instead of
	three times.

	* loop.c (loop_skip_over): Handle machines without cc0.
	(labels_in_range_p): Fixed typo where this function returned 0 when
	it meant to return 1.
	(check_for_endtest): New function.  Returns non-zero when
	argument is a simple conditional test insn (suitable for being the
	endtest of a loop).
	(strength_reduce): Use `check_for_endtest' to identify the endtest.
	Also fixed some typos in comments.
	(can_eliminate_biv): Use `check_for_endtest' here, too.
	(get_condition): Generalized to handle machines without cc0.  Now
	THIS_CC_RTX is the value of the cc rtx.

	* integrate.c (expand_inline_function): Conditionalize away
	cc0-specific code with HAVE_cc0.
	(try_constants): Add appropriate declaration for ORIG.
	(try_fold_condition): Generalized to work for non-cc0 condition
	values.

	* cplus-type2.c (digest_init): Add missing declaration of FIELD.
	* rtl.h: Add missing declaration of plus_constant_for_output.
	* jump.c (can_reverse_comparison): Fixed typo.
	(delete_jump): Made to work without cc0_rtx.

Fri Oct 26 00:01:27 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0.

	* reload.c (find_reloads): For the `o' constraint, if IND_OK is
	true, use offsettable_memref_p instead of the nonstrict version.

	* jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to
	delete previous insn that sets a condition code register, because it
	might not be dead.  Rework to look at all registers dying in this insn
	and delete the first previous insn that sets any such register if that
	is all it does.

	* jump.c (jump_optimize): Remove extraneous call to next_active_insn
	in optimization of "if (...) x = 1; else ...; if (x) ...".

	* cse.c (predecide_loop_entry): Don't set cc_value to null and then
	stick it in the rtl.

	* rtlanal.c (find_next_ref): Deleted from here.
	* explow.c: Include hard-reg-set.h for find_next_ref.
	(find_next_ref): Moved to here.
	* Makefile.in (explow.o): Includes hard-reg-set.h.

Thu Oct 25 21:37:15 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* va-mips.h (va_list): Put __ in member names.
	(va_dcl): Rename _va_alist to __va1_alist.
	* va-i860.h (__va_struct): Put __ in member names.
	* gvarargs.h, va-*.h: (__va_ellipsis): New macro.
	(va_dcl): Use that.

	* c-typeck.c (convert_for_assignment): For functions, reverse the
	usual criterion for warning about const vs non-const.  Volatile also.

	* m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com.
	* tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files.
	* xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files.
	* make-m88k, make-m88kdgux: New files.
	* config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives.

	* gvarargs.h, gstdarg.h: Include alternate file for m88k.

	* expr.c (expand_expr): For ARRAY_REF, preserve const and volatile.

	* expr.c (expand_builtin): Handle strcmp and memcmp with function calls
	if can't be open coded.

	* function.c (expand_function_end): Round trampoline addr to init.
	(round_trampoline_addr): Fix braino in alignment.

Thu Oct 25 14:54:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c: Now includes insn-config.h.
	(jump_optimize): inequality_comparisons_p takes only one operand again.
	(can_reverse_comparison_p): Handle case where a register is used
	for the condition code; if we can't easily find the COMPARE that
	was used to set the register, say we can't reverse the comparison.
	* Makefile.in (jump.o): Now includes insn-config.h.

	* jump.c (jump_optimize): Put back change removed on Oct 21st;
	emit_store_flag has now been updated.

	* rtlanal.c (inequality_comparisons_p): Reject any ordered
	comparison; we need not just reject when comparing against
	cc0_rtx.
	* recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p
	again has only one operand.
	* genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21.

	* genconfig.c (have_cc0_flag): New variable.
	(walk_insn_part): Set it when we see CC0.
	(main): Write #define HAVE_cc0 when it is set.
	* flow.c: Now includes insn-config.h.
	* Makefile.in (flow.o): Likewise.

	* combine.c (subst): If X and FROM are the same register number,
	but in different modes, force the combine not to be done.
	Add missing initialization of undobuf.storage.

Thu Oct 25 11:34:35 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sched.c (new_sometimes_live): Protect this function in case it is
	called with (OFFSET,BIT) that evaluates to >= MAX_REGNO.

	* jump.c (sets_cc0_p): Conditionalized to abort if called when
	machine does not support cc0.

	* rtlanal.c (reg_set_p): Now non-static.
	* rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately.
	* rtlanal.c (find_next_ref): New function.  Returns the insn that
	next references REG after INSN, or 0 if REG is clobbered before next
	referenced or it cannot easily find a reference to REG.

	* recog.c (next_insn_tests_no_inequality): Conditionalized on
	HAVE_cc0.

	* rtlanal.c (inequality_comparisons_p): Takes new argument
	THIS_CC0_RTX which is the rtl for the condition code value we are
	concerned about testing.  All callers changed.

	* flow.c (propagate_block,mark_used_regs): Conditionalize
	specialized cc0 handling only if HAVE_cc0 is defined.

	* genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined,
	save space by using REG_CC0_RTX instead of allocating a new
	(REG, mode, CC0_REGNUM) rtx if the mode is SImode.

	* final.c (output_addr_const): Handle PC for P.I.C. code generation.
	Also, put parens around CONST expressions so that precedence can be
	maintained.
	* final.c (final_scan_insn): Don't look for redunant compares
	except when HAVE_cc0 is defined.
	Also, use `find_cc' to locate the rtx functioning as the
	condition code register in order to perform appropriate calls
	to `alter_cond'.

	* expr.c (expand_expr): Supply missing arg in calls to `store_expr'.

	* expmed.c (emit_store_flag): New argument COMPARISON is the
	comparison operation whose result we store.

	* recog.c (offsettable_address_p,adj_offsettable_operand): Use
	`plus_constant_for_output' instead of `plus_constant' since we
	are testing conditions which rely on being able to add small
	offsets to e.g. LO_SUM operands.
	* explow.c (plus_constant): No special handling for LO_SUM.  It is
	not valid to add a constant to a term with LO_SUM, since the
	constant may need to be added to the high bits that form the sum,
	and those high bits are not readily available.
	* explow.c (plus_constant_for_output): Same as `plus_constant'
	except that we do allow adding constants to LO_SUM terms.  This
	function works only in special cases such as for
	`adj_offsettable_operand' and `offsettable_address_p'.

	* emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but
	is a register instead of a special form.  reg_cc0_rtx should
	be used when representing the condition code register on a
	machine where condition codes are only set if explicitly set.
	For machines which allow arbitrary registers to be used as
	condition code registers (such as the MIPS and 88k), normal
	pseudo registers should be used instead.
	* emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized
	on HAVE_cc0.
	* emit-rtl.c (find_cc): New function.  Given INSN, returns
	the rtx of what functions as the condition code register for
	INSN.  On machines which use cc0_rtx, this is always cc0_rtx.
	On machines which have a dedicated register for cc0, this is
	that register.	On machines which allocate pseudos for holding
	condition codes, this is the pseudo found in a REG_CC0 note.
	Otherwise, this function returns 0.
	* emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if
	CC0_REGNUM is defined.

	* cse.c (make_regs_equiv): Don't consider making a reg
	equivalent to another reg whose class is NO_REGS.
	* cse.c (canon_reg): Don't canonicalize a register to
	one whose class is NO_REGS.
	* cse.c (fold_rtx): Conditionalize code for handling cc0_rtx
	with HAVE_cc0.
	* cse.c (predecide_loop_entry): Generalize code to use either
	a register or cc0_rtx.
	* cse.c (cse_insn): Conditionalize code for handling cc0_rtx
	with HAVE_cc0.

	* combine.c (combine_instructions,try_combine,subst):
	Conditionalize code handling cc0_rtx with HAVE_cc0.
	* combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not
	defined.
	* combine.c (try_distrib): Add break at end of switch cases.  It is
	dangerous to leave the last cases of a switch statement to fall
	through since new cases added after will get fallen into.

	* recog.c (validate_change): Always succeed for an asm insn,
	since recog always fails to recognize asm insns.  This is
	needed for virtual register instantiation in asm insns.

	* cse.c (cse_main): When following jumps, notice whether a
	particular basic block causes CSE_JUMPS_ALTERED to become set.	When
	this happens, repeat the scan.
	* cse.c (refers_to_mem_p): Changed parameter name REG to BASE,
	which is more accurate.	 Also, taught it how to cope with
	LO_SUM rtl constructs.

Wed Oct 24 15:36:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (store_one_arg): Accept additional arg, FNDECL.
	Don't save argument area if it is within the REG_PARM_STACK_SPACE
	area, but mark the area in use.
	(expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE,
	treat the stack area for the registers as be clobbered by the called
	routine (e.g., if it was compiled without -O) and save and restore
	it if it was previously used for arguments in a similar manner to
	the remainder of the argument area (done by store_one_arg).

	* calls.c (expand_call): Support new description macro,
	STACK_PARMS_IN_REG_PARM_AREA.
	* function.c (assign_parms): Likewise.

Wed Oct 24 12:47:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_array_ref): Use main variant for value type.

	* genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT
	cause aux-output.c not to be included.
	Makefile.in (aux-output2.c): Copy aux-output.c and then compile it.

	* reload.c (subst_reg_equivs): Treat HIGH like other constants.

	* reload.c (push_reload): When testing hard reg for validity,
	test subsequent regs only against class, not for HARD_REGNO_MODE_OK.

Tue Oct 23 22:49:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Skip ## at start after the error.

	* gcc.c (default_compilers): Handle - as suffix.
	(main): Make that a special case; it matches only exactly `-'.

Tue Oct 23 22:40:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo
	in addition to "d" in first alternative.

	* reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation.

Tue Oct 23 20:35:13 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (zero-extend QI): When pushing, store value at 1(sp).

Mon Oct 22 12:27:08 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (rescan): In the loop that handles numbers, discard \newline.
	Also make `..' terminate a preprocessing number.

	* Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'.

	* gcc.c (default_compilers): Give __GNUC__ value 2.
	Don't define it for .S files.

Mon Oct 22 07:33:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_indirect_jump): New function; now checks predicate
	of indirect_jump.
	* stmt.c (expand_computed_goto, expand_goto): Use new function instead
	of directly emitting indirect jump.

	* flow.c (mark_set_1): Make LOG_LINKS for hard registers.
	* combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which
	considers things equal if they are the identical RTX or the same
	register with the same mode; use to see if something changed and
	if we have a match.

	* cccp.c (S_ISREG): Use argument instead of global.
	(main): Correct sense of S_ISREG usage.
	(check_precompiled): Use S_ISREG.

	* flow.c (mark_used_regs): Don't allow reg_next_use to point to
	a NOTE; either point it to replacement insn or invalidate it.

Mon Oct 22 00:13:12 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (xdecls): No warning unless -pedantic.

Sun Oct 21 17:49:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c.

	* jump.c (jump_optimize): Remove code that depends on changes to
	emit_store_flag that haven't been made yet.

	* expmed.c (extract_bit_field): Correctly check for bitfield
	completely filling a mode.

	* out-romp.c (output_epilogue): Correctly write number of words of
	arguments into trace table.

	* calls.c (store_one_arg): Fix error in change of Oct 19th.

	* reorg.c (mark_target_live_regs): Revert back to old behavior
	of scanning all insns, even those in delay slots.
	(fill_simple_delay_slots): Need only call update_block if we move
	an insn across a label.

	* Makefile.in (LIBFUNCS): Use consistent naming convention for
	comparison routines; gnulib.c was always correct.

	* function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when
	we are called for the second time.

	* integrate.c (initialize_for_inline): Don't make a new return label
	here; the maximum label number has already been computed.
	(save_for_inline_copying, save_for_inline_no_copy): Do it here instead.

	* reload.c (find_reloads_address): For indirect address where the
	underlying address is also invalid, ensure that we substitute into
	the MEM that we will use.

Sun Oct 21 14:12:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.c (find_equiv_regs): Reject reg that overlaps goal.

	* expmed.c (extract_bit_field): For big fields, make sure
	value really goes in the target.

	* expr.c (expand_builtin): Delete __builtin_varargs.
	(EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs.

	* calls.c (expand_call): No "can't inline" warning if -fno-inline.

	* stddef.h: Add missing #endif.

Sat Oct 20 14:33:14 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (round_trampoline_addr): New function.
	(trampoline_address): Use that.

Fri Oct 19 15:13:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (store_one_arg): Don't mark stack area used until after
	we have written into it; if we do it before, the restore might
	clobber a function result being put into that stack area.

	* objc-actions.c (print_lang_statistics): Add empty function.

	* recog.c (inequality_comparisons_p): Deleted from here.
	* rtlanal.c (inequality_comparisons_p): Moved to here; not static.

	* a29k.md (extendhisi2): Fix typo in define_split.

	* Makefile.in (integrate.o): Includes integrate.h.
	(reorg.o): Includes insn-flags.h.

Fri Oct 19 14:49:26 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sdbout.c (sdbout_symbol): If a variable belongs to an inline
	function, the decl's rtl may not be rewritten by alter_reg.  So if
	we have a variable allocated to a pseudo, just get the hard register
	number from `reg_renumber'.  ?? But I thought that COFF was so
	losing that it was decided one could not represent debug info for
	inline functions in COFF.

Fri Oct 19 13:21:25 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp.

Fri Oct 19 00:15:21 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c: Bumped to 1.90.03.

	* tree.c: Added facility for gathering statistics on the number of
	tree nodes allocated and the size in bytes they occupy.	 The
	statistics are by tree_node_kind, which is almost like using the
	tree code letter, but has more resolution for dealing with different
	kinds of `x' nodes.  The facility is enabled by compiling the
	compiler with -DGATHER_STATISTICS and using the -fstats flag.

	* expr.c (do_tablejump): Emit a BARRIER after the jump that performs
	the tablejump.

	* cplus-typeck.c (c_expand_return): Rewritten so that the function
	value return register is not used except as a target of the function
	return value.

	* cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P
	controls whether this functino should build its result with a
	cleanup or not.	 All callers changed.

	* cplus-lex.c: File updated to latest changes to c-parse.y's lexical
	analyzer.

	* cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE
	is used to control whether to output extra gotos or not.  When
	nonzero, the compiler can avoid writing out the extra gotos that are
	otherwise needed to avoid warning messages.

	* cplus-decl2.c (flag_short_double): Add support for this option.

	* cplus-decl.c (finish_function): Always cause returns to jump to
	the return label.  This allows -Wreturn to give meaningful error
	messages.

	* jump.c (invert_exp): Make this non-static.
	(jump_optimize): Reorganization and simplification of main inner
	loop.  Comments added explaining what the optimizers are looking
	for.  New optimization added that optimizes for consecutive testing
	of an inequality test followed by an equality test (or vice-versa).
	Changes made to accommodate reorg.c on Sparc.  Code for
	cross-jumping return statements was previously dead in this
	function; as a result of the reorganization, it is now live.
	(find_cross_jump): Added temporary variable PREV1 to hold return
	value of `prev_nonnote_insn' instead of calling the function 3 times
	in a row.  Also changed so that USE or CLOBBERS are not cross-jumped
	unless some real insns are also cross-jumped.  This helps reorg.
	(redirect_jump): Fixed a return that returned no value so that it
	returns 1.
	(rtx_renumbered_equal_p): Test that reg_renumber is nonzero before
	using it.  We may want to call this function earlier than by the
	time that array has been initialized.

	* integrate.c (save_for_inline_{copying,nocopy}): New functions to
	replace `save_for_inline'.  save_for_inline_copying saves the rtl
	for inline functions by copying the rtl to the
	maybepermanent_obstack.	 It is called when the rtl of the current
	function is going to be compiled immediately.
	save_for_inline_nocopy takes advantage of the fact that inline
	function rtl is already allocated to the maybepermanent_obstack, and
	need therefore not be copied if it's not going to be modified by the
	compiler (such as by `rest_of_compilation').
	({initialize_for,finish}_inline): New helper routines for
	save_for_inline_... functions.
	(note_modified_parmregs): Function called by `mark_stores' to note
	whether parameters are assigned to in the body of an inline
	function.
	New interface, integrate.h, provides declarations for functions used
	by other routines that might want to copy chunks of rtl.
	({save,try}_constants): Now global (for integrate.h).
	(mark_stores): Ditto.
	(try_fold_condition): Ditto.

	* dbxout.c (dbxout_symbol): If a variable belongs to an inline
	function, the decl's rtl may not be rewritten by alter_reg.  So if
	we have a variable allocated to a pseudo, just get the hard register
	number from `reg_renumber'.

	* varasm.c (output_const_pool): No longer static.
	(assemble_variable): Do output debugging information for global
	register variables.  GDB does the right thing for global register
	variables.

	* toplev.c: New flag `warn_inline' for warning when a function
	declared inline was not in fact inlined.  Also, new flag
	`flag_no_inline' which disables function inlining, but retains
	other properties of inline functions (such as lazy compilation
	and write-only-if-needed).
	* toplev.c (compile_file): Changed logic for inline function
	handling to work with `warn_inline' and `flag_no_inline'.
	Also modified to call `save_for_inline_nocopy' when insns are to be
	saved but not immediately compiled.

	* function.c (instantiate_decls): If instantiating a function
	which was saved for inline expansion, preserve the rtl created
	by the instantiation as well.

	* flags.h (flag_no_inline): New flag; if nonzero, then no
	calls are inlined, regardless of their declaration.  We still
	save the insns for these functions in DECL_SAVED_INSNS so that
	the functions need not be written if they are never called.

	* calls.c (expand_call): If `flag_no_inline' is set, don't
	inline the call, regardless of whether it was declared inline
	or not.

Thu Oct 18 13:10:26 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* rtl.def (CODE_LABEL): Add new string field.
	* rtl.h (LABEL_NAME): Define macro for access.
	* emit-rtl.c (gen_label_rtx): Initialize it to 0.
	* stmt.c (expand_label): Store proper name of label.
	* final.c (final_scan_insn): Call sdbout_label.

	* tree.h (built_in_function): Add BUILT_IN_VARARGS.
	* c-decl.c (init_decl_processing): Declare __builtin_varargs.
	* expr.c (expand_builtin): Generate code for it.
	Uses new macro EXPAND_BUILTIN_VARARGS.

	* sdbout.c (SDB_IS_FAKE): Macro deleted.
	(MAKE_LINE_SAFE): New macro.
	(sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it.
	(sdbout_one_type): Delete spurious second arg in all callers.
	(sdbout_types, sdbout_end_function):
	Use sdbout_dequeue_anonymous_types.
	(sdbout_label): New function.

	* expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY.

	* gvarargs.h, va-*.h (va_dcl):
	Add ellipsis so current_function_varargs is set.

	* jump.c (jump_optimize): Exit push-optimize loop at end of insns.

Thu Oct 18 07:09:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Major reorganization.  Many special cases have been moved
	into more general code and an overall restructuring has been done.
	Numerous bugs have been fixed.	Highlights:
	(dbr_schedule): First make list of all insns needing filling.  Then
	iterate for two passes.	 In each pass, try two methods of filling
	delay slots, then do some canonicalizations, which may create more
	insns to fill.
	(fill_simple_delay_slots): Now uses list of insns that need filling,
	rather than making such a list.
	Enhance code that finds insns when code paths merge to allow multiple
	uses of the label as long as all uses are in the skipped code.
	(struct resource): Notice volatile memrefs.
	(stop_search_p): Allow option to continue when label is reached.
	(find_end_label, make_return_insns): New functions; when we have a
	filled branch that is really a RETURN, first convert it to a jump
	to a return label and then later see if the insns in the delay slots
	are also valid for a RETURN.
	(mostly_true_jump): Test for branch to loop beginning rather than
	branch at end of loop.	Also, conditional return insns predict false.
	(own_thread_p): New function to replace fall_through_to_p.
	(try_merge_delay_insns): Only support merging insns already in an
	insns delay list.
	(get_branch_condition, condition_dominates_p): New functions.
	(steal_delay_list_from_{target,fallthrough}): New functions to
	replace steal_delay_list.
	(redundant_insn_p): New function.
	(update_block, mark_target_live_regs, dbr_schedule): When moving
	an insn not at the front of the basic block to a delay slot,
	leave a "ghost" USE so that we can track things livened and killed.
	(fill_slots_from_thread): Eliminate use of static vars for number
	of slots to fill and already filled.
	Try to modify an insn that follows a register-register copy to use
	the original register; this may create a delay-slot opportunity.
	(try_hoist_target{,_1}): Deleted.
	(relax_delay_slots): Rewritten to just perform canonicalizations
	previously done elsewhere.  No actual delay slot filling is done
	here.  Any new delay slots created will hopefully be filled in the
	next pass around the loop in dbr_schedule.

	* expr.c (emit_push_insn): Don't try to compute a SUBREG of a
	hard register in a non-integer mode when pushing a "partial" arg.

	* recog.c (validate_change, apply_change_group): After reload, ensure
	that operands meet the constraints by calling constrain_operands.
	(validate_replace_rtx_1): Consider two rtx equal if they refer to
	the same register.

	* jump.c (jump_optimize): Extend change of Oct 16th to handle
	the other usage of find_equiv_reg; remove invalid death notes there.

	* rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000:
	New files.

	* out-a29k.c (extract_subword): Use gen_{high,low}part from
	an FP CONST_DOUBLE if host and target float formats are the same
	or REAL_IS_NOT_DOUBLE.

	* out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch
	register unless it is used in the insn.

	* romp.md: In combined set CC0 and move, optimize case where move
	is nop.
	(DF moves): Fix typo in generation of `get' insn.
	Don't split if input is CONST_DOUBLE because we can't easily
	generate the proper constants.
	(call patterns): Copy data area address via a pseudo to allow
	better CSE'ing.

	* tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference
	to our own data area, which is very cheap.
	(ADDRESS_COST): References to the constant pool are as cheap as
	register + offset, since that's what it will be.

	* emit-rtl.c (gen_{low,high}part): Can often extract word from FP
	CONST_DOUBLE when host and target floating formats agree.
	(add_insn_after): No longer static.

	* reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot
	and now static.
	(reload): If have equivalence with constant that is not a legitimate
	constant operand, force it into memory and handle this as an
	equivalence to memory.
	* reload.h (reg_equiv_stack_loc): Deleted.

Wed Oct 17 20:50:58 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c, cccp.c (main): Use TARGET_VERSION if -v.

	* expmed.c (extract_bit_field): Typo in last change.

	* Makefile.in (tmpgnulib): Support assembler files named *.asm.

	* gcc.c (do_spec_1): Null-terminate error message.

	* sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL.
	This happens for vars from the parms of inline functions.
	* dbxout.c (dbxout_symbol): Likewise.

	* genattr.c (fancy_abort): New function, as in gen*.c.

Wed Oct 17 14:53:48 1990  Michael I. Bushnell  (mib at geech.ai.mit.edu)

	* pcp.h: New file.

	* cccp.c: Support use of precompiled files
	Include "pcp.h".
	(no_precomp, stringlist, stringlist_tailp): New variables. 
	(union hashval): New field `keydef'.
	(enum nodetype): New alternative `T_PCSTRING'.
	(main): Support -noprecomp.
	Use write_output to write output.
	(rescan): Call pcstring_used for T_PCSTRING symbols.
	(do_include): New local variables pcftry, pcfname, pcf, pcfbuf, 
	pcfbuflimit, and pcfnum.
	Check for possible use of precompiled files.
	(check_precompiled): New function.
	(check_preconditions): New function.
	(pcfinclude): New function.
	(pcstring_used): New function.
	(write_output): New function.
	(create_definition): New function.
	(do_define): Moved most of the work into create_definition.
	(dump_single_macro): New function.
	(dump_all_macros): Moved most of the work into dump_single_macro.
	(dump_defn_1): New argument OF.
	(dump_arg_n): New argument OF.

	* cccp.c: Support generation of precompiled files
	(pcp_outfile, pcp_inside_if): New variables.
	(struct definition): New field `predefined'.
	(main): Support -pcp.
	(rescan): Don't expand macros outside #if during -pcp.
	(special_symbol): Error for most special symbols during #if in -pcp.
	Output precondition for T_CONST and T_SPEC_DEFINED symbols.
	(eval_if_expression): Set and clear pcp_inside_if.
	(do_ifxdef): Output preconditions.

Tue Oct 16 13:22:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS,
	make it true that zero-length field affects alignment of next field.

	* rtlanal.c (get_integer_term, get_related_value): Moved from cse.c.

	* jump.c (jump_optimize): When reusing value via find_equiv_reg,
	delete obsolete death note.

	* expmed.c (extract_bit_field, store_bit_field):
	Handle fields wider than a word.
	Restrict special case for word-sized field to aligned words.

	* expmed.c (extract_bit_field, store_bit_field): Don't let
	BESTMODE be bigger than the insn can handle.

	* Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA.

	* cccp.c (handle_directive): Turn on code to handle # LINENUM,
	and move initializations past the label `old_linenum'.

	* c-decl.c (grokdeclarator): If traditional, make bitfields unsigned.
	(finish_struct): Don't do that here.

	* fixincludes (CTRL): Don't put quotes around a quote.

	* stddef.h (size_t): Also inhibit if _SIZE_T_.

Mon Oct 15 13:15:30 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (grokdeclarator): Make flag_signed_bitfields work
	for int and for typedefs.

Sun Oct 14 21:28:32 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (life_analysis): No hard regs for any pseudos live at setjmp.

	* c-decl.c (duplicate_decls): Don't suppress warning for fn defn
	after implicit declaration, if fn has already been defined.

Fri Oct 12 15:54:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (xdecls): Allow ellipsis after parm decls.
	Call c_mark_varargs.
	* c-decl.c (start_function): Clear c_function_varargs.
	(c_mark_varargs): New function.	 Set it.
	(store_parm_decls): Maybe call mark_varargs.
	* function.c (init_function_start): Clear current_function_varargs.
	(mark_varargs): New function.  Set it.

Thu Oct 11 13:15:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* genattrtab.c (fancy_abort): New function, as in gen*.c.

	* expr.c (saveregs_value): New variable.
	(init_expr, save_expr_status, restore_expr_status):
	Init, save, restore the variable.
	(expand_builtin): Don't call __builtin_saveregs twice in one function.

	* va-*.h: Rename all structure fields to start with __.
	* va-pyr.h: Rename variables also.
	(va_start): Delete the unmatched {.
	(va_end): Now a nop.

Wed Oct 10 22:03:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* va-sparc.h (__va_ctl): Rename fields to start with __.

Tue Oct	 9 12:55:48 1990  Michael Meissner  (meissner at osf.org)

	* Allow configuration to specify size of a wide character.
	(WCHAR_TYPE_SIZE): New parameter.
	(WCHAR_UNSIGNED): New parameter, says whether type is signed.

	* c-decl.c (WCHAR_TYPE_SIZE): Define if not defined.
	(WCHAR_UNSIGNED): Likewise.
	(wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node):
	(wchar_array_type_node): New variables.
	(init_decl_processing): Init them.
	* c-tree.h: Make them extern.

	* c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them.
	(combine_strings): Handle them.
	* c-parse.y (init_lex, yylex): Likewise.

	* c-typeck.h (digest_init): Use wchar_type_node and
	signed_wchar_type_node to get the base type of wide strings, rather
	than using int and unsigned.

Tue Oct	 9 14:16:37 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expmed.c (extract_bit_field): Typo; section for extv used extzv.

	* c-typeck.c (digest_init): Error if union has no name field.
	(process_init_constructor): For union, use first named field.

	* flow.c (propagate_block): Include NOTE at end of block in scan.

	* fixincludes: Fix missing semicolon in rstat.h.

	* cccp.c (main): Record the option names used for assertions.
	Call make_assertion properly.

Tue Oct	 9 06:18:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx): Call find_best_addr before seeing if we know
	what is located at that address.
	Don't try to return the contents of an ADDR_DIFF_VEC table; we have
	no simple way of representing it.
	(cse_insn): Detect SRC == DEST even when DEST is not the canonicalized
	form of the value represented by SRC.

	* loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL
	has been set.
	(struct induction): Add field MEM_MODE.
	(find_mem_givs, combine_givs_p): Record mode used to access memory
	when making DEST_ADDR giv and use it to test validity of
	derived address.

	* jump.c (delete_jump): No longer static.
	(invert_jump): Allow changing RETURNs to branches and vice versa.
	Now returns success/failure indication like redirect_jump.
	* rtl.h (delete_jump): Define.

	* calls.c (store_one_arg): Don't expand a `partial' arg into
	arg->stack and don't set arg->value to arg->stack_slot for
	such args.
	Clean up by breaking out common code.

Mon Oct	 8 15:09:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (can_eliminate_biv_p): Insist that mult_val be positive.

	* Makefile.in (insn-*): Remove semicolon from these rules.
	(INSTALL_PROGRAM, INSTALL_FILE): New variables.
	(install-*): Use those variables.
	(mandir): Default based on manext.

Mon Oct	 8 10:57:14 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is
	nonzero.

	* c-decl.c (finish_enum): Argument to floor_log2 in
	calculation of negprecision was not negated.

Mon Oct	 8 06:50:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields.

Sun Oct	 7 23:33:24 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i386v.h (STARTFILE_SPEC): Handle -p here.
	(LIB_SPEC): Not here.

Thu Oct	 4 05:06:02 1990  Michael Tiemann  (tiemann at cygnus.com)

	* gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just
	%{O}. This permits the use of -O2, -O3, etc., with predictable
	results.

	* expr.c (expand_expr): Do not build new cleanups for
	TARGET_EXPRs.  Their cleanups are now handled entirely by the
	language-specific code that causes them to be generated.

	* function.c ({push,pop}_temp_slots): Do not change
	temp_slot_level if within a sequence.  GNU C++ must be able to
	emit a sequence it is building anywhere at the level the sequence
	was initiated.	If the level is changed when building a sequence,
	temporaries could be unwittingly shared.

	* cplus-tree.def: change print strings for NEW_EXPR and
	CPLUS_CATCH_DECL.

	* cplus-dem.c (do_type): Support `long long' types.

	* cplus-decl.c (finish_file): No longer try to emit _init,_fini
	records for GNU C++.  This was supposed to help the SunOS dynamic
	linker link C++ code, but it turned out not to work.

	* cplus-decl.c ({start,finish}_function): Don't emit an extra
	binding contour if not in a constructor or destructor.	It is not
	needed, and saves writing out unneeded debugging info.

	* cplus-class.c (build_method_call): Conditionalize handling of
	wrappers and operator->(); these are now only compiled if ESKIT is
	#defined.

	* cplus-decl.c (define_label): Updated to treat labels in the same
	new fashion that c-decl.c treats them.

	* cplus-*.c: C++ front-end files now support a generic
	class-browser interface.  It is up to some adventurous hacker to
	implement the class browser.

	* cplus-*.c: C++ front-end files no longer #include rtl.h.

Sun Sep 30 15:53:02 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (make_assertion): New function.
	(main): Handle -A by calling make_assertion.
	-A- gets rid of predefined macros and those specified earlier.

	* print-tree.c (print_node_brief): Declare i for printing REAL_CST.

	* recog.c (immediate_operand, nonmemory_operand): Don't accept
	integer constants if caller wants a floating mode.

Sat Sep 29 18:40:08 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload1.c (emit_reload_insns): Handle preserving death info
	with find_equiv_reg.

	* reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P.

	* fixincludes: For link pointing outside /usr/include,
	use $x rather than $dest.

	* optabs.c (expand_float, expand_fix): Use dconst1, not 1.0.

Sat Sep 29 06:38:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (try_split): Use emit_insn_after and delete_insn to
	ensure that the correct insn chain is maintained in the presence of
	SEQUENCEs; be careful if the insn being split has a following BARRIER.
	* jump.c (delete_insn): Correctly update insn chain when deleting
	insn following or preceeding a SEQUENCE.

Fri Sep 28 16:07:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix.

	* fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls.

Thu Sep 27 14:06:37 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE.

Wed Sep 26 00:21:23 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-mips-news.h: New file.

	* out-i860.c (output_size_for_block_move): Don't decrement.
	(output_block_move): Decrement initial storing address instead.

	* c-parse.y (yylex): Always try unsigned int if `u' is written.

	* c-typeck.c (build_unary_op): Don't let &* make an lvalue.

	* c-parse.y (initlist): Use [N] rather than case N: for array index.

	* tm-seq386.h (LINK_SPEC): Define it.

	* c-parse.y (yylex): Don't try signed int for nondecimal constant
	if -traditional.  Improve messages for -Wtraditional.

	* stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT.

	* jump.c (jump_optimize): Scan all insns for label refs.
	(mark_jump_label): Quickly ignore uninteresting rtl types.
	* rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL.

	* jump.c (jump_optimize): Try combining stack adjusts with pushes.

Mon Sep 24 07:31:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* stmt.c (expand_computed_goto): Emit barrier after jump.

	* expr.c (case LABEL_DECL): Return a MEM, so we can take its
	address; correctly form LABEL_REF.

Sun Sep 23 22:54:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN.
	(scan_loop): Only use REG_EQUAL note under very restricted
	cirsumstances.	Set MOVE_INSN field in movables when appropriate.
	(combine_movables): Simplify matching test now that we only have one
	source field.
	(move_movables): Handle MOVE_INSN movables by emitting a new move
	insn in front of the loop.
	Correct typo in checking for CALL_INSN.
	Don't try to make a REG_EQUAL note.
	(count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE.

Sun Sep 23 14:59:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (S_ISREG): Define it unless overridden.
	(main, finclude): Use that.

	* reload1.c (reload): If insn after a function call uses the
	function value, and that reg is spilled, and the insn might
	use it for reloading, add an extra need.
	(reload_as_need): Detect such insns for new arg to choose_reload_regs.
	(choose_reload_regs): In that case, don't choose function value reg.

	* tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH.

Sun Sep 23 07:52:32 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c (version_string): Bumped to 1.90.02.

	* final.c (leaf_function): Variable now non-static.
	* final.c (only_leaf_regs_used): Function now non-static.
	* final.c (leaf_function_p): Move initialization of
	`leaf_function' from here...
	* toplev.c (compile_file): ...to here.	We want to know the
	value of `leaf_function' when we perform code reorginization.
	* final.c (leaf_function_p): If profiling arcs, we cannot have
	a leaf function.  Also, we have to look at insns in
	`epilogue_delay_list' to know that all our constraints are
	satisfied.
	* final.c (only_leaf_regs_used): Have to look in
	`epilogue_delay_list' to know that all our constraints are
	satisfied.

	* toplev.c (warning_with_file_and_line,warning): Declare third
	argument V3 for warnings that require 3 `%' expressions in S.
	* toplev.c (strip_off_ending): New helper function that removes
	a GCC-recognized filename extension.  Call this function in
	GCC instead of expanding it inline in C code everywhere.

	* sched.c (schedule_block): The last basic block does not have
	no live registers.  Also, check that we don't copy from an
	entry in `basic_block_live_at_start' that does not exist.
	* sched.c (update_reg_first_use): When splitting insns, the
	insn that is in REG_FIRST_USE might become a NOTE, and a new
	insn become the insn that should be considered the first use.
	`update_first_use' keeps REG_FIRST_USE up to date.
	* sched.c (update_links): Call note_stores with
	`update_first_use' when an insn splits.

Sun Sep 23 00:05:49 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (grokdeclarator): Put var array bound in save_expr.

Sat Sep 22 14:01:00 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.c (build_index_type): Don't hash variable-bound type.

	* c-decl.c (start_decl): Error here if var-size object initialized.
	(grokdeclarator, finish_struct): Record types & decls
	with array sizes not written as constants.
	* c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros.

	* tm-aix386.h (LIB_SPEC): Different library name for -p.  Always -lc.
	(LINK_SPEC): Don't pass -lg or -g.
	(CPP_PREDEFINES): Define _I386 and _AIX.  Don't define unix.
	(SDB_DEBUGGING_INFO): Define it.
	(DBX_DEBUGGING_INFO): Undefine it.
	(ASM_FILE_START): Output .noopt if not optimizing.
	(PCC_BITFIELD_TYPE_MATTERS): Define it.
	(FUNCTION_PROFILER): Add definition.

Fri Sep 21 16:26:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* function.c (current_function_epilogue_list): Define this here.
	* reorg.c: Not here.

Fri Sep 21 13:11:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here.

Thu Sep 20 15:29:44 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.h (struct optab): Field libfunc, an rtx, replaces lib_call.
	* rtl.h (SYMBOL_REF_USED): New macro.
	* optabs.c (init_optabs): Initialize that field properly.
	Also initialize new variables *_libfunc.
	(various functions): Use those vars; use libfunc field.
	* expr.c (convert_move, emit_block_move, clear_storage): Use the vars.
	(emit_push_insn, expand_assignment): Likewise.

Thu Sep 20 13:51:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (current_function_epilogue_delay_slot): Renamed from
	epilogue_delay_slot.

	* romp.md (movdi): Fix missing short/long qualifier on memory ref.
	(SFmode/DFmode move patterns): Add explicit alternatives for
	storing and loading general registers from memory; also add
	DEFINE_SPLITs for these cases for DFmode.
	(negsf2,negdf2): Don't use XOR if an operand is a hard FP register.

	* tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct
	register numbers for FP registers.

	* output.h (current_function_epilogue_delay_list): New var.
	* function.c: Include output.h and initialize new var above.
	* Makefile.in (function.o): Now includes output.h.
	* reorg.c (epilogue_delay_list): Renamed to
	current_function_epilogue_delay_list.

	* final.c (final_scan_insn): Don't delete no-op insn if in delay slot
	or if we have already pre-scanned.

	* genconfig.c (max_insns_per_split): Rename from
	max_insns_per_split_flag and default to 1 instead of 0.

	* genattrtab.c (n_comma_elts): Return zero for null string.

	* sdbout.c (MIN,MAX): Add to here; required by recent changes.

	* expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF.

	* c-parse.y (ridpointers): Move definition in front of first use.

	* reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a
	CALL_INSN and USE insns preceeding it.
	(mark_set_resources): Likewise, for following CLOBBERs.

Wed Sep 19 17:45:49 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* assert.h (printf): Don't define; should be in stdio.h.

	* rtl.h (PUT_REG_NOTE_KIND): New macro.
	* sched.c (attach_deaths): Use it.

	* reorg.c (mark_referenced_resources): If we put insns to load
	parameters into the delay slot of a CALL, ignore the USE insns
	for those parameters.

	* function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless
	its would-be operand is a SUBREG.

Wed Sep 19 00:26:59 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* print-tree.c (print_node): Indent before printing RTL.

	* Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X
	in libsubdir.

Tue Sep 18 21:55:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx): For MEM with constant address, split the
	address into possible base and offset; ensure constant pool
	value is same mode as our reference unless we are getting a
	word of a DImode CONST_INT.
	Treat SYMBOL_REF and LABEL_REF as constants.
	If we are getting a word at a constant offset from a jump table,
	replace with the contents of that jump table entry.
	(cse_insn): When folding jump to variable location (e.g., tablejump),
	LABEL_REF is the cheapest of all, since the branch would be simple.
	Special-case changing variable branch to normal unconditional
	because the RTL may be different (e.g., the variable branch may
	include a USE).

Tue Sep 18 18:33:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* toplev.c (count_error): Handle warnings_are_errors.
	(W_options): Handle -Werror.

Mon Sep 17 00:02:12 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (lookup_label): Use void as type of label.
	* stmt.c (label_rtx): No longer static.
	* expr.c (expand_expr): Handle LABEL_DECL.

Sun Sep 16 16:27:29 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (expand_builtin): Error for __builtin_nextarg
	if function definition doesn't have `...'.

	* expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once.
	for insv, use mode of operand 3 instead of SImode.  Define MAXMODE.
	Adjust XBITPOS along with mode of XOP0.
	(extract_bit_field): Adjust XBITPOS along with mode of XOP0.
	for extv and extzv, use mode of operand 3 thoroughly instead of SImode.

	* sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros.
	(plain_type_1): Use those macros to distinguish int and floating types.

	* toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb
	only if top_level.

	* c-parse.y (unary): Don't forget to look up the label.

	* c-typeck.c (build_conditional_expr): Don't skip arg promotion.

Sun Sep 16 14:54:03 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (try_combine): If we don't recognize the combined insn,
	try it without any CLOBBERs.

	* final.c (final_scan_insn): Prevent CC tracking from thinking
	that the CC was set by an insn in the delay slot of a CALL_INSN.

	* expmed.c (init_expmed, expand_divmod): Allow machine to have
	low cost specified for divides by powers of two if it can do it by
	a method that if cheaper than the normal shift/branch/adjust mechanism.

	* cse.c (fold_rtx): When putting constant last, ensure that the
	resulting insn is valid.

	* objc-actions (finish_objc): Remove dup defn of gen_declaration_file.

	* objc-parse.y (ridpointers, token_buffer): Define before use.

	* reload1.c (scan_paradoxical_subregs): Declare correctly.

	* tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark
	SYMBOL_REFs that are addresses of functions (really their data blocks).
	(LEGITIMATE_CONSTANT_P): Data block addresses of functions are not
	valid operands.
	* out-romp.c (symbolic_operand): Likewise.
	* romp.md (call*): emit_move_insn will now do force_const_mem
	so it needn't be done explicitly.

	* out-romp.c (output_fpop): Work around yet another RT fp bug;
	cannot merge output and first operand for SFmode if general reg.

	* romp.md: Add new pattern to match combination of copy and test.
	Use nilo instruction to set CC.

Fri Sep 14 07:07:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-tree.h: Define all *_type_node trees defined in c-decl.c, in the
	same order as defined there.

Fri Sep 14 08:39:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up
	for the fact that we do not call `default_conversion' anymore.

	* function.c (instantiate_virtual_regs): If the function is inline,
	we don't need to worry about making valid rtl, but we do need to
	worry about instantiating all virtual registers.  Otherwise we must
	make the rtl valid, and we have other opportunities to eliminate the
	virtual registers during the compilation.

Thu Sep 13 16:00:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.c (MATCHES): Check for different rtx's with same reg number.

	* fixincludes: Discard `.' from value of `files'.

	* c-parse.y (unary_expr): Use unary && to get address of label.
	(stmt): Handle `goto *EXPRESSION;'.
	* stmt.c (expand_computed_goto): New function.

	* gstdarg.h: New name for stdarg.h.
	* Makefile (install-headers): Rename gstdarg.h while installing it.

	* sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM.
	(plain_type): Output accumulated array dims and size.
	(plain_type_1): Eliminate arg NOSIZE.  Save up dims and size.
	Call self rather than plain_type for pointers and functions.
	(sdbout_array_type, sdbout_array_depth): Functions deleted.

Thu Sep 13 16:12:15 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (build_method_call): Fix typo in deciding whether to
	do hairy or trivial pointer conversions on `this'.

	* cplus-tree.c (layout_vbasetypes): Don't double-count space taken
	up by virtual baseclasses.

Wed Sep 12 18:14:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-m68k.h: Use asm_fprintf widely.
	(REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX):
	New macros.

	* final.c (asm_fprintf): New function.

Wed Sep 12 06:07:50 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-dbxout.c (dbxout_type): Output basetype size and offset info
	in bits, not bytes.

	* cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN
	bit of types used by non-extern VAR_DECLs.  Set it also for types of
	PARM_DECLs and return types of functions defined in the file being
	compiled.

Tue Sep 11 13:21:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (plain_type_1): New argument NOSIZE.	 Inhibits size output.
	(sdbout_array_type): Call plain_type_1 directly; set NOSIZE.

	* sdbout.c (sdbout_array_type): New argument DEPTH.
	Don't output more than SDB_MAX_DIM dimensions.
	(sdbout_array_depth): New function.
	(plain_type_1): Start DEPTH by calling sdbout_array_depth.

	* gnulib2.c (_bb_init_func): Library member now named _bb.

	* tree.h: Add comments.

Mon Sep 10 17:20:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (install): Fix typo.

	* cccp.c (macarg1): With -traditional, backslash quotes chars.

Mon Sep 10 16:37:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps
	runs after reload.

Mon Sep 10 13:07:39 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Don't actually substitutee into a
	string if ANSI; just consider warning.

	* gnulib2.c (div_qrrnd for i386): Fix typo.  Rename some args.

	* sdbout.c (sdbout_array_type): New argument DEPTH.
	Don't output more than SDB_MAX_DIM dimensions.
	(plain_type_1): Start DEPTH at 1.

Sun Sep	 9 22:02:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (gen_reg_operand): Exclude SUBREG of a special
	register.

	* cse.c: (fold_rtx): Get equivalent for register before seeing if
	memory reference is to constant pool.
	(cse_ins): Only call force_const_mem if we actually try to use
	the constant (i.e., we haven't found anything cheaper).

Sun Sep	 9 21:49:18 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* ..._BIG_ENDIAN: Now expect definition to be 0 or 1.
	All refs and defs changed.

	* tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION).

	* sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before
	recursion, and TREE_ASM_WRITTEN after.

Sat Sep	 8 16:47:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* hard-params.c (main): Don't try to malloc all memory.

Sat Sep	 8 16:38:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (reload): Set reg_equiv_constant if the equivalence
	is any constant, not just a legitimate constant operand.

	* final.c (get_attr_length, shorten_branches, final_scan_insn):
	If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables
	in readonly data section, even if it exists.

Sat Sep	 8 14:07:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive
	makes when compiling with GCC since it never needs alloca.c.

	* c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned.
	Controlled by -W.

	* tm-i386v4.h: New file.

Fri Sep	 7 13:10:24 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (STDC_VALUE): New macro, defaulting to 1.
	(intialize_builtins): Use that.

	* m68k.md (movqi): `st' does not set cc's.

Fri Sep	 7 07:49:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genemit.c (gen_expand): Fix test for no C code.
	If no C code, no MATCH_DUPs, and only one insn to write, handle
	like DEFINE_INSN and return that insn rather than making a sequence.

	* emit-rtl.c (add_insn_after): If previous or next insn is a
	SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or
	PREV_INSN of the first, as appropriate.
	(emit_insn_before, emit_jump_insn_before, emit_note_before):
	Call add_insn_after.

	* stmt.c (check_for_full_enumeration_handling): If a switch whose index
	is an enumerated type contains labels for every enumeration value,
	make the label for the last value the default label since such a
	switch can never fall through.

	* genattr.c (fatal): Declare first arg correctly.

	* combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P;
	its value shouldn't matter once RTL generation is complete.
	(subst): If NOT is present as an operand in commutative operation,
	put it last to reduce the number of required patterns.

	* out-romp.c (output_fpops): Align to word boundary before writing
	any floating-point blocks.

	* function.c (instantiate_virtual_regs_1): Fix typo in previous change.
	When a MEM must be copied, use copy_rtx; the PLUS may also be shared.

Thu Sep	 6 15:19:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (do_spec_1): Don't add __ to -D if __ already present.

	* c-typeck.c (convert_for_assignment):
	Better warning for FCN * vs. void *
	Specific warning for char * vs. unsigned char *.

Thu Sep	 6 14:52:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_basic_block): Return -1, not 0, if we can't find
	the basic block.
	(mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally.
	(relax_delay_slots): Don't call optimize_skip for unconditional jump.
	Only try to remove jump if it is a simple conditional or
	unconditional jump (but not a tablejump or similar such).

	* cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p):
	Consider (plus (reg) (const_int)) to be a fixed address if REG
	is constant; old code just handled REG.

	* genrecog.c (enum routine_type): Use to distinguish two types of
	routines that we write: recog and split_insns.
	(make_split_sequence): Write out extern for gen_split_ function.
	(break_out_subroutines, write_subroutine, write_tree, main):
	Use new enum routine_type instead of passing "split" or "recog".
	(write_subroutine): Write correct type for splitting functions and
	return 0, not -1.
	(main): Write includes before declarations of gen_split_ functions
	since "rtx" is needed for them.
	* rtl.h (try_split, split_insns): Added definitions.

Wed Sep	 5 16:20:07 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (includes): Use proper directory.

Tue Sep	 4 13:59:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (store_parm_decls): Let extra_warnings control
	warnings about parms not declared.

	* flow.c (life_analysis): Move code to detect stack-adjust insns.
	It was unreachable.

	* gnulib.c, gnulib2.c (abort): #undef in case config.h defines it.

Mon Sep	 3 17:50:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass
	unnamed args in registers.
	* function.c (assign_parms): Call SETUP_INCOMING_VARARGS for
	stdargs as well as varargs; ensure we only call it once.

	* function.c (instantiate_virtual_regs_1): Don't assume all memory
	addresses are valid for all insns.

Sun Sep	 2 22:17:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (emit_library_call): Push all stack args, then load regs.

	* c-decl.c (c_build_type_variant): For an ARRAY_TYPE,
	put the qualifier into the array as well as the element.
	(grokdeclarator): When a field or variable is supposed to be
	a const or volatile array, make the array elements const or
	volatile, but also make the field or variable so.

	* c-decl.c (grokdeclarator): Turn off the warning for const or volatile
	function type when making an array.  It was useless.

Fri Aug 31 16:26:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-common.c (truthvalue_conversion): Let the
	language-specific code decide how to convert EXPR
	if it is not one of the special forms we recognize.

Fri Aug 31 15:08:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (execute): Use I instead of undefined var J if DEBUG defined.

Fri Aug 31 14:37:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block.

Thu Aug 30 21:31:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (extract_bit_field): Fix typos in computations of UNIT.

Wed Aug 29 12:33:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (sdbout_reg_parms): Don't advance parm twice.

Tue Aug 28 22:49:41 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (delete_newlines): New function.
	(macroexpand): Remove newlines from args used more than once.

Tue Aug 28 22:16:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (sched.o): Add to list of files to compile.

	* c-parse.y (position_after_white_space): Declare with correct type.

	* fold-const.c (optimize_bit_field_compare): Fix typo.

	* reorg.c (split_insns): No longer need extern for this here.

	* toplev.c (sched_dump_file): Define.
	(compile_file): Initialize and print sched_time and sched2_time.

	* local-alloc.c (block_alloc): Fix typo in allocation of insn_map.

	* cse.c (cse_insn): Try related value in case where CONST is seen
	first and SYMBOL_REF later.

Tue Aug 28 16:26:50 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (main): Don't modify or validate arg of -D here.
	(make_definition): Do it all here.

	* function.c (assign_parms): Reenable `register' for parms.

Tue Aug 28 07:12:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust
	SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost.

	* expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode.
	(expand_expr, case *_DECL): Return constant address if
	EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS;
	all of these cases will later call memory_address.
	(expand_expr, case COMPONENT_REF): Always make recursive call with
	EXPAND_SUM.
	(expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and
	mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand.
	Check for MODE != Pmode with EXPAND_SUM here.
	(expand_expr, case MINUS_EXPR): Always process X - CONST_INT as
	X + (-CONST_INT)).

Sun Aug 26 23:10:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (c_decode_option): Handle -funsigned-bitfields. 
	(grokdeclarator): Do the real work.
	(grokfield): Pass either FIELD or BITFIELD to grokdeclarator.

	* tm-att386.h (asm_output_common): Use SIZE, not ROUNDED.

Sat Aug 25 17:17:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (unary_expr): Turn off handling of &...
	* c-decl.c (store_parm_decls): Turn off extra dummy parameter.

	* tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros.
	(BSS_SECTION_ASM_OP): New macro.
	(ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss.

	* combine.c (subst): Handle shift within mem, as multiplication.

Sat Aug 25 11:43:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* final.c (alter_cond): Handle CC_INVERTED.

	* conditions.h (CC_INVERTED): New flag indicating that the condition
	tested leaves the falgs set opposite to the condition tested.  This
	is unsafe for IEEE floating point operations, but useful for integer
	operations which can combine with condition-code setting operations.

	* c-parse.y (position_after_white_space): New function.	 Skips
	all of the whitespace at the current location in the input
	file, taking NEXTCHAR into account.  Changed all callers of
	`skip_white_space' in grammar to use this function instead.

	* genrecog.c (main): Generate code which is more easily optimized by
	GCC's cse.  In particular, start each recognizer with the address of
	`recog_operands' in a register.

	* reload.c (combine_reloads): Can only combine reloads if the
	register we find can hold the entire output reload (i.e., SFmode
	register may not be suitable for combining with DFmode register).

	* optabs.c (have_sub2_insn): Fixed typo.
	* combine.c (combine_instructions): Fixed typo in comment.

	* function.c (expand_function_end): Emit a barrier after a RETURN
	jump.

	* Added diffs for new instruction scheduling code.
	* emit-rtl.c (try_split): Moved here from reorg.c and made
	public.	 Both instruction scheduling and delayed branch
	filling now use the same code to split insns.
	* flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction
	scheduling before register allocation and
	FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after
	register allocation.
	* recog.c (constrain_operands): Recognize pseudo registers as
	registers for the purpose of insn constraint matching before
	register allocation.  Otherwise, the insn scheduler assumes
	the operands will be memory, which is usually wrong (and
	causes it to build bad schedules).
	* sched.c (order_calls): New function.	For two CALL_INSNS in
	the rtl chain, we set up a constraint that the second
	CALL_INSN may not be scheduled to run before the first.
	(sched_analyze_*): Three kinds of dependencies (true, anti,
	and output) constrain the order in which insns can be
	rearranged and still preserve their execution semantics.
	We now handle dependencies for pseudo and hard register usage
	and for memory usage in these functions.
	(launch_links): The ordering of which newly ready insns to
	execute is now preserved according to their `priority' in the
	insn chain, and no longer on their order in the dependency
	list from which they were launched.
	(schedule_block): Removed support for trying to schedule insns
	taking branch delays into account.  Reorg.c should be hacked
	to understand which insns to pull into delay slots and which
	insns to leave alone.
	(schedule_block): (Re-)compute all register life information here.
	No longer dependent on flow to keep `basic_block_live_at_end'
	allocated.
	(schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we
	can compute register life information.
	* rtl.c (add_dependence): New function to add and remove insn
	dependencies.  If an insn (I2) must execute after another
	(I1), we add an INSN_LIST containing I1 to I2's	LOG_LINKS.
	If such an INSN_LIST is already in I2's LOG_LINKS, we don't
	add a second.
	(remove_dependence): Similar, but removes dependencies.	 May
	not actually be needed.
	* toplev.c (compile_file,rest_of_compilation): Added code for
	dumping info about insn scheduling.

Fri Aug 24 17:24:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Implement `aligned (INTEGER)' attribute for real.
	* c-parse.y (attrib): Really record info for `aligned' attribute.
	Don't warn for any integer alignment.
	(attribute_list): Make a list.
	(initdcl, notype_initdcl, component_declarator): Handle that info.
	* c-common.c (decl_attributes): New function.

Fri Aug 24 07:12:05 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (insn-config.h): This is really needed after all.
	* Makefile.in (genattrab.o): Show dependency on insn-config.h.

	* local-alloc.c (block_alloc): Don't update qty_birth for a
	register whose quantity is <= 0.

	* fold-const.c (decode_field_reference): Actually obtain unsigned
	type where one is wanted.
	(merge_component_references): Correctly test for mutually exclusive
	conditions.

Thu Aug 23 14:56:44 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (digest_initializer): No pedantic warning for string
	and array of unsigned char.

	* tree.c (get_identifier): Do id_clash_len stuff if length equals that.

Thu Aug 23 10:30:10 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT.

Thu Aug 23 06:44:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-romp.c (romp_pushes_stack): Don't count
	current_function_pretend_args_size in size of stack.

Wed Aug 22 18:00:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files.

	* config.gcc (a29k-unix): New target.

	* calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST
	specifying multiple registers to load.
	(store_one_arg): Likewise; also delete handling of fully-in-register
	case, which hasn't been handled here for a while.
	* expr.c (emit_library_call): Our subset of calling sequence for
	library routines does not include multiple registers for an arg.

Tue Aug 21 17:44:49 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* make-cc1.com: Compile and link version.c.

	* Makefile.in (install-gnulib): Create libg.a if none already.

	* expr.c (convert_move): Handle expand_unop retval not same as target.

	* reload.c (find_reloads): For register letters, don't win if BLK.

	* sdbout.c (sdbout_toplevel_data): Fix error message.

	* protoize.c (open): Prototype deleted.

	* flow.c (mark_set_1, mark_used_regs): Update reg_first_use.
	(allocate_for_life_analysis): Allocate and clear it.
	* local-alloc.c (block_alloc): Calculate INSN_MAP.
	Get first use of each reg from reg_first_use.

	* tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++.
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section.
	(ASM_OUTPUT_EXTERNAL): Use that section.
	(SELECT_SECTION): Go to that section when appropriate.

Tue Aug 21 18:26:47 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (fill_simple_delay_slots): Mark anything referenced by an
	insn that will be placed in a delay slot in the epilogue as being
	needed at the end of the function.

	* cse.c (constant_pool_entries_found): New static var.
	(cse_main): Initialize it.
	(use_related_value): Correctly look for registers in hash table.
	(fold_rtx): Fold constant pool entries to their constants and
	set constant_pool_entries_found.
	(cse_insn):  If we weren't able to place a constant in an insn
	and we have previously seen constant pool entries used, set up
	to try the constant pool entry also.

Mon Aug 20 12:14:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (assign_parms): Set LAST_NAMED for parm before dummy.
	See August 9 change in c-parse.y.

	* gcc.c (process_command): Split -oFOO into two arguments.

	* stmt.c (expand_asm_operands): Handle COMPONENT_REF and
	ARRAY_REF directly as output operands.	Avoids crash if BLKmode.

	* c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h.
	* input.h: Declare finput.

	* expr.c (emit_push_insn): Don't adjust for EXTRA separately
	if will have to adjust the stack anyway.

	* m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits.

	* varasm.c (decode_rtx_const): Don't dereference a PLUS
	subexpression of a CONST twice.

Sun Aug 19 21:51:51 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* toplev.c (finput): Define here.
	* *-parse.y (lineno, finput): Duplicate definitions deleted.

	* global-alloc.c (find_reg): Test best_reg against 0,
	not first_pseudo_register.

Sun Aug 19 17:48:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (plus_constant): If adding to constant pool constant,
	return a new one.

	* genattrtab.c: Need not include insn-config.h.

Sun Aug 19 17:23:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__.

	* Makefile.in (USE_ALLOCA): Test was backwards.
	(USE_HOST_ALLOCA): Likewise.

Sun Aug 19 09:58:16 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c: Fixes from 2.0 for fixup_goto incorporated here.

	* cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL
	of DECL_CONTEXT (FN).  TREE_EXTERNAL is not meaningful for types.

Fri Aug 17 22:14:09 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (emit_cmp_insn): Don't abort after floating lib cmp.

Thu Aug 16 23:16:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_variable, assemble_static_space): Don't
	call data section if -fshared-data.  If this section is needed,
	it should be entered from elsewhere, and this is believe to be
	done in all known cases.
	(output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY
	which writes certain constant pool entries specially; used for TOC
	on RS/6000.
	(assemble_external_libcall): New function.
	* expr.c (emit_library_call): Call it.

	* reorg.c (mark_target_live_regs): Don't follow around infinite loops.

	* varasm.c (struct rtx_cont): Don't use enums in bit fields if
	ONLY_INT_FIELDS is defined.

	* cse.c (remove): Rename to remove_from_table to avoid conflict
	with `remove' defined in stdio.h.

Thu Aug 16 22:44:35 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c: fixup_gotos must ignore blocks started after the goto.
	(block_start_count): New variable, and slot in some structures.
	(expand_function_start): Initialize it.
	(expand_start_bindings): Increment it and store in struct nesting.
	(expand_goto): Store it in struct goto_fixup.
	(fixup_gotos): Compare fixup's count with block's count.
	(save_stmt_status, restore_stmt_status): Handle block_start_count.
	* function.h (struct function): Make slot to save it.

Thu Aug 16 18:02:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* obtabs.c (expand_fix, expand_float): Support direct conversion
	between SFmode and fixed modes by library call.

Wed Aug 15 18:36:28 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cccp.c (main): Allow -M to work on .s files by checking for .s
	and .S suffixes when writing dependencies.

	* reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target):
	Don't need to call can_reverse_comparison_p because invert_jump is
	safe for floating-point; only reverse_condition isn't.

Wed Aug 15 15:50:36 1990  Michael Tiemann  (tiemann at cygnus.com)

	* dbxout.c (dbxout_type): Skip past const and volatile qualifiers
	that might appear in method names.

Wed Aug 15 15:44:17 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (hash, is_reserved_word): Use __inline.

	* cccp.c (main): Support -dN and -dD.  Support -lint.
	(dump_macros): Two new alternatives.
	(handle_directive): Output macro definitions if -dN or -dD.
	(rescan): Check comments if -lint.
	(get_lintcmd): New subroutine.

	* c-decl.c (c_decode_option): Handle -fshort-double.
	(init_decl_processing): Create double_type_node accordingly.

	* c-decl.c (c_decode_option): Handle -Wno...

Tue Aug 14 23:10:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (break_out_memory_refs): Don't break out reference if
	constant but not legitimate constant for a machine insn.
	(memory_address): Only put legitimate constants, rather than all
	constants, into registers if they are used as an address.

Tue Aug 14 14:34:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reorg.c (steal_delay_list): Can't put something in a
	non-annulled delay slot that can trap.

	* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment.

	* cccp.c (do_assert, do_unassert, check_assertion): New functions.
	(compare_keyword_lists, read_keyword_list, free_keyword_list):
	New functions.
	* cexp.y (yylex): Allow `#' as token.
	Return name and length of symbol.
	(keywords): New nonterminal.
	(expr): Recognize # to test an assertion.
	(U_CHAR, struct arglist): Data types copied from cccp.c.
	(%union): New alternatives `keywords' and `name'.

Mon Aug 13 22:26:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-romp.h (SLOW_BYTE_ACCESS): Set to 0.

	* expmed.c (store_bit_field, extract_bit_field): Use get_best_mode
	to select mode to use for accessing memory when bitfield insns don't
	accept memory.

	* c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted.
	(merge_component_comparisons): Delete from here.
	* c-tree.h (merge_component_comparisons): No longer global.
	* c-convert.c (build_binary_op_nodefault): Don't try to merge component
	references here; now done in fold.
	* cplus-typeck.c (build_binary_op_nodefault): Likewise.
	* Makefile.in (fold-const.o): Now includes flags.h.
	* fold-const.c: Likewise.
	(STRIP_NOPS): New macro.
	(decode_field_reference, all_ones_mask): New functions.
	(merge_component_references): Put rewritten version here.
	This fixes bugs in the way that comparisons with non-equal
	constants (!p->a && p->b) are handled and in endianness checking.
	Also accepts more general comparisons, and, in particular, its
	own output so more than a pair of operations can be merged.
	(fold): Call it for TRUTH_{AND*,OR*}_EXPR.

	* tree.def (BIT_FIELD_REF): New tree code.
	* expr.c (get_inner_reference): Support BIT_FIELD_REF.
	If bitfield is a complete mode-sized unit, return that mode; if it
	is a subset of bits within a mode-sized unit, return VOIDmode.
	(expand_assignment): Check for BIT_FIELD_REF.
	Use mode returned from get_inner_reference to see if bit field.
	(store_constructor): Likewise.
	(store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode
	instead.  All callers changed.
	(expand_expr, case BIT_FIELD_REF): New case.  Handled same as
	COMPONENT_REF.
	Use mode returned from get_inner_reference rather than DECL_BIT_FIELD.
	(expand_increment): Must stabilize BIT_FIELD_REF.
	(do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF.
	(do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF
	and some ARRAY_REFs also.
	* fold-const.c (operand_equal_p): Handle BIT_FIELD_REF.
	* tree.c (staticp): Rework to use switch instead of if-then-else.
	Add support for BIT_FIELD_REF.
	(stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF.

	* c-common.c (truthvalue_conversion): Rework to use switch rather
	than if-then-else.
	Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as
	much as possible.
	Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR,
	LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR.
	Call fold for COND_EXPRs that we make.
	* c-convert.c (build_unary_op): invert_truthvalue can't return 0,
	so don't check for it.
	(invert_truthvalue): Delete from here.
	(convert_to_integer, build_conditional_expr): Try to fold COND_EXPR.
	* c-plus-cvt.c (convert_to_integer): Likewise.
	* cplus-typeck.c (build_conditional_expr): Likewise.
	(build_unary_op): invert_truthvalue can't return 0.
	(invert_truthvalue): Delete from here.
	* fold-const.c (invert_truthvalue): Move to here.
	Don't invert floating-point test.
	Look inside conversions.
	Use recursive call to negate inside logical operations rather than
	building a TRUTH_NOT_EXPR.
	Allow only certain TREE_CODEs as operands; abort for the rest.
	(fold_convert): Accept second argument that is item being
	converted to ensure that NOPs have been stripped.
	(operand_equal_p): Return 0 if either operand has side effects.
	If both integer or real constants, check the values.
	Do a more thorough test to see if two items are identical;
	specifically, compare the operands of simple TREE_CODEs.
	(omit_one_operand, distribute_bit_expr): New functions.
	(make_bit_field_ref, optimize_bit_field_compare): Likewise.
	(fold): Remove LOSES; now done explicitly or by calling
	omit_one_operand.  Some previous uses weren't needed.
	Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make.
	Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs.
	Convert "- (a - b)" to "b - a" for non-floating-point.
	ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg.
	Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b".
	If adding ANDs with constants that have no bits, in common, try
	bitwise-or, since we may then be able to distribute the operation,
	e.g., (a & 7) + (a & 0x70) -> a & 0x77.
	Add missing last arg to operand_equal_p call.
	Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR.
	Exclusive-or with all ones is bit negation.
	If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR.
	Handle TRUTH_NOT_EXPR by calling invert_truthvalue.
	Call optimize_bit_field_compare for comparisons of bitfields.
	Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test.
	Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal.
	* stor-layout.c (get_best_mode): New function.
	* machmode.h: Define it.
	* tree.c (integer_pow2p): New function.
	* tree.h: Declare new functions and functions no longer static.

Mon Aug 13 17:45:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* config.gcc (sun3-mach): New alternative.
	* tm-sun3mach.h: New file.

	* m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE.

Mon Aug 13 10:14:37 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (flag_minimal_debug): Now is default is
	-fflag-minimal-debug.

	* cplus-tree.c (virtual_member): Return the assoc of a non-virtual
	basetype that comes from a virtual baseclass.  Changed callers
	which used to call `value_member' to call virtual_member instead.

Mon Aug 13 06:54:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_twoval_binop): Fix typo.

	* cse.c (lookup_as_function): Don't assume CODE is a unary
	operation.  It might be a binary op or REG.

Sun Aug 12 21:42:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of
	COND_EXPR isn't a comparison; just suppress the do_store_flag call.

Sun Aug 12 14:26:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (enum built_in_function): Delete comma after last name.
	* c-parse.h (enum rid): Likewise.
	* expr.h (enum optab_methods): Likewise.
	* stab.h: Add dummy enum name at end.

	* config.gcc (genix): Set tm_file.
	* tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition.

	* tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS.
	* rtl.h (struct rtx_def): Likewise.  That macro goes in xm-*.h.

Sat Aug 11 16:56:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cplus-decl.c (finish_function): Check value of HAVE_return before
	calling gen_return.

	* reorg.c (optimize_skip): Don't reject skip when we jump around an
	insn and merge at the return point.

Fri Aug 10 17:00:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms.

Fri Aug 10 14:14:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode;
	remove test from here since it is in memory_operand, which this calls.

Thu Aug	 9 15:19:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (store_parm_decls): If function has variable number of args,
	put a dummy decl at end of parmlist.
	* c-parse.y (unary_expr): Handle &... with address of dummy decl.

	* tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning.

	* cccp.c (handle_directive): Add code to support `# DIGIT'
	but disable it for the time being.

	* tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI.
	(CPP_PREDEFINES): Don't define it here.
	Do define alternatives with __ prepended.

Wed Aug	 8 14:00:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-romp.c: Don't include hard-reg-set; already in insn-output.c.
	 
	* explow.c: insn-flags.h is needed to see if "probe" insn exists.
	* Makefile.in (explow.o): Likewise.

Wed Aug	 8 13:35:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (check_macro_name): Warn if name is `defined'.

	* tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after
	gcc_compiled.

Tue Aug	 7 23:51:38 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* toplev.c (main): Handle -W options like -f options.
	This supports -Wnounused, and such like.
	(warn_uninitialized): New variable, controls those warnings.
	Set it for -Wuninitialized, and for -W.

Tue Aug	 7 13:24:58 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case.

	* explow.c (allocate_dynamic_stack_space): Pass size of allocated stack
	to gen_probe.

Tue Aug	 7 12:19:46 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'.

Tue Aug	 7 07:13:54 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump
	but don't count it against minimum size.
	Never return when cross-jump hasn't actually been done.

Mon Aug	 6 18:50:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c: Include regs.h.
	(decode_reg_name): Remove extern for reg_names; it is in regs.h.
	* Makefile.in (varasm.o): Depends on regs.h.

Mon Aug	 6 12:46:07 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern.
	(start_decl): Don't warn at all for initialized extern.

	* final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE.
	(profile_function): New subroutine.

	* tm-i386sco.h: New file.
	* config.gcc (i386-sco): New alternative.

	* gcc.c (ENDFILE_SPEC): New macro.
	(do_spec_1): Handle %E.
	(link_spec): Use %E.

	* xm-i386.h (alloca): Define without arg.

	* Makefile.in (stage*): Use RANLIB_TEST.
	(LIMITS_H): New variable.
	(USER_H): Use that.
	* make-i386sco: New file.

Sun Aug	 5 13:11:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h: Delete all machine mode defns; include machmode.h instead.
	* tree.h: Likewise.
	* machmode.h: New file.
	* stor-layout.c: No longer include rtl.h.
	* Makefile.in: (RTL_H, TREE_H): Add machmode.h.
	(stor-layout.o): No longer depends on RTL_H.

	* c-common.c  (binary_op_error, shorten_compare): Should no longer
	have been static when moved here.

Sun Aug	 5 12:57:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record, layout_union): Test value of 
	PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined.
	* tm-*.h: Define with value 1.
	* tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment.

	* proto.h: New file.
	* Makefile.in (USER_H): Add that file.

Sun Aug	 5 00:04:08 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (grokfield): It is no longer legal to specify
	the initializer for a static const member in the class
	declaration.  Dealing with default initializers is basically
	impossible.

	* cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR
	until it is in fact an address.	 This allows us to call
	destructors on the return values of function calls.

	* cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which
	led to infinite recursion (since we did not reduce the types
	before we recursed).

	* cplus-lex.c (check_newline): Make `#pragma implementation' more
	forgiving.

	* cplus-init.c (expand_aggr_init): Changed Jan 20th change so that
	we test whether TYPE has a constructor defined, and we do not test
	at all whether INIT was from a GNU constructor expression or not.

	* cplus-typeck.c (build_modify_expr_1): Don't return
	`error_mark_node' unless there really was an error.  If there is
	no work to do, return `integer_zero_node'.

	* cplus-class.c (propagate_basetype_offsets): Count the space
	between baseclasses, not just the space they occupy.

	* cplus-typeck.c (commontype): Don't drop the exceptions that are
	raised by functions and methods.

	* cplus-cvt.c (convert_to_real): Fix if/else level problem in
	case where EXPR is of aggregate type.

	* cplus-decl.c (finish_decl): Emit a line-number note to give
	users a chance to set a breakpoint before the initialization of an
	object takes place.

	* cplus-class.c (build_method_call): If the function we get is not
	directly from the object we have, call `convert_pointer_to' if the
	object uses multiple inheritance or virtual baseclasses.

	* cplus-typeck.c (build_binary_op_nodefault): Don't call
	`convert_to_pointer' with an argument that might be
	the integer zero.

	* cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT
	in RESULT_DECLs as well.

	* cplus-init.c (build_vec_delete): Don't forget to deallocate the
	container if requested.	 Really use AUTO_DELETE and
	AUTO_DELETE_VEC with the same interpretation as `build_delete'
	gives to its AUTO_DELETE parameter.

Sat Aug	 4 22:08:44 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (find_cross_jump): Use prev_nonnone_insn.
	Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER
	block; doing so can confuse reorg.c.

	* optabs.c (expand_binop, expand_binop, expand_twoval_binop):
	If predicate doesn't match, ensure that operand is in a pseudo
	register.  Current code assumes that any register will suffice,
	but an insn may want to reject certain hard registers.
	(expand_unop, emit_unop_insn, emit_cmp_insn): Likewise.

Sat Aug	 4 15:29:09 1990  Michael Tiemann  (rms at sugar-bombs.ai.mit.edu)

	* function.c (assign_parms): For parms passed by reference,
	make the memory object's mode agree with the parm's original
	type mode.
	* calls.c (expand_call): Fixed braino in building argument
	reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined.

	* varasm.c (assemble_variable): Hack our way around the problem
	that static class members look like initialized variables for the
	purposes of establishing FIRST_GLOBAL_OBJECT_NAME.

	* cplus-lex.c (reinit_parse_for_method): Give error message for
	common mistake of forgetting the function body.

	* cplus-typeck.c (build_component_ref): Make better error message
	when field is not found.

	* cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from
	members as well.

	* cplus-typeck.c (c_expand_return): Give warning about returning
	non-lvalues that come from functional casts.

	* cplus-search.c (get_base_distance): Changed to follow leftmost
	path only when PARENT == TYPE_MAIN_VARIANT (PARENT).

	* cplus-class.c (modify_vtable_entries): Call get_base_distance
	with 0 path_ptr, since we do not appear to use the path computed.

Fri Aug	 3 07:37:30 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (leaf_function_p): Delete line advertently retained
	after change of July 29.

	* reorg.c (optimize_skip, try_hoist_target): Don't invert jump
	unless can_reverse_comparison_p says it is OK.	Use invert_jump
	to do it.
	(fill_simple_delay_slots): Another way flow of control can merge is
	for two insns to jump to the same place; try to get insns from there.
	(mostly_true_jump): Return 2 for a jump very likely to be true (the
	branch back to the start of a loop).
	(fill_slots_from_thread): Accept new arg LIKELY.  If true, see if can
	put increment in delay slot and undo it after the end of the loop.
	(fill_eager_delay_slots): Pass new arg to fill_slots_from_thread.
	If previous insn is conditional jump that also didn't get a delay
	slot, see if swapping targets helps.

Fri Aug	 3 00:18:35 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (MAKE_POS): Avoid constant of uncertain signedness.

	* gnulib2.c (__bb_init_func): Add dummy function to prevent warning.

Thu Aug	 2 17:44:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* output.h (current_function_return_rtx): Add new variable.
	* function.h (return_rtx): Likewise.
	* function.c (push_function_context, pop_function_context): Save
	and restore current_function_return_rtx.
	(assign_parms, expand_function_start): Set current_function_return_rtx
	to what is put in DECL_RTL (DECL_RESULT (current_function_decl)).
	* reorg.c: No longer uses tree.h.
	(dbr_schedule): Get result RTL from current_function_return_rtx instead
	of reading it from current_function_decl.
	* Makefile.in (reorg.o): No longer depends on TREE_H.

	* cse.c (remove_invalid_refs): Only invalidate an entry if it 
	references the actual register, not merely something sharing its
	quantity.
	(cse_insn): Don't abort if SRC and SRC_EQUIV map to different
	hash classes.  Merge them instead.

	* romp.md (mulsi3): Emit call to lmul$$ as a regular insn
	rather than a CALL_INSN.
	(divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted.
	(divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$
	as a normal insn to allow CSE'ing of MOD with DIV.

Wed Aug	 1 21:56:08 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (yylex): Don't warn about non-decimal unsigned by default
	if `u' was specified.  Add similar warning for long and long long.

Tue Jul 31 23:31:46 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label.

	* xm-vms.h (const): Delete the definition.

Mon Jul 30 18:33:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (convert_for_assignment): Normally no warning
	between char * and unsigned char *, etc.
	(convert_arguments): Include arg number in incomplete type warning.

Mon Jul 30 07:38:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (invert_jump): Don't do anything with labels if NLABEL 
	equals JUMP_LABEL.
	(redirect_jump): Don't try to reference LABEL_NUSES if olabel is
	zero (meaning this is a return insn).
	(redirect_exp): Handle case of converting return to jump to
	label.

	* dbxout.c (dbxout_parms): Allow parameter at zero offset from
	AP to be represented as (MEM (REG ...)).
	* sdbout.c (sdbout_parms): Likewise.

Sun Jul 29 22:51:00 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_twoval_binop_convert): Deleted.
	(expand_twoval_binop): Rework to be handle predicates, modes, and
	failures in a manner consistent with expand_binop.
	Move code from expand_twoval_binop_convert inline and rework to
	no longer hard-wire SImode and to handle failure.

	* config.gcc: Finish change of July 24th to have make_var_file depend
	on host machine.

	* jump.c: Now includes insn-flags.h.
	(jump_optimize): Try to put a RETURN at the end of the function if
	control flows through to it.
	JUMP_LABEL can now be zero for a RETURN or conditional RETURN.
	Try to convert jump to end of function into (possibly conditional)
	RETURN.
	Use next_active_insn instead of next_real_insn; these do the same
	thing prior to reload, after which USE and CLOBBERs don't matter.
	redirect_jump may now fail so don't set CHANGED if it does.
	Delete optimization of jump to RETURN; now subsumed by follow_jumps.
	Reset INSN_CODE if changing conditional jump to unconditional.
	(cond_jump_p): Conditional RETURN is conditional jump.
	(follow_jumps): Change argument name to AFTER_RELOAD.
	If not after reload, do not chain across a USE or CLOBBER.
	Recognize RETURN insns.
	(tension_vector_labels): Likewise.
	(redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a
	(possibly conditional) RETURN; use validate_change to see if such an
	insn exists. 
	Now returns non-zero if succeeds, 0 otherwise.
	Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)).
	(thread_jumps): Ignore any type of RETURN insn.
	* Makefile.in (jump.o): Depends on insn-flags.h.
	* loop.c (strength_reduce): Don't confuse conditional return with
	jump to top of loop when LOOP_TOP == 0.
	* final.c (leaf_function_p): No longer static; no longer takes an arg.
	(final_start_function): Don't pass START to leaf_function_p.
	* romp.md (return pattern): Convert to a named pattern.

Sun Jul 29 16:05:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY.

	* xm-vms.h (alloca): Use built-in alloca.

Sun Jul 29 06:47:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (fill_slots_from_thread): Restore inadvertantly deleted
	lines.

Fri Jul 27 19:53:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h,
	and output.h

Fri Jul 27 16:30:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON
	and ASM_OUTPUT_SHARED_LOCAL.

	* tm-encore.h (SHARED_SECTION_ASM_OP): New macro.
	(ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New.
	All this waiting for papers from pabuhr@watmsg.waterloo.edu.

Fri Jul 27 16:10:02 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* make-romp (CC): Set up to allow use of hc.

Fri Jul 27 15:07:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0)
	only if little-endian.

Thu Jul 26 23:19:15 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (expand_shift): Consistently call protect_from_queue
	before doing anything else.
	Always put operand1 of extzv into a register because it is SImode
	and we assume that this means a register.

Thu Jul 26 14:18:11 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_variable): Delete dead code.
	DATA_ALIGNMENT takes tree and current alignment and gives new
	alignment for a non-automatic variable of that type.
	Also apply CONSTANT_ALIGNMENT to the initial value; it now takes
	the constant and old alignment and gives the new alignment.
	Adjust DECL_ALIGN to the resulting alignment.
	Use floor_log2 consistently instead of duplicating its function.
	(get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT
	and pass type instead of decl.
	* expr.c (get_pointer_alignment): Rework to: distinguish reliably
	between expressions giving the address and those giving the item being
	addressed; use the alignment from the type of the object being
	pointer to; return 0 if the type is not a pointer; and other 
	miscellaneous changes.
	(string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well
	as NOP_EXPR.
	(expand_builtin): Allow get_pointer_alignment to fail, in which case
	we call the actual function.
	* stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN
	since it may be better aligned than required and get_pointer_alignment
	can take advantage of this.
	* tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of
	CONSTANT_ALIGNMENT to word-align string constants and
	DATA_ALIGNMENT to word-align character arrarys for builtin memory
	functions.

	* fold-const.c (rshift_double): Reset carry after each shift of
	one bit.

	* vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT.
	(ashrsi3_const): New pattern  to match it.
	(casel): Delete patterns no longer needed.
	* cse.c (cse_insn): Remove unneeded part of change of July 23.
	(fold_rtx): Convert shift with negative constant count to shift in
	the opposite direction.
	* combine.c (subst): Likewise.

	* emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before
	struct pointer and static chain values in case they want to use it.

Thu Jul 26 12:31:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* final.c (final_scan_insn): Align label table to boundary appropriate
	for items of its size.
	(get_attr_length, shorten_branches): Allow for label table alignment.

Wed Jul 25 15:06:44 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Handle uses of _IO* followed by spaces.
	Change redirections for cd when testing that directory exists.

	By Tiemann:

	* emit-rtl.c (next_cc0_user): Handle insns in which cc0
	is set and used in the same insn.

	* final.c (leaf_function_p): Look inside INSNs which contain
	a delayed-call sequence.
	(final_start_function): Test `only_leaf_regs_used' before
	`leaf_function_p', since that is likely to be faster.
	(final_scan_insns): Normally we don't have NOTICE_UPDATE_CC
	take action when processing the path of an annulled branch,
	since that path does not affect the cc's of the fall-through
	insns at all.  However, we cannot always ignore the effect of
	the cc's when processing a delayed annulled branch: when the
	delayed annulled branch follows a label and carries a
	REG_CC_STATUS note, that note must be processed.

	* genattr.c (main): Generate #defines for annulled branches
	which are consistent with documentation.

	* reorg.c: Finish recent rework by modifying code specific to
	machines that have annulling branches.

	* c-common.c (merge_component_comparisons): Previous logic did
	not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0),
	and (A != 1) || (B != 1).  Fixed by expanding the logic out
	longhand and letting the compiler do the proper cross-jumping.

	* tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name.

	* expr.c (expand_expr): For BIND_EXPR, do the init for all vars.

	* stupid.c: Include flags.h.
	* genrecog.c (main): Make insn-recog.c include flags.h.

Sun Jul 22 12:04:43 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-except.c (cplus_expand_end_except): If the user gives a
	default handler, the exception is considered caught in that
	handler.
	* cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT
	case.

	* cplus-decl.c (finish_decl): Don't emit cleanups twice.

	* cplus-class.c (finish_struct_bits): Don't call
	`fixup_vbase_offsets'.
	* cplus-tree.c (fixup_vbase_offsets): #if 0 this function.

	* cplus-cvt.c (build_default_binary_type_conversion): Handle
	arguments which are REFERENCE_TYPE.

	* cplus-method.c (prepare_inline): Set DECL_CONTEXT of this
	function's parameters.

	* cplus-decl.c (grokfndecl): When adding a new virtual function
	entry, RAISES may change a second time.

Thu Jul	 5 10:44:39 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (grokfield): Static consts need not be initialized
	in the class definition.

Mon Jul	 2 06:12:49 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-init.c (resolve_offset_ref): If BASETYPE is not a base
	type for the current class, give error and return.

Sun Jul	 1 00:18:47 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (finish_function): Throw away more code if we have
	an inline function from the interface.

	* cplus-class.c (add_virtual_function): Set DECL_VINDEX from the
	virtual function which comes from the vtable shared by
	CURRENT_CLASS_TYPE, if possibe.

	* cplus-typeck.c (build_binary_op): Call `default_conversion'
	after doing type instantiation.

	* cplus-init.c (build_new): New 2.0 interpretation: `new int (10)'
	means allocate an int, and initialize it with 10.

	* cplus-init.c (emit_base_init): Completion of fix for virtual
	function table initialization.	@@ BTW, this may now cause extra
	virtual function table initializations.	 They will all be correct,
	but they may also be redundant.	 GCC's optimizer doesn't know how
	to remove even the simplest such redundancy.

Sat Jun 30 13:54:30 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (finish_base_struct): Store BASETYPE in the
	VFIELDS chain (in its TREE_TYPE).

Fri Jun 29 09:26:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the
	type that caused this vtable to be defined in DECL_CONTEXT
	* cplus-search.c (bfs_unmark_finished_struct): Work around
	DECL_CONTEXT conflict for vtables.  @@ NOT A SOLUTION.

	* cplus-lex.c: Extend meaning of `#pragma implementation'
	to allow files to `implement' types from general headers.

Tue Jul 24 22:18:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Major rework.  Changes includes:
	(mark_target_live_regs): Scan code to compute which registers are
	live at particular insns.  Uses tables created by flow, REG_DEAD
	notes, and registers set before they are used.
	(emit_delay_sequence): Always write SEQUENCE as INSN.  Many routines
	changed to reflect this.
	(fill_simple_delay_slots): Loop for merge point when target of jump
	comes back to fallthrough code.	 Try to get insns from there.
	(fill_eager_delay_slots): Fallthrough and target case merged into new
	function fill_slots_from_thread.

	* tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to
	support the ROMP microprocessor, used in the IBM PC RT.

	* recog.c (comparison_operator): New function.

	* jump.c (jump_optimize): If putting constant into register, see
	if it is already present in the register.

Tue Jul 24 15:35:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_binary_op_nodefault): Allow compare of any
	pointer with const void *, etc.

Tue Jul 24 17:10:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (get_inner_reference): New function.
	(expand_assignment): Use it to find out about our target.
	(expand_expr, case COMPONENT_REF): Likewise.
	(expand_expr, case COND_EXPR): If can do store-flag, convert
	X ? A+1 : A to A + (X!=0); fold-const made the former from the latter.
	Only create label when we know we will need it.
	Simplify unnessarily complex call to safe_from_p.
	(expand_expr): Make new variable UNSIGNEDP and use it instead
	of TREE_UNSIGNED (type).  Also, consistently use existing
	variable TYPE instead of TREE_TYPE (exp) and similarly for MODE.

Tue Jul 24 13:50:33 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (collect_expansion): Error if ## at beg or end.

	* c-decl.c (grokdeclarator): Error for long, etc. with nonarith type.
	Error for signed or unsigned with floating type.
	Error for initialized parm.

	* config.gcc: Make make_var_file depend on host machine, not target.

Tue Jul 24 13:40:35 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers.

	* c-typeck.c (type_for_size, type_for_mode): Delete from here.
	(binary_op_error, shorten_compare, truthvalue_conversion): Likewise.
	* cplus-typeck.c: Delete second copy from here.
	* c-common: Move above functions to here.

Tue Jul 24 12:20:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (path_include): Fix typo in var name.

Mon Jul 23 17:46:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* config.gcc: Remove redundant assignment to tm_file for 88000.
	Fix typo when assigning to make_var_file.

	* function.c (optimize_bit_field): Fix typo in change_address call.

Mon Jul 23 16:59:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (decode_reg_name): Ignore % at beginning of name.
	Support extra names defined by ADDITIONAL_REGISTER_NAMES.
	* tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it.

	* dbxout.c (dbxout_init): Handle new macros
	ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY.
	* sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME.

Mon Jul 23 16:50:32 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too.

	* vax.md (call_value_pop): Fix typo in argument number.

	* cse.c (cse_insn): Shift's aren't associative if in different
	directions, even if same rtx_code.
	Try to fold result of associating the operation in case it is now
	trivial.

	* jump.c (mark_modified_reg): New function.
	(thread_jumps): Look at insns between target of first jump and the
	second jump.  Mark any registers that they modify and record if they
	modify memory.
	Don't go past a CODE_LABEL.
	If we pass an unconditional jump, follow it.
	Use prev_nonnote_insn instead of explicit loop.
	(rtx_equal_for_thread_p): Consult recorded information to see if
	memory of registers were modified prior to second jump.
	* Makefile.in (jump.o): Now needs hard-reg-set.h.

Sat Jul 21 13:58:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (O_RDONLY): Define it if not defined.

	* c-decl.c (finish_decl): No error for nonstatic incomplete array.

Sat Jul 21 08:24:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* alliant.md (call patterns): Function address must be memory operand.
	* convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise.

Thu Jul 19 16:06:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (path_include): New function.
	(main): Call that to handle CPATH envvar.

	* varasm.c (assemble_variable): Error if size exceeds 2**32-1.

	* emit-rtl.c (init_emit_once): Pass write_symbols to this function
	(init_emit): Not this one.  All callers changed.

Tue Jul 17 21:24:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (update_equiv_regs): Don't replace a register with
	an equivalence if the insn making the equivalence has a source
	different from the equivalent value.

Tue Jul 17 16:47:42 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_block_move): Allow movstr* to fail.

Tue Jul 17 15:19:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (change_address): Don't call memory_address if reload
	is in progress, not just after it has completed.

Mon Jul 16 00:34:27 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (can_reverse_comparison_p): New function.
	(jump_optimize): In if (x) ... else x = 0; reverse comparison
	if second operand of IF_THEN_ELSE is PC; use new function to
	validate the reversal.
	(jump_back_p): Use new function to see if safe to reverse comparison.

Sun Jul 15 17:03:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Bug in last change; reject uncond jump
	where conditional is expected.

	* flow.c (mark_used_regs): Handle autoincrement for *p
	followed by q = p+size (neither one dead).

Sat Jul 14 22:37:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt.
	Remove (and...) from second arg of shift.
	Remove (and...) from around shift.

Sat Jul 14 21:35:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (update_equiv_regs): New function.
	(local_alloc): Call it.
	(block_alloc): Don't handle REG_EQUIV notes here; now done in
	update_equiv_reg.
	
	* calls.c: Include insn-flags.h.
	* Makefile.in (calls.o): Likewise.

Sat Jul 14 13:28:28 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins.

	* vax.md (SImode bit-field patterns): Use nonmemory_operand.

	* jump.c (jump_optimize):
	For if (...) x = 1; else x = 0; x must be integer.

	* gcc.c (default_compilers): Pass -P to cpp.

Thu Jul 12 23:38:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

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

	* sparc.md (call recognizers): Don't allow address arithmetic.

Thu Jul 12 21:47:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (change_address): If reload has completed, don't call
	memory_address.	 Instead, abort if address is not valid.

Thu Jul 12 20:41:32 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* calls.c (emit_call_1): Handle vax, without call and call_value.

Thu Jul 12 20:39:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (merge_equiv_classes): New function, from record_jump_equiv.
	(record_jump_equiv): Use new function.
	(gen_lowpart_if_possible): New function, based on gen_lowpart.
	(cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note
	that (subreg BAR) is an equivalent of FOO.
	* integrate.c (expand_inline_function): Likewise.

	* combine.c (subst): Check for constant in merge of shift into
	ZERO_EXTRACT.
	(gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND:

	* emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register,
	return a new rtx for it in the proper mode, rather than a SUBREG.

Wed Jul 11 17:05:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): If already have a REG_WAS_0 note, don't make
	another one.
	Rework some loops on SETs to eliminate duplicate code and clean up
	a bit.

	* rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these
	to work on pseudos as well as hard registers.

	* optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned
	to see if register is mentioned in insn.

Wed Jul 11 16:56:01 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Don't optimize jumps to store-flags
	if after register allocation.  And don't do it if memref is used.

Wed Jul 11 16:12:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter):
	New functions.
	({next,prev}_{real,active}_insn, next_label): Rework to allow
	argument of zero; return zero in that case.
	(next_active_insn, prev_active_insn): If reload is not yet complete,
	do the same thing as next_real_insn and prev_real_insn.
	(next_cc0_user): Fix some bugs and typos.

	* rtlanal.c (reg_mentioned_p): Allow searches for labels to work.

Wed Jul 11 12:25:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times.

Tue Jul 10 22:54:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* rtl.def (trap): New code.

Tue Jul 10 17:48:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside
	a NON_LVALUE_EXPR.
	(real_zerop, real_onep, simple_cst_equal): Likewise.

Tue Jul 10 17:05:50 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y, objc-parse.y, cplus-lex.c (yylex):
	Terminate token_buf after integer.

Mon Jul	 9 15:22:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-decl.c (duplicate_decls): Correct test for extern followed by
	static function declaration.

Mon Jul	 9 14:13:06 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Move warning and error
	about initializer with extern to the same place.  Do one or the other.

	* rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE.

Sun Jul	 8 14:12:21 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl):
	New functions.
	(flag_pedantic_errors): New variable controls them.
	* c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings.
	* varasm.c: Likewise.
	* gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc.
	* cccp.c (pedwarn): New function.  Many calls to `warning' changed.

	* c-common.c (c_expand_expr_stmt): New function.
	Error about incomplete type moved here.
	* expr.c (expand_expr): Error deleted from here.
	* c-parse.y: Use c_expand_expr_stmt where suitable.

	* flow.c (propagate_block): Set following_insn_dead on insn after test.
	(mark_used_regs): Test that var; don't call insn_dead_p here.

Fri Jul	 6 13:05:01 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_indirect_ref):
	No error if result is incomplete array.

	* expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE.
	Don't extract a bigger unit from memory than this.
	* expr.c: Callers changed.
	(store_field): New arg TOTAL_SIZE; callers changed.

	* out-ns32k.c (print_operand_address): Changes from Ian Dall.
	* xm-ns32k.h: Use built in alloca.
	* ns32k.md (ashlsi3): Don't forget to return a value.
	(movsf): Output floating constants only if GAS_SYNTAX.
	(call, call_value): Support JSR_ALWAYS.
	Change handling of bsr if GAS_SYNTAX.
	(bit test patterns): Use g constraint for op1 and rm for op0.

Thu Jul	 5 21:53:10 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions.
	* fold-const.c (fold): Don't combine two conversions if one is
	signed and the other is unsigned.
	* integrate.c (copy_parm_decls): Finish making last change.

Thu Jul	 5 18:26:03 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (safe_from_p): If EXP is readonly memory, any memory location
	is safe from it.

Thu Jul	 5 15:05:19 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__fixunsdfsi): Change > to >=.

	* c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED.
	(grokdeclarator): Don't warn of array if elt type being defined.

	* c-typeck.c (build_conditional_expr): Handle ((void *) 0).
	Allow 0 versus function pointer.

Thu Jul	 5 08:05:09 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): If machine has post-increment, don't associate
	PLUS operations if they are both adding the same constant that is
	a power of two.	 Similarly for post-decrement.

Wed Jul	 4 19:04:20 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* flow.c (mark_used_regs): Don't scan a comparison if the following
	insn that uses the cc's is dead.

	* flow.c (propagate_block): If cc-using insn is dead, so is previous.

	* expmed.c (emit_store_flag): New function.

Wed Jul	 4 18:45:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-typeck.c (common_type, comptypes, default_conversion):
	Use TYPE_READONLY in type to indicate const type; use TREE_READONLY
	in decl to indicate object will never change.
	(build_unary_op, readonly_warning, build_modify_expr): Likewise.
	(c_expand_asm_operands): Likewise.
	* cplus-class.c (finish_struct_bits): Likewise.
	* cplus-cvt.c (build_type_conversion): Likewise.
	* cplus-type2.c (readonly_warning_or_error): Likewise.
	* cplus-typeck.c (default_conversion, build_unary_op): Likewise
	(build_modify_expr, c_expand_asm_operands): Likewise.

	* cplus-cvt.c (popclass): When making INDIRECT_REF, don't set
	TREE_READONLY from TYPE_READONLY.

Wed Jul	 4 15:16:37 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Fix bugs in last change.

Wed Jul	 4 07:52:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test
	for structure-value stack slot, which no longer exists.

	* reload1.c (bad_spill_regs): Should be static.

	* combine.c (subst, gen_lowpart_for_combine): Propagate
	RTX_UNCHANGING_P when making a new MEM.
	* c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that
	de-reference of pointer-to-const is not readonly so don't set
	RTX_UNCHANGING_P.
	* explow.c (validize_mem): Use change_address so flags get copied
	to new MEM.
	* expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn):
	Likewise.
	(do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table.
	* function.c (optimize_bit_field, instantiate_virtual_regs_1):
	Preserve flags when making new MEM.
	* loop.c (invariant_p): Memory references to an invariant address
	are invariant if RTX_UNCHANGING_P is set.
	* recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P
	when making new MEM.
	* reload.c (find_reloads_toplev): Likewise.
	* reload1.c (alter_reg): Stack slot is readonly if pseudo was.
	(eliminate_regs): Propagate RTX_UNCHANING_P in new MEM.
	* varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM.

Tue Jul	 3 21:50:58 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (expand_and): New function.

	* stmt.c (expand_expr_stmt): 
	If value is volatile, fetch it and then ignore it.

	* expr.c (expand_expr): Error if variable type is incomplete.

	* c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef.

Tue Jul	 3 18:03:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1"
	In "(a & 1) != 0", can convert to simply "a & 1".
	* combine.c (subst): Convert branch on sign bit to signed comparison
	with zero (possibly adding a SUBREG).
	Convert ZERO_EXTRACT of the low-order bit of a right shift into a
	ZERO_EXTRACT of the proper bit.

Mon Jul	 2 12:07:08 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Convert conditionals for storing one
	value into a store-flags insn.

	* vax.md (call_pop, call_value_pop): New names for call patterns.
	Include the popping explicitly in the rtl. 

	* jump.c (jump_optimize): Delete case for condjump followed
	by unconditional to same label; was special case of another case.
	Switch back to next_active_insn or prev_active_insn in a few cases.

	* function.c (init_function_start): Initialize
	frame_pointer_needed to zero.

	* i386.md (tstsf): Clobber reg 0 in SImode.

Sun Jul	 1 14:31:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c: Use next_real_insn instead of next_active_insn.
	Likewise for prev_active_insn.	USE insns make a difference!

	* function.c (assign_stack_temp): Use largest alignment if BLKmode.

	* stddef.h: Check __SIZE_T also.

	* toplev.c: Include types.h first.

	* i386.md (trunc*2): Don't allow moving symbolic constant to memory.
	Use wider move only for symbolic constant.

	* tm-convex.h (LINK_SPEC): Posix link flags.
	* tm-convex.h (STARTFILE_SPEC): Posix start files.
	* tm-convex[12].h (CPP_SPEC): Posix defines.
	* tm-convex[12].h (LIB_SPEC): Posix libraries.
	* tm-conv[12]os7.h: New files.
	* config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there.

	* xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix.
	* xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up.

	* tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND):
	  use %e instead of %#g, which is broken or non-posix.

	* tm-convex.h (current_section_is_text): make extern.
	* out-convex.c (current_section_is_text): define here.
	* tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options):
	  useless; remove.
	* tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from
	  system includes.

Sat Jun 30 14:01:52 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (pending_xref_error): Fix typo in arg order.

	* cccp.c (do_include): Mention non-ex system headers for -M.
	Guess the directory.
	(check_macro_name): Should not be static.

	* rtl.def (inline_header): Add a vector at the end.
	* rtl.h (ORIGINAL_ARG_VECTOR): New macro.
	(RTVEC_ELT): New macro.
	* emit-rtl.c (gen_inline_header_rtx): New argument for that vector.
	* integrate.c (save_for_inline): Copy arg rtls if nec, then make
	an arg vector to put in the header.
	(expand_inline_function): Look in that vector for the rtl.
	(copy_parm_decls): Likewise.

	* c-decl.c (duplicate_decls): Warn if function declared external
	and later static.

Fri Jun 29 13:29:24 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (handle_directive): Supply missing *.

Thu Jun 28 21:39:43 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* m68k.md (muldf3 for 68881): Generate fscale if appropriate.
	* out-m68k.c (floating_exact_log2): New function.

Wed Jun 27 17:19:36 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (finish_struct): New handling of zero-width bit fields.
	Store appropriate data in them like other bit fields.
	Don't delete them until after layout.
	Don't mess with alignment of following field; set its own.
	If PCC_BITFIELD_TYPE_MATTERS, get alignment from type.
	* stor-layout.c (layout_record): For zero-width field, if
	PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure.
	(layout_decl): Don't abort for zero-width if no name.

	* function.c (expand_function_start):
	Output ...FUNCTION_BEG note here, after assign_parms.
	(init_function_start): Not here.

	* sdbout.c (sdbout_record_type_name): Conditionalize for 
	SDB_ALLOW_FORWARD_REFERENCES.  Don't use typedef names, just tags.
	(sdbout_begin_block): Likewise.
	(plain_type_1): Likewise.  Also move code to output structure size.
	(sdbout_symbol): Output the type if not yet output.
	Don't output top-level initialized variables yet.
	Avoid crash if variable never got any rtl.
	Add conditional for SDB_AUTO_NORMALIZE_OFFSET.
	(sdbout_toplevel_data, sdbout_queue_anonymous_type): 
	(sdbout_dequeue_anonymous_type): New functions.
	(sdbout_tags): Reverse the list first.
	Output enums before other things.
	(sdbout_reg_parm): Fake a name if necessary.  Use C_REGPARM.
	* toplev.c (compile_file): Call sdbout_toplevel_data.

	* c-typeck.c (convert_for_assignment): Disable warnings for pointers
	to const and volatile functions.

	* expr.c (expand_expr): Mark variable as used.

Tue Jun 26 17:05:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-sparc.h (LINK_SPEC): Delete spurious `-'.

	* tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero.
	(ASM_OUTPUT_DOUBLE_OPERAND): Likewise.

	* stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields.

Tue Jun 26 01:48:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* tree.c (dump_tree_statistics): Dummy function.  To be filled in
	later when we decide what tree statistics should be measured.
	(build): Now ok to take arguments of length 1.	`build1' cannot be
	used to allocate 's' tree nodes whcih might have length 1.

	* All GNU C++ files updated to 1.37.2 (alpha 2).  NOTE: cplus-decl.c
	needs to be fixed to not us RTL.  I'm leaving this file in its
	current state so that the GNU C++ compiler at least compiles.

	* All SPARC files: modified to use registers %f30 and %f31 as
	temporaries for holding floating-point zero.  Used to use %f0 and
	%f1, which made it impossible to compare function return values with
	zero.

Mon Jun 25 16:54:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* function.c (init_function_start): New args give file/line for first note.
	* c-decl.c (store_parm_decls): Pass them.
	* integrate.c (output_inline_function): Pass dummies for them.
	* final.c (final_start_function): For sdb, don't output a line number, 
	just set last_linenum.

	* c-parse.y (hash, is_reserved_word): New keyword __label__.

	* stddef.h: Check _T_SIZE as well as _SIZE_T.

Sun Jun 24 16:09:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR.

Sat Jun 23 09:52:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as
	NOTE when matching peephole.

Fri Jun 22 17:40:56 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (process_init_constructor): Set up TREE_PURPOSE
	in record constructor elements.

	* cexp.y (exp1): If pedantic, warn about commas.
	(tokentab2): Add entries for ++ and --.
	(yylex): Error if those are used.

	* c-decl.c (lookup_tag): For wrong kind of type, just set flag.
	(shadow_tag): Clear the flag.
	(pending_xref_error): Print the error message here if flag set.
	* c-parse.y (setspecs): Call that.

	* calls.c (emit_call_1): Use call_pop and call_value_pop insns
	to record when the called function pops its args.

Fri Jun 22 16:43:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg.

	* tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with
	INITIAL_FRAME_POINTER_OFFSET.

	* tm-vax.h (RTX_COSTS): Show shifts are relatively expensive.

Fri Jun 22 15:05:24 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Makefile.in (GEN): New variable.
	(P): New variable.
	(cc1, cc1plus, cc1obj): Use $(P).

	* cccp.c (check_macro_name): New subroutine taken from do_define.
	(do_define, do_undef): Use this.
	(do_undef): Warn if junk follows name.
	(handle_directive): Always ignore empty directive.
	Warn if \f or \v in directive.	Error for malformed directive name.

	* tree.h (BUILT_IN_NEXT_ARG): Define it.
	* c-decl.c (init_decl_processing): Declare __builtin_next_arg.
	* expr.h (current_function_arg_offset_rtx): Declare it.
	* function.c (assign_parms): Set that variable at end.
	* expr.c (expand_builtin): Implement __builtin_next_arg.
	* stdarg.h (va_start): Use __builtin_next_arg.

	* c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT.

Fri Jun 22 07:07:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (final_scan_insn): Put label for jump table in same section
	(read-only data) as jump table.

	* loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY.

Wed Jun 20 13:03:53 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad.
	(STACK_BOUNDARY): Make it 32.
	(CPP_SPEC): Add spaces.	 Define _APOLLO_SOURCE if not -ansi.

	* c-common.c (check_case_value): New function.
	* c-parse.y (stmt, when parsing case): Use that.
	Add new rule for case range.

	* reload1.c (reload_inheritance_insn): New variable.
	(reg_reloaded_insn): New variable.
	(choose_reload_regs): Update those variables.
	(emit_reload_insns): Use them to remove deaths from insns
	that used input reloads.
	(reload_as_needed): Clear reg_reloaded_insn when necessary.

	* m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit.

	* dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes.
	Use in place of enum __stab_debug_code.

Tue Jun 19 22:56:40 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_increment): For preincrement, don't load value twice:
	use TEMP as input to addition.

Tue Jun 19 06:53:13 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead
	of gen_{add,sub}2_insn since the latter will abort if the constant is
	out of range for the machine.

Tue Jun 19 00:35:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* local-alloc.c (post_mark_life): Don't decrement DEATH
	if it equals BIRTH.  Don't ever increment DEATH.

	* varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr.
	Handle missing values.	Use field in the tree_list, if any.
	(output_addressed_constants): Don't die if value is missing.
	* c-typeck.c (process_init_constructor): Handle index and field specs.
	* c-parse.y (initlist): Parse them.

Mon Jun 18 15:58:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c, cplus-decl.c (duplicate_decls):
	Types don't "match" if one is error.

	* c-parse.y (label_decl): Use new keyword __label__, not colon.

	* c-parse.gperf (__label__): New keyword.

	* mips.md (probe): Make a single insn, just a memref.

Mon Jun 18 14:27:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (loop_optimize): Set max_luid to last luid + 1, as documented.

	* local-alloc.c (qty_clobber): New variable.
	(local_alloc): Allocate and initialize it.
	(reg_is_set): Set qty_clobber for a clobber of a pseudo used only
	in this insn.
	(find_free_reg): Pass qty_clobber to post_mark_life.
	(post_mark_life): If CLOBBER if non-zero, register isn't live after
	its death insn.

	* integrate.c (expand_inline_function): Don't call try_constants on
	an insn that sets CC0 until we have processed the next insn.  Then
	call it on both.  This is because the recognizer for these insns
	may want to look at the user of CC0.

Mon Jun 18 13:25:59 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted.
	(ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified.
	Don't output comments.	Use more specific predicates.

	* mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's.
	Also simplify and don't output comments.
	(anonymous patterns for those insns): Deleted.
	(loading floating constant): New patterns added.
	(move qi to si pattern): Deleted; ridiculous.
	(movdi, movsi, movhi, movqi): No need to check for moving reg to self.

	* mips.md (nop): Use .set noreorder to placate assembler.

Sun Jun 17 20:01:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (set_spec): Don't use `name' for both old spec and name of
	spec.  Use new var old_spec for the former use.
	Don't use (char *) 0 for null spec; use a null string instead.

	* jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC.
	Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC.
	(mark_jump_label): Don't count the use of a vector table label in 
	ADDR_DIFF_VEC.
	(delete_insn): Can now handle ADDR_DIFF_VEC.
	(delete_labelref_insn): New function.
	(redirect_tablejump): Call new function to delete insn that references
	the jump table.

Sun Jun 17 01:19:26 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* genemit.c (gen_expand): Don't generate `operands' if size is 0.

	* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple
	of the alignment of the operand.

	* i860.md (signed bit field recognizers): Don't shift by >31 bits.

	* out-i860.c (output_delayed_branch): Pass register properly to
	load_opcode.

	* mips.md (general/fp reg move patterns): Use codes L, M, D.
	(movdi): Likewise.  And don't output useless comments.
	Use the assembler temp reg for non-offsettable address.
	(movsi, movhi, movqi): Output nothing for move from reg to itself.
	Output li to load a constant.  Use `move' instead of `add'.
	Don't output useless comments.
	(load-address pattern): Deleted; handled by addsi3 pattern.

	* mips.md (addsi3, mulsi3): Make both input predicates arith_operand
	since they are commutative.
	(andsi3, iorsi3, xorsi3): Likewise.

	* tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New.

	* tm-mips.h (PRINT_OPERAND): New codes D, L, M.
	* mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap.
	Use new print code D.

	* mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific.
	(andhi3, ..., andqi3, ...): Patterns deleted.
	(patterns for nor): New anonymous patterns.
	* out-mips.c (uns_arith_operand): New function.

	* mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*):
	Use more specific predicates.

	* mips.md (addhi3, ..., addqi3, ...): Patterns deleted.
	(addsi3, subsi3, mulsi3, divsi3): Make predicates more specific.
	Delete useless comments from assembler code.
	Use more generic op codes rather than special cases such as addiu.
	(divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns.
	(abssf2, absdf2): New patterns.

Sun Jun 17 06:56:10 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers
	in fixed_regs are even cheaper than pseudos.

	* function.c (instantiate_virtual_regs_1): If valid, replace PLUS
	whose second operand would be zero with its first operand.

Sun Jun 17 00:17:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sdbout.c (sdbout_symbol): Get right regno for var-length object.

	* combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if
	they truncate.	Handle ASHIFTRT like LSHIFTRT.
	(try_combine): Call simplify_set_cc0_and in all those cases.
	(subst): Handle (zero_extract (subreg (lshift (reg )))).

Sat Jun 16 23:11:52 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.c (get_narrower, get_unwidened): Bit field test was backwards.

Sat Jun 16 19:07:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold): Fix typo in test for distributing binary
	operator over conditional and compound expressions.

	* genoutput.c: Remove vestiges of obsolete and never used
	INSN_MACHINE_INFO.

	* rtl.def (MATCH_PARALLEL): Add new RTL code.
	* genconfig.c (walk_insn_part): Support MATCH_PARALLEL.
	* genemit.c (max_operand_1): Likewise.
	(gen_exp): Just write operand for MATCH_PARALLEL.
	(gen_expand, gen_split): Support MATCH_PARALLEL.
	* genrecog.c (walk_rtx): Add support for MATCH_PARALLEL.
	* genoutput.c (scan_operands): Suppport MATCH_PARALLEL
	like MATCH_OPERATOR.
	* genpeep.c (match_rtx): Add code to support MATCH_PARALLEL.
	Don't write unnecessary cast to `rtx'.
	* genrecog.c (add_to_sequence): Simplify handling of mode.
	Support MATCH_PARALLEL.

	* expr.c (move_block_{to,from}_reg): Support load/store multiple.
	* function.c (instantiate_virtual_regs_1): If can't substitute
	new pseudo for virtual register, try doing the substitution
	globally throughout the entire insn.  This lets load/store multiple
	insns refer to virtual registers in their addresses.
	
	* genrecog.c (write_split_tree, write_split_subroutine): Deleted.
	(break_out_subroutines, write_subroutine, write_tree):	Accept
	parameters that indicate whether we are making gen_split or gen_recog.
	(main): Pass new parameters to break_out_subroutines and write_tree.

	* final.c (final_scan_insn): Process insns that set CC whenever a
	REG_CC_STATUS note is found; not only JUMP_INSNs can use CC.
	When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status
	each time.

	* recog.c (validate_replace_rtx): New function that tries to 
	replace all occurrences of an object within an insn and see if the
	resulting insn is valid.

Thu Jun 14 06:58:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all
	all insns in the block that modify the output.	Write them on the
	final insn even if we don't put a REG_EQUAL note there.

	* stmt.c (expand_return): Only distribute return down a conditional
	expression if tail recursion is possible in a branch.

	* expr.c (expand_expr): Remove obsolete reference to when we had
	a shared structure-value slot.

	* jump.c (get_label_before, get_label_after, follow_jumps): No longer
	static.
	* rtl.h: Define them.

Mon Jun 11 17:35:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (INSN_LUID): Check for INSN_UID above the area that we
	know about.
	(loop_optimize): Cannot use INSN_LUID as lhs.
	(scan_loop): If first jump is to label made by loop, we can't
	tell if it is in range or not, so reject loop.
	Reject loop if SCAN_START was an insn previously made by loop since
	we won't know its luid.
	Only call loop_reg_used_before if argument has known luid.
	Mark partial invariant as global if its insn was made by loop.
	(ignore_some_movables): Don't assume all invariants have luids.
	(strength_reduce): Use no_labels_between_p instead of
	labels_in_range_p.
	Don't look at luid of insns for which one doesn't exist.
	(valid_initial_value_p): Reject initializations in insns whose
	luid we don't know.

	* loop.c (product_cheap_p): Put all our rtl into a separate obstack
	and free memory from it.  If we use current_obstack, we may free
	memory allocated by gen_reg_rtx, which must be preserved.

	* c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field
	is -1, not 1.
	* c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't
	merge comparisons, don't use result of rewrite_for_merged_ref;
	comparisons with zero are more efficient.

	* protoize.c (main): Don't declare as extern.

	* c-aux-info.c (gen_aux_info_record): Don't declare extern.

	* genemit (gen_split): Rework to fix numerous bugs and typos.

	* function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)).

Wed Jun	 6 20:03:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gencodes.c (main): Count a code number for DEFINE_SPLIT.

	* rtlanal.c (note_store): Pass SUBREG of a hard register to function.
	(reg_overlap_mentioned_p): Handle receiving SUBREG of hard register.
	* integrate.c (mark_stores): Likewise.
	* local-alloc.c (reg_is_set, reg_is_born): Likewise.
	* reload1.c (mark_not_eliminable): Likewise.

	* loop.c (move_movables): Don't blow up if moving last real insn
	in function.

Wed Jun	 6 19:44:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gcc.c (default_compilers): Pass -traditional before -f*.
	Delete -gg option.

Sun Jun	 3 22:44:12 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Warn about extern with initializer.

Sun Jun	 3 22:32:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genrecog.c (main): Don't call write_tree with null if no insns
	were in file.

Sat Jun	 2 21:49:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target
	unless zero or safe_from_p rejects it.
	(expand_expr, conditional cases): Likewise.

Sat Jun	 2 14:46:18 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Handle const and volatile with parm
	specified as function type.

Fri Jun	 1 16:13:39 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so
	it now is one per operation type, rather than one per
	function unit.
	* genattr.c (write_units): Write out new function names and
	function unit table structure.
	* genattrtab.c (struct function_unit_op): New structure.
	(struct function_unit): Updated for new definition of
	DEFINE_FUNCTION_UNIT.
	(SIMPLIFY_TEST_EXP): New macro to reduce number of function calls
	to simplify_test_exp.  Replace all call to the function with
	uses of the macro.
	(check_attr_test, make_alternative_compare): Show that EQ_ATTR with
	attribute of "alternative", MATCH_OPERAND, and comparison cases can't
	be simplified.
	(expand_units, gen_unit, write_function_unit_info): Support new
	meaning of DEFINE_FUNCTION_UNIT.
	(simplify_test_expr): Rework AND and IOR cases to reduce rescans.
	Once an expression has been simplified, set RTX_UNCHANGING_P so
	we won't try simplifying it again.  Don't do this if INSN_CODE == -2.
	(write_attr_set): Don't make a recursive call if we know that
	the test we are writing will always be false.  Also clean up a bit.
	(main): true_rtx and false_rtx don't need to be simplified.
	Write gen_attr_... routines before special routines.

Fri Jun	 1 14:17:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
	Round frame size to multiple of STACK_BOUNDARY.

Fri Jun	 1 09:38:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on
	insn that contains REG_EQUAL note instead of insn doing computation.

	* cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time.
	Likewise for my_gettime to my_get_run_time.

	* Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o):
	These do not depend on insn-codes.h.
	* function.c: Explicitly include insn-codes.h to make it clear that it
	is needed for the values of the CODE_FOR_... macros.

Thu May 31 12:59:28 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__trampoline): New function.
	* Makefile.in (LIB2FUNCS): Compile it.
	* tm-m68k.h (TRAMPOLINE_ALIGN): Define it.
	* function.c (trampoline_address): Handle extra alignment.
	* tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): 
	Redefine to transfer via __trampoline.
	(TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c.

	* fold-const.c (fold): Preserve sign on constant when other terms
	cancel (after call to split_tree).

Thu May 31 12:39:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion.

	* function.c (assign_parms): Fix typo getting mode of result.

	* cse.c (cse_basic_block): Don't go past TO if it is target of
	followed jump.

Wed May 30 21:31:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (fndef, nested_function, notype_nested_function):
	Use YYERROR1 instead of YYERROR. 
	(YYERROR1): New macro.
	* cplus-parse.y, objc-parse.y: Likewise.

Tue May 29 21:53:19 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* optabs.c (expand_float): Don't use hard reg as intermediate.

	* c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE.
	* cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y.

	* toplev.c (get_run_time): Renamed from gettime.

Mon May 28 15:47:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_push_insn): Don't push by pieces if alignment
	forces use of small pushes that do problematical padding.

	* tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS.
	(STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE.
	(REG_PARM_STACK_SPACE): Now takes arg and has value.
	(ACCUMULATE_OUTGOING_ARGS): Define this.
	(FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use
	current_function_outgoing_args_size, not ..._pretend_...
	(INITIALIZE_TRAMPOLINE): Use size_int.

	* varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO
	if it is defined.

	* tree.def (BIND_EXPR): Add operand, which holds the BLOCK.
	* expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK.
	* dbxout.c (dbxout_block): Test the flag in the BLOCK.
	* sdbout.c (sdbout_block): Likewise.
	* symout.c (symout_function): Likewise.
	* c-parse.y (stmt expr rule): Corresponding change.

Sun May 27 20:53:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* caller-save.c (save_call_clobbered_regs): Correctly mark registers
	live for multi-word pseudos.

Sat May 26 13:42:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sdbout.c (sdb_begin_function_line): Now -1 if not in use.
	(sdbout_end_function): Set it to -1.

	* tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT.
	Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT
	to ..._EXPR.
	(struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt):
	(struct tree_case_stmt): Types deleted.

	* tree.c (make_node, copy_node): Treat 's' like 'e' for size of node.
	In make_node, make BLOCK and BIND_EXPR savable.
	* expr.c (expand_expr): Rename, and use TREE_OPERAND to get body.
	* cplus-init.c (build_vec_delete): Likewise, and build appropriately.
	* print-tree.c (print_node): No special handling for these and IF_STMT.
	* stmt.c (warn_if_unused_value): Likewise.

	* tree.def (BLOCK): New tree code for binding blocks.
	* tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS):
	(BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_...
	(STMT_...): Except for those, all deleted.
	(BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any.
	(BLOCK_CHAIN): New macro.
	* tree.c (build_block): Renamed from build_let.
	(decl_type_context, decl_function_context): Corresponding change.
	* print-tree.c (print_node): Likewise.
	* c-decl.c, cplus-decl.c (poplevel): Likewise.
	* integrate.c (copy_decl_tree): Likewise.
	* function.c (setjmp_protect, uninitialized_vars_warning):
	(instantiate_decls_1): Likewise.
	* c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise.
	* dbxout.c (dbxout_block): Expect only BLOCKs in this tree.
	Ignore those with controllers that are not marked used.
	* sdbout.c (sdbout_block): Likewise.
	* symout.c (symout_function): Likewise.

	* tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT.
	* expr.c (expand_expr): Delete handling of IF_STMT.
	* tree.c (build_if, build_loop, build_case, build_goto): Deleted.
	(build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise.
	(build_compound): Likewise.
	* cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT.

Sat May 26 13:23:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (struct arg_data): Add new fields slot_offset and stack_slot.
	(expand_call): Compute both location of start of stack slot and	the
	place in the stack slot where the first byte of the argument will be
	placed.
	Use stack_slot when loading a BLKmode object into registers.
	When loading into registers, don't check reg_parm_seen, just look
	at args[i].reg.
	(expand_call, store_one_arg): Save and restore stack slot starting
	from beginning of slot, not begining location where arg is stored.
	(store_one_arg): After calling emit_push_insn, argument is really
	at arg->stack_slot instead of arg->stack because if we want to
	load it into registers, we include any padding.

Sat May 26 01:37:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision.

	* tree.c (init_obstacks, init_tree_codes): init_tree split in two.
	* toplev.c (compike_file): Call them.

Fri May 25 16:40:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS.
	* varasm.c (output_constructor): Bitpos is zero for array (field == 0).

Fri May 25 00:48:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (final_scan_insn): Restore inadvertent deletion in change
	of May 24th.

Fri May 25 00:13:12 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* print-tree.c (print_node): Print some missing fields for decls.
	(print_node_brief): Always print value of integer or real constant.

Thu May 24 21:28:36 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fold-const.c (real_zerop): Function deleted; was redundant.

	* tree.h (DECL_OFFSET): Macro deleted.
	(struct tree_decl): Field deleted.

	* c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF,
	use DECL_FIELD_BITPOS and handle non-constant values.
	* stor-layout.c (layout_record, layout_union): Likewise.
	* expr.c (expand_assignment, store_constructor, expand_expr): Likewise.
	* dbxout.c (dbxout_type): Likewise.
	* sdbout.c (sdbout_one_type): Likewise.
	* c-common.c (merge_component_comparisons, make_merged_ref): Likewise.
	* print-tree.c (print_node): Likewise.
	* varasm.c (decode_addr_const, output_constructor): Likewise.
	* objc-actions.c (build_ivar_list_initializer): Likewise.
	* cplus-typeck.c (build_component_addr): Likewise.
	And preserve TREE_CONSTANT flag.
	(unary_complex_lvalue): Likewise.
	
	* tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'.
	Now meaningful only if function is built in.
	(DECL_BUILT_IN): New flag macro.
	* c-decl.c (builtin_function): Set the flag.
	(pushdecl, duplicate_decls): Use and set it.
	* c-typeck.c, cplus-typeck.c (build_function_call): Test it.
	* cplus-decl.c (define_function): Set the flag.
	(pushdecl, duplicate_decls): Use and set it.
	* expr.c (expand_expr, preexpand_calls): Test it.

	* tree.h (DECL_INCOMING_RTL): New macro.
	* function.c (assign_parms): Set up that field.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use
	DECL_OFFSET for a parm; it is not set.	Use DECL_INCOMING_RTL.
	(PARM_PASSED_IN_MEMORY): New macro.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise.
	(PARM_PASSED_IN_MEMORY): New macro.

	* cccp.c (macarg): When popping frame, free via free_ptr, not buf.

Thu May 24 18:04:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (next_cc0_user): New function.
	* recog.c (next_insn_tests_no_inequality): Use next_cc0_user.
	* rtl.h: Define next_cc0_user.

	* cse.c (cse_insn): Make canon_reg calls in separate loop over the
	SETs to avoid problems when MATCH_DUPs are present in an insn
	pattern.
	Don't canon CLOBBER in PARALLEL.  Instead, canon MEM of CLOBBER,
	both within a PARALLEL and standalone.	Also, call note_mem_clobbered
	only for MEM.

Thu May 24 13:08:25 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__negdi2): Make this inline for other functions.

Thu May 24 07:15:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (no_labels_between_p, prev_real_insn, next_real_insn):
	(prev_active_insn, next_active_insn, next_label): Delete from here.
	* rtlanal.c (no_labels_between_p): Put here.
	* emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn):
	(next_active_insn, next_label): Add to here.

	* c-common.c: Define NULL so NULL_TREE macro will work.

	* cplus-typeck.c (common_parms): Use oballoc and obfree to
	avoid external current_obstack.

	* cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to
	canon_hash.
	(cse_insn): When just recording jump insn, show it doesn't set CC0
	and set it as previous insn.

	* genoutput.c (gen_split): Fix typo in comment.

	* reorg.c: No longer need define next_label and next_real_insn as
	extern.

	* toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of
	obsolete HAVE_DELAYED_BRANCH; include insn-attr.h.

	* final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES.
	Eliminate references to obsolete DBR_INSN_SLOTS.
	(get_attr_length): Support ADJUST_INSN_LENGTH.
	(get_attr_length, shorten_branches): Handle a SEQUENCE built for an
	insn with filled delay slots.
	(final_scan_insn): Avoid unnecessary call to recog_memoized.
	Use validate_change instead of assuming replacement of CC0 by
	STORE_FLAG_VALUE or const0_rtx is valid.

Wed May 23 16:32:32 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* out-m68k.c, out-alliant.c (output_btst):
	Use next_insn_tests_no_inequality, not next_insns_test_...
	* recog.c (next_insns_test_no_inequality): Function deleted.

Wed May 23 13:26:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (store_bit_field): Don't bother making a SUBREG when we
	call ourself recursively; the recursive call will just strip it off.

	* reorg.c: Include insn-attr.h before testing DELAY_SLOTS.
	(emit_delay_sequence): Assign new INSN_UID to the SEQUENCE.
	Chain insns through the sequence via NEXT_INSN and PREV_INSN.
	* emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to
	find the next or previous insn.
	(make_insn_raw): No longer static.
	* rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn,
	next_insn, and previous_insn.

	* genattrtab.c (write_eligible_delay): Always use "*delay_type";
	annuling only applies to candidate insn, not insn needing slot.

	* tree.c (init_tree): tree_node_counter doesn't exist any more.
	(make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID.

Wed May 23 00:48:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* genemit.c, genextract.c: Add support for MATCH_OP_DUP and
	DEFINE_SPLIT.

	* cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be
	nonzero when address to be deleted is a cast of something
	with side-effects (like a call).
	(build_vec_delete): Simplify code now that `make_node' does the
	right thing for _STMT nodes.

Tue May 22 22:59:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of
	our branch target is zero.
	Don't skip scanning first insn after destination label of branch.

	* expr.c (emit_move_insn): Abort if modes differ.
	(expand_expr, comparison cases): Use TMODE when convenient.
	(expand_expr, case COND): When optimizing (C ? 1 : 0), ensure
	we return a result of the correct mode.

	* integrate.c (expand_inline_function): Can't call try_constants for
	JUMP_INSN since we may have changed RETURN to jump.

Tue May 22 22:40:22 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (struct tree_common): Delete field `uid'.
	(TREE_UID): Macro deleted.

	* c-decl.c (finish_decl): Discard any variable sizes in the decl.

	* calls.c (expand_call): When making reg_notes for const function,
	don't test is_const twice, and take account of order of pushing.

Tue May 22 21:41:48 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs): Ensure we process pseudo that is first
	operand of PLUS.

	* expmed.c (store_bit_field): When stripping a SUBREG, adjust the
	bit position to correspond to the change in modes.

	* cse.c (rtx_cost): Use COSTS_N_INSNS macro.

	* cse.c (qty_comparison_*): New vars.
	(new_basic_block): Initialize qty_comparison_code.
	(fold_rtx): If we see a comparison, check if we have seen the
	same comparison before.	 If so, we know the result.
	(record_jump_equiv): Save the comparison being passed in the
	qty_comparison_* variables for possible later use by fold_rtx.
	(cse_insn): If the current insn doesn't reference cc0, but the
	previous insn sets it, delete the previous insn; presumably we
	used to test it.
	(cse_basic_block): Allocate new qty_comparison_* vars.

	* reload1.c (eliminate_regs): Second arg is now mode of enclosing
	MEM, if any, rather than simply flag indicating inside MEM.
	Use this mode to determine amount that, e.g., PRE_DEC adjusts by.

	* reload1.c (reload): Set regs_ever_live for a register that couldn't
	be eliminated.
	* final.c (only_leaf_regs_used): Don't do it here.

	* reorg.c: Eliminate obsolete macros *_REORG_FUNCTION.
	Entire file is conditional on #ifdef DELAY_SLOTS.

	* Makefile.in: Use reorg.c instead of dbranch.c.

Tue May 22 20:40:30 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (complete_array_type): Get string elt size in bytes.

Tue May 22 00:42:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps.

	* objc-parse.y, objc-actions.c: Replaces uses of build with build1
	when being used for 1-operand nodes.

Mon May 21 23:59:21 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* global-alloc.c (hard_reg_full_preferences): New variable.
	(global_alloc): Allocate and initialize it.
	(prune_preferences): Include in regs_someone_prefers all words
	of multi-word items that have preferences.  Don't includes registers
	we also prefer unless they are prefered by an allocno that needs
	more registers.
	(set_preference): Set hard_reg_full_preferences also.

Mon May 21 21:36:29 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.c (make_node): All ..._STMT nodes have side effects, type void.

Mon May 21 16:03:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* integrate.c (expand_inline_function): Set insns_at_start before
	processing parameters since it might be needed during that processing. 
	Set RTX_INTEGRATED_P in all insns emitted, including labels and
	barriers.
	Ensure COPY is set correctly when replacing RETURN and avoid
	duplicate barriers by calling emit_jump_insn instead of emit_jump.
	Call note_stores for JUMP_INSNs and CALL_INSNs in case they have
	side-effects we care about.
	(copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO).
	(subst_constants): Don't crash if we see a SUBREG replaced by a
	REG or vice versa; we have no work to do in that case.
	Fix typo in case MULT.

	* recog.c (constrain_operands): Call reg_fits_class_p with original
	mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG.

Mon May 21 14:25:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (extract_bit_field): Use class of TMODE for simple reg case.

	* flags.h (flag_pic): Declare it.
	* tree.h (mode_for_size): Declare it.
	* c-tree.h (merge_component_comparisons): Declare it.

Mon May 21 07:27:12 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (thread_jumps): New function to optimize the case where one
	conditional jump jumps to another testing the same condition.  This
	function usefully optimzies code both before common subexpression
	elimination (where it "finds" common subexpressions that cse won't
	find) and after loop optimization (where the loop optimizer
	introduces new conditional jumps after rearranging loops).
	(rtx_equal_for_thread_p): cheaply builds equivalences between
	register so that jump threading can be effectively run before cse.

	* emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if
	PIC_OFFSET_TABLE_REGNUM is defined.

	* tree.c (build,build1,build_nt): Set TREE_RAISES in addition to
	TREE_SIDE_EFFECTS.
	({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments
	instead of calling `make_node' directly.  Eventually, `tree_cons'
	could be faster than `make_node'.
	(get_identifier): Use `bcmp' instead of `strcmp', since it's
	faster.	 Also, test the first letter of each string before calling
	the string comparison function.

	* toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC.  The
	former gives better common sub-expression elimination while the
	latter tells the compiler to emit position-independent code.
	(rest_of_compilation): Thread jumps if requested.

	* stor-layout.c (layout_{record,union}): For loop bodies meant only
	for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding.

	* stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is
	nonzero.
	@@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were
	an expression (like zero/nonzero) instead of soley a #define.
	(fixup_cleanups): If cleanups emitted no code, don't call
	`reorder_insns'.
	(expand_decl_cleanup): Return 0 in case we are not in a block
	(but instead at top-level).

	* stack.h: New GNU C++ file.

	* rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL.
	* rtl.h: Ditto.	 Also make external declaration of
	pic_offset_table_rtx.
	* rtl.def: Add the following new RTL codes: DEFINE_SPLIT,
	MATCH_OP_DUP, LO_SUM and HIGH.

	* reorg.c: New file.  Performs instruction reorganizations
	(primarily branch scheduling) after register allocation.

	* local-alloc.c (local_alloc): If defined, execute
	ORDER_REGS_FOR_LOCAL_ALLOC.

	* genrecog.c (struct decision): Extended to handle DEFINE_SPLITs.
	(write_tree): Split into three subroutines: `write_tree_1' which
	does the main work, `write_tree' which does the original job, and
	`write_split_tree' which builds the recognizer for insn splitting.
	(add_to_sequence): Handle MATCH_OP_DUP.
	(main): Bui.Build both insn->insn_code and insn->insn_list
	recognizers.
	Also, fixed comment at the top of the file.
	* genpeep.c (main): Handle DEFINE_SPLIT.
	(match_rtx): Handle MATCH_OP_DUP.
	* genoutput.c (main): Handle DEFINE_SPLIT.
	* genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP.
	* genattrtab.c (main): Handle DEFINE_SPLIT.

	* fold-const.c (various places): Use `build1' constructor instead of
	`build' constructor whenever possible.

	* final.c (final_scan_insn): If we know the status of the condition
	codes at a particular JUMP_INSN (by dint of the fact that it has a
	REG_CC_STATUS note), set CC_STATUS to reflect that value.
	(only_leaf_regs_used): @@ For some reason the frame pointer register
	is not marked live, even when it is.  If FRAME_POINTER_NEEDED is
	nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1.

	* expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down.
	Use new macro MAX to accomplish this.
	(safe_from_p): Don't check that EXP is nonzero.	 Instead, make
	caller check (only in one place) that argument to `safe_from_p' is
	non-zero.
	(expand_expr): In COND_EXPR case, make sure that the predicate is
	safe from the two conditions.  Lossage occured in a construct of the
	form (c = c < 0 ? d : -d).

	* explow.c (plus_constant): Handle LO_SUM rtl.

	* c-typeck.c (build_binary_op_nodefault): If optimizing, try merging
	component refs and/or comparisons into larger operations.

	* c-common.c (rewrite_for_merged_ref): New function.  Canonicallizes
	expressions to be recognizable as candidates for merged
	COMPONENT_REF operations.
	(make_merged_ref): Builds custom FIELD_DECLs for accessing multiple
	bits in a byte simultaneously.
	(merge_component_comparisons): Optimize COMPONENT_REFs in
	expressions that look like (x.p == y.p && x.q == y.q) or
	(x.p != y.p || x.q != y.q).  Also optimize (x.p == c1 && x.q == c2),
	where C1 and C2 are known constants.

	* c-lang.c (print_lang_statistics): Added new hook function.
	Currently does nothing for C.

	* c-convert.c: Use `build1' constructor instead of `build'
	constructor whenever possible.

	* cplus-typeck.c (build_binary_op_nodefault): Call this function for
	better applicability of the merged component ref optimization. 
	Also, add more recognized cases.

	* cplus-type2.c (merge_component_comparisons): Code improved, and
	moved to c-common.c.

	* cplus-parse.y (operator_name): Recognize `operator,'.
	(expr): On parsing ',', call `build_x_compound_expr' instead of
	`build_compound_expr'.
	(various places): Call `note_decl_list_got_semicolon' instead of
	`note_decl_got_semicolon' where object in question is a list instead
	of a type.
	(component_declarator0): Set CURRENT_DECLSPECS from the bitfield
	type.

	* cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME,
	since it is a type name we pass in, not a type.

	* cplus-lex.c (opname_tab): Add `operator,'.
	(note_decl_list_got_semicolon): Make notation that a list of
	declarations should be considered as having "gotten a semicolon".
	(extract_interface_info,interface_strcmp): Commented.

	* cplus-init.c (build_delete): Rest of changes to reimplement new
	destructor mechanism.
	(build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were
	not being correctly handled.  Also, where elsements were not being
	deleted.  Use new destrouct calling convention.
	(various places): Change TYPE_HAS_CONSTRUCTOR to
	TREE_HAS_CONSTRUCTOR where appropriate.

	* cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy
	data from RETURN_TARGET to CALL_TARGET in case they do not line up
	normally.

	* cplus-decl2.c (finish_file): No need to call `build_vbase_delete'
	on top-level objects anymore, since destructors now do the right
	thing.

	* cplus-decl.c (finish_function): Implement new destructor
	mechanism: destroy virtual baseclass objects if (in$charge & 2) is
	nonzero.  Deallocate if (in$charge & 1) is nonzero.

	* cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not
	TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes.
	(build_up_reference): Only build up references between compatible
	types.	I.e., don't build a char& to an int object.
	(convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a
	CALL_EXPR.

	* cplus-class.c (build_vbase_path): Recover from bad parse errors.
	(build_method_call): Implement new ctor/dtor semantics to allow
	differentiation between tearing an object down and deallocating it.
	This also means that ctors and dtors can now aviod going through the
	virtual function table mechanism as they construct/destruct their
	objects.

	* ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup
	type value of an identifier.  Also implement related macros
	IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE.

	* cplus-cadillac.c (cadillac_switch_source): Change Prototype
	declaration to non-prototype declaration.
	(readable_p): Ditto.

Sun May 20 20:23:39 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (c_sizeof): For incomplete type, warn and return 0.
	(c_sizeof): Similar.

Sun May 20 17:20:48 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart.

Sun May 20 16:59:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_c_cast): Warn about pointer-integer casts 
	where size differs.

	* stor-layout.c (layout_type): Multi-word field doesn't force BLKmode.

	* expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned
	fields in regs.	 No longer knows explicit modes for this.

Sun May 20 15:12:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in: (reload1.o): Now depends on output.h.

	* calls.c (expand_call): No need to set frame_pointer_needed.

	* emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use
	appropriate already-made rtx (e.g., stack_pointer_rtx).

	* expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set
	frame_pointer_needed.

	* final.c (final_start_function): No longer round size of frame here.
	(final_scan_insn): Call constrain_operands with new operand.

	* flow.c (life_analysis): Change test on whether sp is live or
	not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer.
	(This code may not be relevant any more.)

	* function.c (push_function_context, pop_function_context): No need
	to save and restore frame_pointer_needed.
	(assign_{outer_,}stack_local): No need to set frame_pointer_needed.
	(assign_parms): Likewise.
	(init_function_start): Don't initialize frame_pointer_needed here.

	* function.h (frame_pointer_needed): Deleted.

	* genattrtab.c (write_attr_case): Write call to constrain_operands
	with new second argument (reload_completed).

	* global-alloc.c (global_alloc): Don't left fp be allocated if we
	already know we can't eliminate it.
	(find_reg): Argument LOSERS is now a HARD_REG_SET instead of an	array.
	Precompute HARD_REG_SETs before loop over registers to speed up
	allocation.
	(retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET.
	(check_frame_pointer_required): Deleted; no longer needed.

	* integrate.c (save_for_inline, output_inline_function): No longer
	need to save and restore frame_pointer_needed.

	* local-alloc.c (block_alloc): No longer have to worry that having
	a stack variable might cause a frame pointer to be needed when it
	might otherwise not be.
	(find_free_reg): Don't allocate into registers that may be eliminated
	later even if they are not FIXED_REGS.

	* output.h: Define reload_completed.

	* recog.c (constrain_operands): Add new argument, STRICT.  If zero
	and the constraints could not be matched, try again with a less
	strict view (i.e., assume that reload will fix those things that
	it can).  This allows attribute values to be obtained prior to
	reload.
	Don't call alter_subreg or assume it has been called.  Instead,
	look inside SUBREGs.

	* reload.c (find_reloads_address{,_1}): Handle an address that
	is a MEM; it may have been produced by register elimination.
	(find_reloads_address): sp can also be the base register for a
	stack slot.
	(form_sum): No longer static.

	* reload1.c: Rewrite code that performs frame pointer elimination.  Do
	it during reload to ensure that all addresses and operands remain
	valid; also generalize to support more than one pair of eliminations.
	(reg_equiv_stack_slot, bad_spill_regs): New vars.
	(forbidden_regs): Now a HARD_REG_SET.
	(struct elim_table): New structure to describe register eliminations.
	(reload): Start scanning registers after virtual registers.
	Initialize reg_equiv_stack_slot for each register.  Compute
	reg_equiv_{mem,address} during register scan only if not eliminating
	registers.
	Compute initial default value of frame_pointer_needed.
	Round frame size to BIGGEST_ALIGNMENT.
	Create obstack for scratch rtl created by register elmination.
	Initialize elimination table and spill registers that we know can't
	be eliminated.
	On each scan of the insns: Reset all elimination entries to initial
	offsets, compute reg_equiv_{mem,address}, and see if any potentially
	eliminable register changed status.
	Try to eliminate registers from each insn unless we know that none
	can be eliminated.
	Don't complete groups for spill registers from registers that
	shouldn't be used as spill registers.
	Call reload_as_needed if register eliminations can be done, even if
	no reloads are needed.
	(new_spill_reg): Don't allow spilling an eliminable register.
	Don't set forbidden_regs here.
	Indicate something changed if a register that wasn't ever used before
	was made a spill register.
	(eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted.
	(delete_dead_insn): New function.
	(alter_reg): Call it.
	Always set reg_equiv_stack_slot; if not eliminating registers, also
	set reg_equiv_{mem,address}.
	(eliminate_regs, eliminate_regs_in_insn): New functions.
	(spill_hard_reg): Add new argument, CANT_ELIMINATE.
	Set bit for register being spilled in forbidden_regs.
	Use new argument instead of seeing if we are spilling fp.
	No longer need to have frame pointer just because a reg needs a
	stack slot.
	(order_regs_for_reload): Set bad_spill_regs to contain those registers
	that can't be used for spill registers.
	Consider any eliminable register as bad to use as a spill register.
	Rework initialization of potential_reload_regs.
	(reload_as_needed): Handle register elimination in a similar manner
	as function reload.
	(gen_input_reload): When generating a reload for a PLUS, first try to
	use a three-operand add insn.  If that fails, emit two two-operand
	insns.

	* rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others
	renumbered.

	* stmt.c (expand_decl): No longer have to set frame_pointer_needed
	for variable-sized decl.

	* stupid.c (stupid_find_reg): Don't try to allocate an eliminable
	register.

	* tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition.

	* recog.c (next_insn_tests_no_inequality): If no next insn, return 0.

	* print-tree.c (print_node): Set length for TREE_VEC.

	* calls.c (store_one_arg): Set arg->value to location where argument
	was placed (either register or stack).

	* recog.c: Needs flags.h (for flag_pretend_float):
	* Makefile.in (recog.o): Likewise.

	* expr.c (convert_move): Add missing RETURN statements.

Sat May 19 14:26:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case EXIT_STMT): Return rather than falling
	out of switch statement (and into `binop').

	* cse.c (cse_insn): Allow conditional branches to be turned into
	noops when the condition is known false by not calling validate_change.

	* cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes.

Sat May 19 12:41:44 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align.
	(ASM_OUTPUT_ALIGN_CODE): Likewise.

	* gcc.c (default_compilers): For .cc, pass -g* to cc1.

Sat May 19 06:51:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack
	in obstack instead of using xmalloc/free.
	(init_tree): Initialize new obstack for {push,pop}_obstacks.

	* tree.c (simple_cst_list_equal): No longer static.

Fri May 18 19:38:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.h (MUST_PASS_IN_STACK): Refine test for case where padding
	requirement prohibits passing in register.

Fri May 18 18:14:18 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Fix CAT macro in memvar.h.

Fri May 18 16:13:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (do_jump): Don't explicitly copy item being tested from
	MEM to REG.  If needed, this will be done later.

Thu May 17 14:33:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (bootstrap): Pass LANGUAGES to inner makes.

Thu May 17 13:57:34 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Handle _CTRL like CTRL.

Wed May 16 21:09:42 1990  Richard Kenner  (kenner at vlsi1.ultra.edu)

	* fold-const (fold): Two conversions in a row are needed if from an
	integer type to a pointer type of a different precision.

Wed May 16 16:09:47 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_expr): Make sure a volatile value is referenced
	even if value is ignored.

	* c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int.
	(invert_truthvalue): Simplify COND_EXPR.

Tue May 15 00:25:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Do set TYPE_SIZE if size is var.

	* reload.c (push_reload): If insn is an asm, verify that CLASS
	is at least possible for the specified mode.

	* c-decl.c (complete_array_type): Compensate for wide string constant.

	* final.c (leaf_function_p): Reject everything if profiling.

	* function.c (optimize_bit_field): Adjust OFFSET if
	BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN.

	* expmed.c (store_bit_field, extract_bit_field): Rework the code
	to adjust XBITPOS for the size within which to count.
	(extract_bit_field): When converting MEM to REG, don't make SUBREG
	immediately; fall through and let this happen in the code that
	handles original registers of the wrong mode.

Mon May 14 16:01:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cexp.y (yylex): Ignore carriage return.
	* cccp.c (initialize_char_syntax): Likewise.
	(newline_fix, name_newline_fix): Likewise.

	* c-common.c: New file.
	(combine_strings): Moved here.	Fix errors for wide string length.
	* c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here.

Sun May 13 08:08:41 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* integrate.c (subst_constants): Fix typo in case 'E'.

Sat May 12 17:14:26 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Don't change -(y-x) to x-y for IEEE floats.
	Include real.h.

	* cse.c (fold_rtx): Don't simplify float+0, float-0, float*0
	if using IEEE floating point.
	Don't simplify float-self even if not IEEE.
	* fold-const.c (fold): Likewise.

	* i386.md (trunc**): Use long move if source is constant.
	* out-i386.c (PRINT_REG): Handle CODE == 'k'.

	* fixincludes: Use rm -fr to delete before making link.

	* optabs.c (init_optabs): Support MULDI3_LIBCALL, etc.

Sat May 12 17:04:58 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (find_best_addr): Don't modify constant address MEMs; they
	are shared.

Sat May 12 15:17:37 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* ns32k.md (signed bitfield extract): Don't output assembler comment.

Fri May 11 15:23:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in: Don't use $(libsubdir) as a target since it involves
	shell `...` constructs.

	* genattr.c (fatal, main): Remove relics of old program name.
	* genattrtab.c: Likewise.

	* expr.c (expand_expr, case COND_EXPR): Add missing argument to
	operand_equal_p.

	* reload.c (form_sum): Handle case where second operand is
	(plus foo (const_int ...)).

	* c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for
	ERROR_MARK.
	* cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise.

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

	* loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can
	also occur in JUMP_INSN's.

	* reload.c (find_reloads, find_reloads_address): Correct errors where
	an arg to find_reloads is "VOIDmode" instead of "0" and vice versa.
	(find_reloads_address_1): Likewise.

	* global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos
	where all regs have reg_live_length == -2.

Fri May 11 14:45:06 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4.

Thu May 10 23:43:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* out-i860.c (single_insn_src_p, strict_single_insn_src_p):
	Correct conditions for needing multiple instructions.
	(output_delayed_branch): Likewise.

See file ChangeLog.1.

Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never
End: