Commit Graph

544 Commits

Author SHA1 Message Date
Jakub Jelinek
3d23824843 emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or REG_EQUIV notes for ASM_OPERANDS.
* emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or
	REG_EQUIV notes for ASM_OPERANDS.  Return the new note (if any).
	* rtl.h (set_unique_reg_note): Change return value.
	* gcse.c (try_replace_reg): Use set_unique_reg_note.
	* cse.c (cse_insn): Likewise.
	* expr.c (emit_move_insn): Likewise.
	* explow.c (force_reg): Likewise.
	* local-alloc (update_equiv_regs): Likewise.
	* loop.c (move_moveables, load_mems): Likewise.
	* reload (find_reloads): Likewise.

	* gcc.dg/20011029-2.c: New test.

From-SVN: r46636
2001-10-30 13:41:45 +01:00
Alexandre Oliva
45c23566b6 cse.c (check_for_label_ref): Don't require REG_LABEL notes for non-local label_refs.
* cse.c (check_for_label_ref): Don't require REG_LABEL notes for
non-local label_refs.

From-SVN: r46555
2001-10-26 17:43:51 +00:00
Stan Shebs
b36948478c alias.c: Remove uses of "register" specifier in declarations of arguments and local...
2001-10-10  Stan Shebs  <shebs@apple.com>

        * alias.c: Remove uses of "register" specifier in declarations
        of arguments and local variables.
        * c-common.c: Ditto.
        * c-convert.c: Ditto.
        * c-decl.c: Ditto.
        * c-format.c: Ditto.
        * c-semantics.c: Ditto.
        * c-typeck.c: Ditto.
        * caller-save.c: Ditto.
        * calls.c: Ditto.
        * cfg.c: Ditto.
        * cfgbuild.c: Ditto.
        * cfgrtl.c: Ditto.
        * collect2.c: Ditto.
        * combine.c: Ditto.
        * convert.c: Ditto.
        * cppexp.c: Ditto.
        * cppfiles.c: Ditto.
        * cse.c: Ditto.
        * dbxout.c: Ditto.
        * defaults.h: Ditto.
        * df.c: Ditto.
        * dwarf2out.c: Ditto.
        * dwarfout.c: Ditto.
        * emit-rtl.c: Ditto.
        * explow.c: Ditto.
        * expmed.c: Ditto.
        * expr.c: Ditto.
        * final.c: Ditto.
        * fix-header.c: Ditto.
        * floatlib.c: Ditto.
        * flow.c: Ditto.
        * fold-const.c: Ditto.
        * function.c: Ditto.
        * gcc.c: Ditto.
        * gcse.c: Ditto.
        * gen-protos.c: Ditto.
        * genattrtab.c: Ditto.
        * gencheck.c: Ditto.
        * genconfig.c: Ditto.
        * genemit.c: Ditto.
        * genextract.c: Ditto.
        * genflags.c: Ditto.
        * gengenrtl.c: Ditto.
        * genoutput.c: Ditto.
        * genpeep.c: Ditto.
        * genrecog.c: Ditto.
        * gensupport.c: Ditto.
        * global.c: Ditto.
        * gmon.c: Ditto.
        * graph.c: Ditto.
        * haifa-sched.c: Ditto.
        * hard-reg-set.h: Ditto.
        * hash.c: Ditto.
        * integrate.c: Ditto.
        * jump.c: Ditto.
        * lists.c: Ditto.
        * local-alloc.c: Ditto.
        * loop.c: Ditto.
        * mips-tdump.c: Ditto.
        * mips-tfile.c: Ditto.
        * optabs.c: Ditto.
        * prefix.c: Ditto.
        * print-rtl.c: Ditto.
        * read-rtl.c: Ditto.
        * real.c: Ditto.
        * recog.c: Ditto.
        * reg-stack.c: Ditto.
        * regclass.c: Ditto.
        * regmove.c: Ditto.
        * reload.c: Ditto.
        * reload1.c: Ditto.
        * reorg.c: Ditto.
        * resource.c: Ditto.
        * rtl.c: Ditto.
        * rtlanal.c: Ditto.
        * scan.c: Ditto.
        * sched-deps.c: Ditto.
        * sched-rgn.c: Ditto.
        * sdbout.c: Ditto.
        * simplify-rtx.c: Ditto.
        * stmt.c: Ditto.
        * stor-layout.c: Ditto.
        * toplev.c: Ditto.
        * tradcif.y: Ditto.
        * tradcpp.c: Ditto.
        * tree.c: Ditto.
        * unroll.c: Ditto.
        * varasm.c: Ditto.
        * xcoffout.c: Ditto.

From-SVN: r46173
2001-10-11 03:16:15 +00:00
Kazu Hirata
6d2f888735 calls.c: Fix formatting.
* calls.c: Fix formatting.
	* c-decl.c: Likewise.
	* cfgcleanup.c: Likewise.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* dwarf2out.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* integrate.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* sched-rgn.c: Likewise.
	* sdbout.c: Likewise.
	* stmt.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r46145
2001-10-10 11:33:39 +00:00
Alexandre Oliva
4838c5ee55 Makefile.in (c-decl.o): Depend on tree-inline.h.
* Makefile.in (c-decl.o): Depend on tree-inline.h.
(c-lang.o): Likewise, as well as insn-config.h and integrate.h.
* c-decl.c: Include tree-inline.h.
(c_expand_body): Call optimize_inline_calls. Determine whether
a function is inlinable upfront, and only clear
DECL_SAVED_TREE, DECL_INITIAL and DECL_ARGUMENTS if it isn't.
* c-lang.c: Include tree-inline.h, insn-config.h and integrate.h.
(c_disregard_inline_limits): New function.
(inline_forbidden_p, c_cannot_inline_tree_fn): Likewise.
(c_post_options): Enable tree inlining if inlining is enabled.
Don't inline trees when instrumenting functions.
(c_init): Initialize lang_disregard_inline_limits and
lang_cannot_inline_tree_fn.
* tree-inline.c (initialize_inlined_parameters): Handle calls
with fewer arguments than declared parameters, and fewer
parameters than passed arguments.  Don't assume value is a
DECL.
(declare_return_variable): Convert return value back to the
original type, if it was promoted.
(tree_inlinable_function_p): New function.
(inlinable_function_p): Don't look at DECL_INLINE if we're
inlining all functions.  Make it work with a NULL id.
Re-check DECL_UNINLINABLE after language-specific checks.
(varargs_function_p): Move back to cp/tree.c.
* tree-inline.h (tree_inlinable_function_p): Declare it.
(varargs_function_p): Removed declaration.
* integrate.h (function_attribute_inlinable_p): Declare it.
* integrate.c (function_attribute_inlinable_p): Export it.
(save_for_inline): Don't bother to prepare argvec when not
inlining.
* cse.c (check_for_label_ref): Don't check deleted labels.

From-SVN: r46025
2001-10-05 04:20:27 +00:00
Hans-Peter Nilsson
6dee73844d * cse.c (cse_insn) [HAVE_cc0]: Fix typo delete-insn -> delete_insn.
From-SVN: r45878
2001-09-29 12:17:04 +00:00
Jan Hubicka
49ce134fee gcse.c (replace_store_insn): Use delete_insn.
* gcse.c (replace_store_insn): Use delete_insn.
	* loop.c (move_movables): Likewise; avoid delete_insn
	from clobbering notes moved elsewhere.
	(check_dbra_loop): Use delete_insn.
	* ssa.c (convert_from_ssa): Likewise.
	* cse.c (cse_insn): Use delete_insn.

From-SVN: r45859
2001-09-28 13:01:41 +00:00
Jan Hubicka
53c170316f basic-block.h (flow_delete_insn, [...]): Kill.
* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill.
	* cfg.c (delete_insn): Rename from ....; use remove_insn; do not
	remove some labels.
	(flow_delete_insn): This one.
	(delete_insn_chain): Rename from ...; do not care labels.
	(flow_delete_insn_chain): ... this one.
	(flow_delete_block): Remove the insns one BB has been expunged.
	(merge_blocks_nomove): Likewise.
	(try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(tidy_fallthru_edge): Likewise.
	(commit_one_edge_insertion): Likewise.
	* cfgbuild.c (find_basic_block): Likewise.
	(find_basic_blocks_1): Likewise.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise.
	* cse.c (delete_trivially_dead_insns): Likewise.
	* df.c (df_insn_delete): Likewise.
	* doloop.c (doloop_modify): Use delete_related_insns.
	* emit-rtl.c (try_split): Likewise.
	(remove_insn): Update BB boundaries.
	* expect.c (connect_post_landing_pads): Use delete_related_insns.
	* flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(propagate_block_delete_insn): Likewise.
	(propagate_block_delete_libcall): Likewise.
	* function.c (delete_handlers): Use delete_related_insns.
	(thread_prologue_and_epilogue_insns): Likewise.
	* gcse.c (delete_null_pointer_checks): Use delete_related_insns.
	* genpeep.c (gen_peephole): Use delete_related_insns.
	* ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating
	BB boundaries.
	(find_cond_trap): Likewise.
	* integrate.c (save_for_inline): Use delete_related_insns.
	(copy_insn_list): Likewise.
	* jump.c (pruge_linie_number_notes): Likewise.
	(duplicate_loop_exit_test): Likewise.
	(delete_computation): Likewise.
	(delete_related_insn): Rename from ...; use delete_insn
	(delete_insn): ... this one.
	(redirect_jump): Use delete_related_insns.
	* loop.c (scan_loop): Likewise.
	(move_movables): Likewise.
	(find_and_verify_loops): Likewise.
	(check_dbra_loop): Likewise.
	* recog.c (peephole2_optimize): Likewise.
	* reg-stack.c (delete_insn_for_stacker): Remove.
	(move_for_stack_reg): Use delete_insn.
	* regmove.c (combine_stack_adjustments_for_block): Likewise.
	* reload1.c (delete_address_reloads): Use delete_related_insns.
	(fixup_abnormal_edges): Use delete_insn.
	* recog.c (emit_delay_sequence): Use delete_related_insns.
	(delete_from-delay_slot): Likewise.
	(delete_scheduled_jump): likewise.
	(optimize_skip): Likewise.
	(try_merge_delay_insns): Likewise.
	(full_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.
	(make_return_insns): Likewise.
	(dbr_schedule): Likewise.
	* rtl.h (delete_insn): Rename to delete_related_insns.
	(delete_insn, delete_insn_chain): New prototypes.
	* ssa-ccp (sse_fast_dce):  Remove deleting of DEF, as it is done
	by df_insn_delete already.
	* ssa-dce.c (delete_insn_bb): Use delete_insn.
	* ssa.c (convert_from_ssa): Use delete_related_insns.
	* unroll.c (unroll_loop): Likewise.
	(calculate_giv_inc): Likewise.
	(copy_loop_body): Likewise.

	* i386-protos.h (ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): Declare.
	* i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers):
	new static valurables.
	(x86_64_reg_class): New enum
	(x86_64_reg_class_name): New array.
	(classify_argument, examine_argument, construct_container,
	 merge_classes): New static functions.
	(optimization_options): Enable flag_omit_frame_pointer and disable
	flag_pcc_struct_return on 64bit.
	(ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): New global functions.
	(init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg.
	(function_arg_advance): Handle x86_64 passing conventions.
	(function_arg): Likewise.
	* i386.h (FUNCTION_ARG_BOUNDARY): New macro.
	(RETURN_IN_MEMORY): Move offline.
	(FUNCTION_VALUE, LIBCALL_VALUE): Likewise.
	(FUNCTION_VALUE_REGNO_P): New macro.
	(FUNCTION_ARG_REGNO_P): Move offline.
	(struct ix86_args): Add maybe_vaarg.
	* next.h (FUNCTION_VALUE_REGNO_P): Delete.
	* unix.h (FUNCTION_VALUE_REGNO_P): Delete.

From-SVN: r45726
2001-09-21 12:55:18 +00:00
Roman Zippel
b5a696fb77 * cse.c (cse_basic_block): Skip note instructions.
From-SVN: r45221
2001-08-27 18:29:48 -07:00
Lars Brinkhoff
1322177dbd Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
	bitmap.h, builtin-types.def, builtins.c, builtins.def,
	c-aux-info.c, c-common.c, c-common.def, c-common.h,
	c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
	c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
	c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
	caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
	conditions.h, config.gcc, configure.frag, configure.in,
	conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
	cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
	dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
	doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
	dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
	emit-rtl.c, errors.c, errors.h, except.c, except.h,
	exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
	fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
	function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
	gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
	gencheck.c, gencodes.c, genconfig.c, genemit.c,
	genextract.c, genflags.c, gengenrtl.c, genmultilib,
	genopinit.c, genoutput.c, genpeep.c, genrecog.c,
	gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
	ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
	graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
	gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
	gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
	hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
	integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
	libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
	machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
	mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
	mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
	params.h, predict.c, predict.def, predict.h, prefix.c,
	prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
	read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
	regclass.c, regmove.c, regrename.c, regs.h, reload.c,
	reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
	rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
	sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
	sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
	ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
	stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
	tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
	tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
	unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
	unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
	xcoffout.h: replace "GNU CC" with "GCC".

From-SVN: r45105
2001-08-22 14:35:51 +00:00
Zack Weinberg
94aca34298 toplev.c (set_float_handler): Make static.
* toplev.c (set_float_handler): Make static.
	* toplev.h: Don't prototype set_float_handler.

	* simplify-rtx.c: Don't include setjmp.h.
	(simplify_unary_real, simplify_binary_real, simplify_binary_is2orm1):
	New functions.
	(simplify_unary_operation, simplify_binary_operation): Use them,
	via do_float_handler.

	* fold-const.c: Don't include setjmp.h.
	(exact_real_inverse_1): New function.
	(exact_real_inverse): Use it, via do_float_handler.

	* varasm.c: Don't include setjmp.h.
	(assemble_real_1): New function.
	(assemble_real): Use it, via do_float_handler.
	Call internal_error if we get a trap here.

	* c-parse.in, cse.c, cselib.c, ch/lex.c, config/i386/i386.c,
	config/pj/pj.c, config/s390/s390.c: Don't include setjmp.h.

	* java/lex.h: Don't include setjmp.h.  Don't define
	SET_FLOAT_HANDLER or prototype set_float_handler.

From-SVN: r44815
2001-08-12 01:56:10 +00:00
Jan Hubicka
570a98eb7c calls.c (expand_call): Do not emit INSN_SETJMP note.
* calls.c (expand_call): Do not emit INSN_SETJMP note.
	(emit_library_call_value_1): Likewise.
	(emit_call_1): Emit REG_SETJMP note.
	* cse.c (cse_end_of_basic_block): Use REG_SETJMP instead
	of INSN_SETJMP
	* cselib.c (cselib_process_insn): Likewise.
	* flow.c (propagate_block): Likewise.
	* loop.c (find_and_verify_loops): Likewise.
	* reload.c (find_equiv_regs): Likewise.
	* reload1.c (reload): Likewise.
	* resource.c (mark_referenced_resources,
	mark_set_resources): Likewise.
	* sched-deps (sched_analyze_insn, sched_analyze): Likewise.
	* final.c (final_scan_insn): Remove NOTE_INSN_SETJMP.
	* haifa-sched.c (unlink_other_notes): Likewise.
	(reemit_notes): Likewise.
	* sched-ebb.c (sched_ebb): Likewise.
	* sched-rgc.c (sched_region): Likewise.
	* rtl.c (note_insn_name): Likewise.
	(reg_note_name): Add REG_SETJMP
	* rtl.h (reg_note): Add REG_SETJMP.
	(insn_note): Remove NOTE_INSN_SETJMP.

	* profile.c (branch_prob): Add fake edges for setjmp.

From-SVN: r44700
2001-08-07 20:24:08 +00:00
Jan Hubicka
24a2858412 alias.c (nonlocal_mentioned_p): Rename CONST_CALL_P to CONST_OR_PURE_CALL_P
* alias.c (nonlocal_mentioned_p):
	Rename CONST_CALL_P to CONST_OR_PURE_CALL_P
	* calls.c (emit_call_1): Likewise.
	* cse.c (cse_insn, invalidate_skipped_block): Likewise.
	* cselib.c (cselib_process_insn): Likewise.
	* df.c (df_insns_modify): Likewise.
	* flow.c (need_fake_edge_p): Likewise.
	(propagate_one_insn): Likewise.
	* haifa-sched.c (reemit_notes): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* jump.c (delete_prior_computation): Likewise.
	* local-alloc.c (validate_equiv_mem): Likewise.
	* loop.c (scan_loop): Likewise.
	* predict.c (estimate_probability): Likewise.
	* reload.c (reload): Likewise.
	* sched-deps (sched_analyze): Likewise.
	* rtl.h (CONST_CALL_P): rename to CONST_OR_PURE_CALL_P.
	* gcse.c (compute_hash_table): Likewise.
	(mark_call): Likewise.
	(store_killed_in_insn): Likewise.

From-SVN: r44688
2001-08-07 12:59:58 +00:00
Lars Brinkhoff
8aeea6e67d combine.c, [...]: consistently use "VAX", "VAXen", and "MicroVAX" in comments and documentation.
* combine.c, config.gcc, cse.c, defaults.h, real.c, reload.c,
	simplify-rtx.c, config/alpha/alpha.h, config/avr/avr.h,
	config/convex/convex.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/elxsi/elxsi.h, config/fr30/fr30.h, config/m88k/m88k.c,
	config/mips/mips.h, config/mn10200/mn10200.h,
	config/mn10300/mn10300.h, config/pdp11/pdp11.md,
	config/v850/v850.h, config/vax/openbsd.h,
	config/vax/openbsd1.h, config/vax/ultrix.h,
	config/vax/vax-protos.h, config/vax/vax.c, config/vax/vax.h,
	config/vax/vax.md, config/vax/vaxv.h, config/vax/xm-vms.h,
	cp/decl2.c, doc/contrib.texi, doc/cpp.texi, doc/gcc.texi,
	doc/install.texi, doc/invoke.texi, doc/md.texi, doc/rtl.texi,
	doc/tm.texi: consistently use "VAX", "VAXen", and "MicroVAX"
        in comments and documentation.

From-SVN: r44589
2001-08-03 01:19:20 +00:00
Kazu Hirata
ec5c56db8b alias.c: Fix comment formatting.
* alias.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* builtins.c: Likewise.
	* calls.c: Likewise.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-dump.c: Likewise.
	* c-lex.c: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* conflict.c: Likewise.
	* cppfiles.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* cppspec.c: Likewise.
	* c-pragma.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* cselib.c: Likewise.
	* c-semantics.c: Likewise.
	* c-typeck.c: Likewise.

From-SVN: r44547
2001-08-01 17:57:27 +00:00
Andreas Jaeger
57cb6d521a jump.c: Add prototype for mark_modified_reg.
* jump.c: Add prototype for mark_modified_reg.

        * cse.c (set_live_p): Add unused attribute.

        * gcov.c (calculate_branch_probs): Use gcov_type to avoid
        overflow.
        (scan_for_source_files): Use long for count to avoid overflow.
        (output_data): Likewise.
        (output_data): Don't use string concatatenation to silence gcc
        -traditional.

        * predict.c: Fix typos and grammar.

        * gcse.c (insert_insn_end_bb): Remove unused variables.

For cp:
        * decl2.c: Remove unused var global_temp_name_counter.

From-SVN: r44479
2001-07-30 20:04:33 +02:00
Denis Chertykov
c96208fae7 cse.c (cse_process_notes): Replace any registers if the address remains valid.
* cse.c (cse_process_notes): Replace any registers if the address
	remains valid.

From-SVN: r44406
2001-07-26 22:31:01 +04:00
Jan Hubicka
dc42616f43 * cse.c: Undo my previous patch.
From-SVN: r44126
2001-07-18 18:52:41 +00:00
Jan Hubicka
f06fbeea0d cse.c (delete_trivially_dead_insns): Delete the libcall block when return value is unused.
* cse.c (delete_trivially_dead_insns): Delete the libcall block
	when return value is unused.

From-SVN: r44112
2001-07-18 16:36:33 +00:00
Daniel Berlin
0021de69a6 cse.c (set_live_p): Take INSN argument for cc0; update callers.
* cse.c (set_live_p): Take INSN argument for cc0; update callers.
        (insn_live_p): Fix fall off end of function.
        (dead_libcall_p): Remove COUNTS argument; update callers.
        (delete_trivially_dead_insns): Remove unused variables.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r44064
2001-07-16 23:44:57 -07:00
Jan Hubicka
4793dca158 basic-block.h (CLEANUP_PRE_SIBCALL): New constant.
* basic-block.h (CLEANUP_PRE_SIBCALL): New constant.
	* except.c (finish_eh_generation): Update call of cleanup_cfg;
	do rebuild_jump_labels instead of jump_optimize
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise.
	* toplev.c (rest_of_compulation): Likewise for -Wreturn_type.
	* flow.c (try_optimize_cfg): Remove unneeded code_labels.

	* flow.c: Include timevar.h
	(find_basic_block): Push/pop timevar;
	(cleanup_cfg): Likewise.
	* timevar.def (TV_CFG, TV_CLEANUP_CFG): New.
	* Makefile: Add dependencies on timevar.h

	* integrate.c (save_for_inline): Kill all BASIC_BLOCK notes.
	(copy_insn_list): Avoid killing of BASIC_BLOCK notes.

	* rtl.h (delete_trivially_dead_insns): Add new parameter.
	* toplev.c (rest_of_compilation): Update calls.
	* cse.c (set_live_p, insn_live_p, dead_libcall_p): Break out from ...
	(delete_trivially_dead_insns): ... here; accept new argument
	preserve_basic_blocks; preserve basic blocks if set.

	* reg-stack.c (stack_regs_mentioned): Return 0 if
	stack_regs_mentioned_data is not initialized.
	(reg_to_stack): Make stack_regs_mentioned survive after the
	reg-stack is completted; do not call cleanup_cfg.
	* toplev.c (rest_of_compilation): Do cleanup_cfg before bb-reorder;
	make cleanup_cfg after bb-reorder to output to debug file.

From-SVN: r44056
2001-07-16 20:54:44 +00:00
Richard Henderson
4e2db58460 hard-reg-set.h (regs_invalidated_by_call): Declare.
* hard-reg-set.h (regs_invalidated_by_call): Declare.
        * regclass.c (regs_invalidated_by_call): Move from cse.c.
        (init_reg_sets_1): Move initialization from cse_main.
        * cse.c (regs_invalidated_by_call): Move to regclass.c.
        (cse_main): Move its initialization also.
        * df.c (df_insn_refs_record): Use regs_invalidated_by_call.
        * flow.c (propagate_one_insn): Likewise.
        * gcse.c (compute_hash_table): Likewise.
        (compute_kill_rd, compute_store_table): Likewise.
        * sched-deps.c (sched_analyze_1): Likewise.

From-SVN: r44053
2001-07-16 10:54:34 -07:00
Richard Kenner
f1ec5147f5 [multiple changes]
Mon Jul  9 06:41:07 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
	(operand_subword): Use them.
	(change_address_1): Renamed from change_address; new arg VALIDATE.
	* expr.h: Reflect above changes; change_address now macro.
	* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
	making MEM.
	* cselib.c (add_mem_for_addr): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (eliminate_regs): Likewise.
	* simplify-rtx.c (simplify_replace_rtx): Likewise.
	* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
	adjust_addess.
	* combine.c (make_extraction, simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* expr.c (expand_expr, case COMPONENT_REF): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* reload1.c (alter_reg): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	(expr.h): Include.
	* Makefile.in (recog.o): Add $(EXPR_H).
	* explow.c (stabilize): Call replace_equiv_address.
	* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
	* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.

2001-07-09  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.

2001-07-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* final.c (output_addr_const): Use target opening and
	closing parentheses.
	* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
	defaults, add to TARGET_ASM_OUT.
	* target.h (struct gcc_target): Add open_paren and close_paren.
	* doc/md.texi: Update.
	* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
	TARGET_ASM_CLOSE_PAREN.
	* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
	* config/a29k/a29k.h: Similarly.
	* config/alpha/alpha.h: Similarly.
	* config/arc/arc.h: Similarly.
	* config/arm/aof.h: Similarly.
	* config/arm/aout.h: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.h: Similarly.
	* config/clipper/clipper.h: Similarly.
	* config/convex/convex.h: Similarly.
	* config/d30v/d30v.h: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/elxsi/elxsi.h: Similarly.
	* config/fr30/fr30.h: Similarly.
	* config/h8300/h8300.h: Similarly.
	* config/i370/i370.h: Similarly.
	* config/i386/i386.h: Similarly.
	* config/i860/i860.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/ia64/ia64.h: Similarly.
	* config/m32r/m32r.h: Similarly.
	* config/m68hc11/m68hc11.h: Similarly.
	* config/m68k/m68k.h: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.h: Similarly.
	* config/mn10200/mn10200.h: Similarly.
	* config/mn10300/mn10300.h: Similarly.
	* config/ns32k/ns32k.h: Similarly.
	* config/pa/pa.h: Similarly.
	* config/pdp11/pdp11.h: Similarly.
	* config/pj/pj.h: Similarly.
	* config/romp/romp.h: Similarly.
	* config/rs6000/rs6000.h: Similarly.
	* config/sh/sh.h: Similarly.
	* config/sparc/sparc.h: Similarly.
	* config/v850/v850.h: Similarly.
	* config/vax/vax.h: Similarly.
	* config/we32k/we32k.h: Similarly.

2001-07-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi: Document representation of attributes.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/tm.texi: Update some places for the rename of target to
	targetm.  Fix typo.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* target.h (struct gcc_target): Add insert_attributes.
	* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
	(TARGET_INITIALIZER): Update.
	* tree.c, tree.h (default_insert_attributes): New function.
	Update comments on other default functions to refer to targetm,
	not target.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
	TARGET_INSERT_ATTRIBUTES.
	(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
	* c-common.c (decl_attributes): Use targetm.insert_attributes.
	Don't use PRAGMA_INSERT_ATTRIBUTES.
	* Makefile.in (c-common.o): Depend on $(TARGET_H).
	* c-decl.c (start_decl, start_function): Don't call
	SET_DEFAULT_DECL_ATTRIBUTES.
	* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
	declare.
	* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
	(c4x_check_attribute): Avoid modifying attribute list itself.
	(c4x_set_default_attributes): Rename to c4x_insert_attributes.
	Make static.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
	* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
	declare.
	* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
	(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
	Make static.
	* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
	declare.
	* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
	(v850_set_default_decl_attr): Rename to v850_insert_attributes.
	Adjust parameters.  Make static.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (decl_attributes): Only take a single attributes
	parameter.
	* c-common.h (decl_attributes): Update prototype.
	* c-decl.c (start_decl, start_function): Only take a single
	attributes parameter.  Update calls to decl_attributes.
	(finish_struct, finish_enum): Update calls to decl_attributes.
	(push_parm_decl): Expect unified list of attributes.  Update call
	to decl_attributes.
	* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
	notype_nested_function, component_declarator,
	component_notype_declarator, label): Update calls to
	decl_attributes.
	(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
	lists that are passed to push_parm_decl.
	* c-tree.h (start_function, start_decl): Update prototypes.
	* config/sh/sh-protos.h, config/sh/sh.c
	(sh_pragma_insert_attributes): Only take a single attributes
	parameter.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update.
	* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
	build_module_descriptor, generate_static_references,
	generate_strings, build_selector_translation_table,
	generate_descriptor_table, generate_protocols,
	generate_ivars_list, generate_dispatch_table,
	generate_protocol_list, generate_category,
	generate_shared_structures, really_start_method, add_objc_decls,
	generate_classref_translation_entry): Update calls to start_decl
	and start_function.
	(build_tmp_function_decl, start_method_def): Unify attribute lists
	that are passed to push_parm_decl.

2001-07-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* final.c (no_asm_to_stream): New.
	(final_scan_insn): Use target structures for prologue ends
	and epilogue starts.
	* output.h (no_asm_to_stream): New.
	* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
	(TARGET_ASM_OUT): Update.
	* target.h (struct gcc_target): New members function_end_prologue
	and function_begin_epilogue.
	* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
	* config/alpha/alpha-protos.h (output_end_prologue): Delete.
	* config/alpha/alpha.c (output_end_prologue): Rename to
	alpha_output_function_end_prologue.  Use in target struct
	and make static.
	* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
	* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
	* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
	ia64_output_function_end_prologue.  Use in target struct
	and make static.
	(ia64_function_prologue, ia64_funciton_epilogue): Rename
	mistyped prototypes.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
	* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
	Delete.
	* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
	an use in target struct, make static.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
	Delete.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* stmt.c (emit_case_nodes): Convert modes properly in low+high test.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Remove constraints strings from define_split
	and define_peephole2 patterns.
	(eh_return_si, eh_return_di): Split eh_return_1 for modes.
	(eh_return): Use them.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
	Document MD_FALLBACK_FRAME_STATE_FOR.

2001-07-07  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
	Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
	elimination.
	* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.

2001-07-07  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
	of the label inside NAME as opposed to just the end of NAME.

2001-07-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
	* config/alpha/alpha.c (alpha_init_machine_status,
	alpha_mark_machine_status, alpha_free_machine_status): Delete.
	(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
	(vms_valid_decl_attribute_p): Make static, conditionally compile.
	* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.

2001-07-06  Stan Shebs  <shebs@apple.com>

	* target.h (targetm): Rename global from "target", so as not to
	conflict with local variables.
	* c-decl.c: Ditto.
	* c-typeck.c: Ditto.
	* final.c: Ditto.
	* tree.c: Ditto.
	* cp/decl.c: Ditto.
	* cp/decl2.c: Ditto.
	* cp/typeck.c: Ditto.
	* 1750a/1750a.c: Ditto.
	* a29k/a29k.c: Ditto.
	* arc/arc.c: Ditto.
	* arm/arm.c: Ditto.
	* avr/avr.c: Ditto.
	* clipper/clipper.c: Ditto.
	* convex/convex.c: Ditto.
	* d30v/d30v.c: Ditto.
	* dsp16xx/dsp16xx.c: Ditto.
	* elxsi/elxsi.c: Ditto.
	* fr30/fr30.c: Ditto.
	* h8300/h8300.c: Ditto.
	* i370/i370.c: Ditto.
	* i386/i386.c: Ditto.
	* i860/i860.c: Ditto.
	* i960/i960.c: Ditto.
	* ia64/ia64.c: Ditto.
	* m32r/m32r.c: Ditto.
	* m68hc11/m68hc11.c: Ditto.
	* m68k/m68k.c: Ditto.
	* m88k/m88k.c: Ditto.
	* mips/mips.c: Ditto.
	* ns32k/ns32k.c: Ditto.
	* pa/pa.c: Ditto.
	* pdp11/pdp11.c: Ditto.
	* romp/romp.c: Ditto.
	* rs6000/rs6000.c: Ditto.
	* sh/sh.c: Ditto.
	* sparc/sparc.c: Ditto.
	* vax/vax.c: Ditto.
	* we32k/we32k.c: Ditto.
	* doc/tm.texi: Update the manual to match.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
	DWARF2_UNWIND_INFO not just whether it is defined.

2001-07-06  Diego Novillo  <dnovillo@redhat.com>

	* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
	call to simplify_binary_operation returns a new pattern.

2001-07-06  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* glimits.h (__SHRT_MAX__): New.
	(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
	(SHRT_MAX): Define in terms of __SHRT_MAX__.

2001-07-06  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
	avoid warnings.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* bitmap.c (bitmap_release_memory): Move adjacent to the
	allocation functions.
	(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
	the implementation.  Binary search for the set bit.
	(bitmap_union_of_diff): Allocate the temporary on the stack
	instead of using xmalloc.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* genrecog.c (validate_pattern): Warn for constraints in
	define_{expand,split,peephole2}.  Remove strict_low_part
	before looking up match_dup.

2001-07-06  DJ Delorie  <dj@redhat.com>

	* doc/gcc.texi (Makefile): Rename to be a more general purpose
	chapter about various build hints and history.  Add section
	talking about the various types of native and cross builds.

2001-07-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (final.o): Depend on target.h.
	* final.c: Include target.h.
	(default_function_pro_epilogue): New.
	(final_start_function): Use target structure for function prologues.
	(final_end_function): Use target structure for function epilogues.
	* fold-const.c (real_hex_to_f): Constify s and p.
	* output.h (default_function_pro_epilogue): New.
	* real.h (real_hex_to_f): Update prototype.
	* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
	TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
	(TARGET_INITIALIZER): Update.
	* target.h (gcc_target): Add struct asm_out.
	* doc/tm.texi: Update.

config:
	Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
	TARGET_ASM_FUNCTION_EPILOGUE.  Move macro code to functions
	in cpu/cpu.c, or rename old functions consistently.  Take
	a HOST_WIDE INT not an int as the SIZE parameter.  Remove now
	redundant macros and prototypes.  Make new functions static.

	* 1750a/1750a.c: Similarly.
	* 1750a/1750a.h: Similarly.
	* a29k/a29k-protos.h: Similarly.
	* a29k/a29k.c: Similarly.
	* a29k/a29k.h: Similarly.
	* arc/arc-protos.h: Similarly.
	* arc/arc.c: Similarly.
	* arc/arc.h: Similarly.
	* arm/arm-protos.h: Similarly.
	* arm/arm.c: Similarly.
	* arm/arm.h: Similarly.
	* avr/avr-protos.h: Similarly.
	* avr/avr.c: Similarly.
	* avr/avr.h: Similarly.
	* clipper/clipper-protos.h: Similarly.
	* clipper/clipper.c: Similarly.
	* clipper/clipper.h: Similarly.
	* convex/convex.c: Similarly.
	* convex/convex.h: Similarly.
	* d30v/d30v-protos.h: Similarly.
	* d30v/d30v.c: Similarly.
	* d30v/d30v.h: Similarly.
	* d30v/d30v.md: Similarly.
	* dsp16xx/dsp16xx-protos.h: Similarly.
	* dsp16xx/dsp16xx.c: Similarly.
	* dsp16xx/dsp16xx.h: Similarly.
	* elxsi/elxsi.c: Similarly.
	* elxsi/elxsi.h: Similarly.
	* fr30/fr30.c: Similarly.
	* fr30/fr30.md: Similarly.
	* h8300/h8300-protos.h: Similarly.
	* h8300/h8300.c: Similarly.
	* h8300/h8300.h: Similarly.
	* i370/i370-protos.h: Similarly.
	* i370/i370.c: Similarly.
	* i370/i370.h: Similarly.
	* i386/i386.c: Similarly.
	* i386/osf1elf.h: Similarly.
	* i386/osfrose.h: Similarly.
	* i860/i860-protos.h: Similarly.
	* i860/i860.c: Similarly.
	* i860/i860.h: Similarly.
	* i960/i960-protos.h: Similarly.
	* i960/i960.c: Similarly.
	* i960/i960.h: Similarly.
	* ia64/ia64-protos.h: Similarly.
	* ia64/ia64.c: Similarly.
	* ia64/ia64.h: Similarly.
	* m32r/m32r-protos.h: Similarly.
	* m32r/m32r.c: Similarly.
	* m32r/m32r.h: Similarly.
	* m68hc11/m68hc11-protos.h: Similarly.
	* m68hc11/m68hc11.c: Similarly.
	* m68hc11/m68hc11.h: Similarly.
	* m68k/crds.h: Similarly.
	* m68k/dpx2.h: Similarly.
	* m68k/m68k-protos.h: Similarly.
	* m68k/m68k.c: Similarly.
	* m68k/m68k.h: Similarly.
	* m68k/news.h: Similarly.
	* m88k/m88k-protos.h: Similarly.
	* m88k/m88k.c: Similarly.
	* m88k/m88k.h: Similarly.
	* mips/mips-protos.h: Similarly.
	* mips/mips.c: Similarly.
	* mips/mips.h: Similarly.
	* ns32k/merlin.h: Similarly.
	* ns32k/ns32k.c: Similarly.
	* ns32k/ns32k.h: Similarly.
	* ns32k/tek6000.h: Similarly.
	* pa/pa-protos.h: Similarly.
	* pa/pa.c: Similarly.
	* pa/pa.h: Similarly.
	* pdp11/2bsd.h: Similarly.
	* pdp11/pdp11-protos.h: Similarly.
	* pdp11/pdp11.c: Similarly.
	* pdp11/pdp11.h: Similarly.
	* romp/romp-protos.h: Similarly.
	* romp/romp.c: Similarly.
	* romp/romp.h: Similarly.
	* rs6000/rs6000-protos.h: Similarly.
	* rs6000/rs6000.c: Similarly.
	* rs6000/rs6000.h: Similarly.
	* rs6000/sysv4.h: Similarly.
	* sh/sh-protos.h: Similarly.
	* sh/sh.c: Similarly.
	* sh/sh.h: Similarly.
	* sparc/sparc-protos.h: Similarly.
	* sparc/sparc.c: Similarly.
	* sparc/sparc.h: Similarly.
	* vax/vax.c: Similarly.
	* vax/vax.h: Similarly.
	* vax/vms.h: Similarly.
	* we32k/we32k.c: Similarly.
	* we32k/we32k.h: Similarly.

Fri Jul  6 11:47:59 2001  Jeffrey A Law  (law@cygnus.com)

	* basic-block.h (first_insn_after_basic_block_note): Declare.
	* flow.c (first_insn_after_basic_block_note): Define.  Moved
	from...
	* ssa.c (first_insn_after_basic_block_note): Remove.
	* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
	necessary.
	(ssa_eliminate_dead_code): Properly update the CFG and PHI
	nodes when we find a dead conditional branch.  Insert BARRIERs
	after any blocks with no successors, but which do not have
	any BARRIERs.

2001-07-06  Zack Weinberg  <zackw@stanford.edu>

	* varray.c (varray_check_failed): Use internal_error.

2001-07-05  Andrew Haley  <aph@redhat.com>

	* Makefile.in (LIB2_DIVMOD_FUNCS): New.
	(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
	* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.

2001-07-02  Jason Merrill  <jason_merrill@redhat.com>

	* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
	reference if the target constant is also a SYMBOL_REF.

2001-07-05  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (MASK_MIPS3900): Remove.
	(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
	MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
	(TARGET_MIPS3900): Change to use mips_arch.
	(TARGET_MIPS4000): New.
	(TARGET_MIPS4100): New.
	(TARGET_MIPS4300): New.
	(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
	(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
	for -mipsX.
	(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
	(ISA_HAS_BRANCHLIKELY): To here.
	(CC1_CPU_SPEC):	 New.
	(CC1_SPEC): Use here.  Remove 4650 and 3900 options.
	(mips_arch_string): Declare.
	(mips_arch): Declare.
	(TARGET_OPTIONS): Add -march and -mtune.

	* config/mips/mips.c (mips_arch_string): New.
	(mips_arch): New.
	(override_options): Handle -march for codegen and -mtune
	for scheduling. Use mips_arch. Move tx39 target default here.
	(mips_parse_cpu): Move error message to override_options.

	* config/mips/r3900.h (TARGET_DEFAULT): Remove.

	* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.

	* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
	(MIPS Options): Ditto.	Change mcpu entry to historical text.

2001-07-05  H.J. Lu  (hjl@gnu.org)

        * config/mips/mips.c (mips_parse_cpu): New function to parse
        -march=*/-mcpu=*.

2001-07-05  Jim Wilson  <wilson@redhat.com>

	* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
	* config/ia64/t-ia64: Likewise.
	(LIB1ASMFUNCS): Update comment.

2001-07-05  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (Install GCC: Binaries): Fix typo.

2001-07-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
	reference using the stack pointer, adjust it since we push Y
	temporarily.
	("*ashrsi3"): Likewise.
	("*lshrsi3"): Likewise.

2001-07-05  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
	when -fomit-frame-pointer is used.

2001-07-05  Jeffrey Oldham  <oldham@codesourcery.com>

	* flow.c: Reverse Jan Hubicka's patch of 02July2001.
	(try_redirect_by_replacing_jump): Reverse updating properly the
	count and frequency information.  Reverse removing cc0 setter.
	(forwarder_block_p): Reverse fixing for fallthru blocks.

2001-07-05  DJ Delorie  <dj@redhat.com>

	* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
	(translate_options): If the above is defined, use it to map
	given options to new options.
	* doc/tm.texi: Document it.

2001-07-05  Brad Lucier <lucier@math.purdue.edu>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi (Optimize Options): Document that -fgcse may
	cause programs using computed gotos to run more slowly.

2001-07-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific): Markup, spelling and typo fixes.
	Fixed sorting.
	Consistently require binutils 2.11.2, not prereleases.
	(Specific, decstation-*): Canonicalize as mips-dec-*.
	(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
	always necessary.
	(Specific, m68k-altos): Removed reference to README.altos, deleted.
	(Specific, mips-*): Reword MIPS C compiler requirements.
	(Specific, powerpc*-*-*): New, mention --with-cpu once.
	(Specific, sunv5): Removed, obsolete.

2001-07-05  Nathan Sidwell  <nathan@codesourcery.com>

	* dwarf2out.c (output_loc_list): Use an all ones mask for
	.text asm output and don't rely on long long
	literals. Reformat some long lines.

2001-07-05  Andreas Jaeger  <aj@suse.de>

	* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
	section.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (dwarf2out_define): Update comment.
	(dwarf2out_undef): Ditto.
	(dwarf2out_start_source_file): Ditto.
	(dwarf2out_end_source_file): Ditto.
	(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
	since we never call the start/end debug hook for the primary file.

2001-07-04  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
	from shll.

2001-07-04  Nathan Sidwell  <nathan@codesourcery.com>

	* cppinit.c (remove_dup_dirs): Inform if a system include
        directory is being reordered.
	* doc/invoke.texi (Directory Options): GCC warns if you hide a
	system include.
	* doc/cpp.texi (Search Paths): Likewise.
	* doc/gcc.texi (Interoperation): Remove information about
	-I/usr/include.

2001-07-04  Nathan Sidwell  <nathan@codesourcery.com>

	* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
	(VARRAY_TOP_CHAR_PTR): Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (process_command): Don't assign elements of a const char*.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (change_address): Don't abort if invalid address while
	reload is in progress.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* c-lex.c (cb_file_change): Pass line number to
	debug_start_source_file.
	(cb_undefine): Pass correct line number to debug_undef.

	* toplev.c (debug_start_source_file): Add line number to
	parameters. Pass it along to dwarf2out_start_source_file.
	(decode_g_option): Stop resetting debug level back to normal when
	we change debug formats, unless the current level is
	none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
	3).

	* toplev.h (debug_start_source_file): Add line number to
	parameters.

	* dwarf2out.h (dwarf2out_start_source_file): Add line number to
	parameters.

	* dwarf2out.c (dwarf2out_start_source_file): Add line number to
	parameters.
	Output debug_macinfo data for starting file if requested.
	(dwarf2out_end_source_file): Output debug_macinfo data for ending
	file if requested.
	(dwarf2out_define): Output debug_macinfo data for defining a macro
	if requested.
	(dwarf2out_undef): Output debug_macinfo data for undefining a
	macro if requested.
	(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
	(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
	(macinfo_section_label): New. DWARF2 macro info section label.
	(dwarf2out_init): If we want macro info, output the start label
	for the section.
	(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
	attribute to the compilation unit die pointing to the macro info.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (new_loc_list): Move to inside #ifdef
	DWARF2_DEBUGGING_INFO.
	(add_loc_descr_to_loc_list): Ditto.
	(output_loc_list): Ditto.
	Also, fix thinko in curr not being initialized.
	(gen_internal_sym): Ditto.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (replace_equiv_address): New function.
	* expr.h (replace_equiv_address): New declaration.
	* explow.c (validize_mem): Call it instead of change_address and
	also call if -fforce-addr and address is constant.
	* expr.c: Replace more calls to change_address with adjust_address
	and/or replace_equiv_address or to validize_mem.
	* function.c, regmove.c, config/alpha/alpha.c: Likewise.
	* config/arm/arm.md, config/clipper/clipper.md: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i370/i370.md, config/i860/i860.md: Likewise.
	* config/i960/i960.md, config/mips/mips.c: Likewise.
	* config/mips/mips.md, config/pa/pa.md: Likewise.
	* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.

	* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
	function.

2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/include: New directory.
	* doc/fdl.texi: Move to doc/include/fdl.texi.
	* doc/texinfo.tex: Move to doc/include/texinfo.tex.
	* doc/include/funding.texi, doc/include/gpl.texi: New files.
	* doc/gcc.texi: Use funding.texi and gpl.texi.
	* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
	$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
	Update dependencies and use -I $(docdir)/include.

2001-07-04  Anthony Green  <green@redhat.com>

	* config/v850/t-v850 (v850-c.o): Add missing dependencies.

2001-07-04  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (sparc64-*-*): Remove garbage.

Wed Jul  4 09:07:44 2001  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
	Fix typo in last change to use adjust_address.

2001-07-04  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Update information for *-*-solaris*.

Tue Jul  3 22:33:15 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide): Reinitialize Y for restart.

2001-07-03  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
	case for flag_no_mach_text_sections.
	(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
	* config/darwin.c (flag_no_mach_text_sections): Remove.
	* config/darwin-protos.h (darwin_init_pragma): Remove decl.

Tue Jul  3 15:35:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
	and avoid checking for constant as first operand.
	* recog.c (find_constant_term_loc): No longer static.
	(adj_offettable_operand): Delete.
	* rtl.h (adj_offsettable_operand): Delete declaration.
	(find_constant_term): Add declaration.
	* caller-save.c: Replace calls to adj_offsettable_operand with calls
	to adjust_address.
	* config/arm/arm.c, config/c4x/c4x.c: Likewise.
	* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/i860/i860.c, config/i960/i960.c: Likewise.
	* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
	* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
	* config/mips/mips.c, config/mips/mips.md: Likewise.
	* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
	* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
	* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
	* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
	* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
	* config/ns32k/ns32k.md: Likewise.

2001-07-03  Zack Weinberg  <zackw@stanford.edu>

	* rtl.c (copy_rtx): Handle 'T' format letter.
	* gensupport.c (collect_insn_data): Likewise.
	* print-rtl.c (print_rtx): Print 'T' slots like 's'.

2001-07-03  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/invoke.texi (Directory Options): Specifiy range for <N> in
	-B option.  Use 'dir' not 'foo' as example directory name.

2001-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
	Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.

2001-07-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/cppinternals.texi: Improve formatting and logical markup.

2001-07-03  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (insn-recog.o): Add dependency on reload.h.

	* genrecog.c (write_header): Include reload.h for prototypes in
	insn-recog.c.

2001-07-03  Neil Booth  <neil@daikokuya.demon.co.uk>

config:
	* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Add.
	* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
	* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.

Mon Jul  2 21:52:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case LO_SUM): New case.
	(plus_constant_for_output_wide): Delete.
	* rtl.h (plus_constant_for_output): Delete.
	* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
	instead of plus_constant_for_output.
	* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
	* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
	* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.md: Likewise.
	Convert some change_address calls to adjust_address.

2001-07-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
	doc/rtl.texi, doc/tm.texi: Improve formatting.  Improve
	documentation of -std and -Wwrite-strings.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* cse.c (canon_hash): Don't register registers in very small
	register classes, as extending their lifetime might cause
	reload to fail.

Mon Jul  2 23:14:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.

	* flow.c (forwarder_block_p): Fix for fallthru blocks.
	(try_redirect_by_replacing_jump): Update properly the count
	and frequency information.

Mon Jul  2 14:20:13 2001  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (dump_file_index): Move SSA dumps just after first
	jump dump.
	(dump_file): Corresponding changes.
	(rest_of_compilation): Move SSA path to just after the first
	jump pass.
	* doc/gcc.texi (Passes): Update due to movement of SSA path.
	* doc/invoke.texi: Update dump file #s as they were completely
	out of date with reality.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.

	* expr.c (emit_move_insn_1): Deal with non-default
	STACK_PUSH_CODE.

	* expr.c (emit_single_push_insn): Fix warning.

2001-07-02  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* expr.c (emit_move_insn_1): Avoid modifying
	cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.

Mon Jul  2 15:33:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address): New function.
	* expr.h (adjust_address): Add declaration.
	* builtins.c: Replace some calls to change_address with calls to it
	or to validize_mem.
	* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
	* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
	* config/arm/arm.c, config/convex/convex.c: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
	* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.c, config/mips/mips.md: Likewise.
	* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
	* config/sh/sh.c, config/sparc/sparc.md: Likewise.

2001-07-02  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.

2001-07-02  Steve Ellcey  <sje@cup.hp.com>

        * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
        * config/ia64/lib1funcs.asm: Change macro names to match t-ia64.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* cppinit.c (lang_defaults): New table.
	(set_lang): Just read from lang_defaults into the live options
	structure.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
	* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
	* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.

2001-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi: Various spelling and markup fixes.
	(Installing GCC): Component specific installation instructions are
	gone.
	Fix reference.
	Warn about removing old install dir in the presence of shared libs.
	(Configuration): Invoke with options target to match configure
	--help.
	Consistently refer to gas, gld pathnames.
	Invert --enable-multilib documentation.
	Remove references to old compiler versions.

Mon Jul  2 12:50:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.

2001-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
	section.
	(Specific, mips*-sgi-irix5): Note IDO download.
	Reworded MIPS C hints.
	Use GNU as instead of GAS.
	Markup fixes.
	Removed SGI Freeware reference, IRIX 6 only.
	(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
	Note N64 library requirement/workaround.
	Update O32 hints.
	Complete list of structure passing bug victims.

2001-07-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi: Remove CVS Id.

2001-07-02  Andreas Jaeger  <aj@suse.de>

	* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
	(find_inherently_necessary): Remove unused variable.

2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (TDI_inlined): New ast dump phase.
	(dump_flag_name): New function.
	* c-dump.c (dump_files): Add inlined phase.
	(dump_flag_name): Define.
	* doc/invoke.texi (-fdump-ast-inlined): Document.

Mon Jul  2 06:29:36 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_decl): Revert change to handling of alignment
	in packed types.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
	for FIELD_DECL.

2001-07-01  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (FUNCTION_ARG): Document that the last call
	is special.

2001-07-01  Nathan Sidwell  <nathan@codesourcery.com>

	* tlink.c (recompile_files): Remove COMPILER_PATH and
	LIBRARY_PATH from the environment.

2001-07-01  Zack Weinberg  <zackw@stanford.edu>

	* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
	RID_LAST_PQ.  Move RID_FIRST_PQ down with the other FIRST/LAST
	enumerators.
	(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.

	* c-parse.in (OBJC_STRING): Kill.
	(objc_string): Decompose to [objc_string] '@' STRING.
	(reswords): Take the leading '@' off all the Objective C keywords.
	(objc_rid_sans_at): Kill.
	(init_reswords): Don't initialize it.
	(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
	(_yylex): Kill reconsider label.  Look ahead one token after
	an '@'; if we get an identifier, check whether it's an
	Objective C @-keyword.  If so, return the keyword.  Otherwise,
	put back the token and return the '@' as a terminal.

	* cpplib.c (lex_macro_node): Remove unnecessary check for
	leading '@' on identifier.  Clarify control flow and commentary.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cse.c (new_label_ref): Variable deleted.
	(insert): Remove set of new_label_ref.
	(check_for_label_ref): New function.
	(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.

See ChangeLog.5 for earlier changes.

From-SVN: r43861
2001-07-09 07:20:51 -04:00
Geoffrey Keating
8bf4dfc24f cse.c (canon_hash): Don't register registers in very small register classes...
* cse.c (canon_hash): Don't register registers in very small
	register classes, as extending their lifetime might cause
	reload to fail.

From-SVN: r43714
2001-07-02 23:24:02 +00:00
Richard Kenner
be8ac49a3e cse.c (new_label_ref): Variable deleted.
* cse.c (new_label_ref): Variable deleted.
	(insert): Remove set of new_label_ref.
	(check_for_label_ref): New function.
	(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.

From-SVN: r43672
2001-07-01 11:52:26 -04:00
Jan Hubicka
949c5d6257 cse.c (fold_rtx): Use simplify_subreg.
* cse.c (fold_rtx): Use simplify_subreg.

	* simplify-rtx.c (simplify_replace_rtx): Use simplify_gen_subreg.
	(simplify_gen_subreg): New.
	(simplify_rtx): Use simplify_subreg.
	* rtl.h (simplify_gen_subreg): Declare.

From-SVN: r42221
2001-05-17 18:46:58 +00:00
Jeffrey A Law
d466c016c5 cse.c (cse_insn): Mostly remove first hunk of code which collapsed a computed jump into an...
* cse.c (cse_insn): Mostly remove first hunk of code which collapsed
        a computed jump into an unconditional jump.
        In second hunk of code for collapsing computed and conditional jumps
        into unconditional jumps, reemit the jump in additional cases.

From-SVN: r41953
2001-05-10 18:23:46 -06:00
Kaveh R. Ghazi
9714cf4399 c-lex.c: NULL_PTR -> NULL.
* c-lex.c: NULL_PTR -> NULL.
	* cse.c: Likewise.
	* emit-rtl.c: Likewise.
	* gcse.c: Likewise.
	* genpeep.c: Likewise.
	* jump.c: Likewise.
	* mips-tdump.c: Likewise.
	* reload1.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.

From-SVN: r41761
2001-05-02 14:31:45 +00:00
Jakub Jelinek
43e720723f gcse.c (gcse_main): Fix comment typo.
* gcse.c (gcse_main): Fix comment typo.
	(delete_null_pointer_check): Likewise.
	(hash_scan_set): Don't consider sets with REG_EQUIV MEM notes.
	* cse.c (cse_insn): Likewise.
	* function.c (fixup_var_refs_insns_with_hash): The sequence is
	toplevel.

	* gcc.c-torture/execute/20010403-1.c: New test.

From-SVN: r41444
2001-04-20 09:56:50 +02:00
John Wehle
7142e31845 rtl.h (set_noop_p): Declare.
* rtl.h (set_noop_p): Declare.
	* flow.c (set_noop_p): Move from here ...
	* rtlanal.c (set_noop_p): ... to here and enhance.
	* cse.c (delete_trivially_dead_insns): Use it.
	* gcse.c (hash_scan_set): Likewise.
	* jump.c (delete_noop_moves): Likewise.
	* recog.c (split_all_insns): Likewise.

From-SVN: r41077
2001-04-04 05:03:29 +00:00
Jakub Jelinek
ddef6bc7a3 Use byte offsets in SUBREGs instead of words.
2001-04-03  Jakub Jelinek  <jakub@redhat.com>
	    David S. Miller  <davem@pierdol.cobaltmicro.com>
            Andrew MacLeod  <amacleod@redhat.com>

	Use byte offsets in SUBREGs instead of words.

	* alias.c (nonlocal_mentioned_p): Use subreg_regno function.
	* caller-save.c (mark_set_regs): Change callers of subreg_hard_regno
	to pass new argument.
	(add_stored_regs): Use subreg_regno_offset function.
	* calls.c (expand_call): For non-paradoxical SUBREG take endianess
	into account.
	(precompute_arguments): Use gen_lowpart_SUBREG.
	* combine.c (try_combine): Replace explicit XEXP with SUBREG_REG.
	(combine_simplify_rtx): Rework to use SUBREG_BYTE.
	(simplify_set): Rework to use SUBREG_BYTE.
	(expand_field_assignment): Use SUBREG_BYTE.
	(make_extraction): Use SUBREG_BYTE.
	(if_then_else_cond): Use SUBREG_BYTE.
	(apply_distributive_law): Use SUBREG_BYTE and fixup subreg comments.
	(gen_lowpart_for_combine): Compute full byte offset.
	* cse.c (mention_regs): Use SUBREG_BYTE.
	(remove_invalid_subreg_refs): Rework to use SUBREG_BYTE.
	(canon_hash): Use SUBREG_BYTE.
	(fold_rtx): Pass SUBREG_BYTE div UNITS_PER_WORD to operand_subword.
	(gen_lowpart_if_possible): Formatting.
	* dbxout.c (dbxout_symbol_location): Compute SUBREG hard regnos
	correctly.
	* dwarf2out.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* dwarfout.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(output_mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(output_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* emit-rtl.c (gen_rtx_SUBREG): New function, used to verify
	certain invariants about SUBREGs the compiler creates.
	(gen_lowpart_SUBREG): New function.
	(subreg_hard_regno): New function to get the final register number.
	(gen_lowpart_common): Use SUBREG_BYTE.
	(gen_imagpart): Spacing nits.
	(subreg_realpart_p): Use SUBREG_BYTE.
	(gen_highpart): Use SUBREG_BYTE.
	(subreg_lowpart_p): Always compute endian corrected goal offset,
	even at the byte level, then compare against that.
	(constant_subword): New function, pulled out all constant cases
	from operand_subword and changed second argument name to offset.
	(operand_subword): Detect non REG/SUBREG/CONCAT/MEM cases early
	and call constant_subword to do the work.  Return const0_rtx if
	looking for a word outside of OP.
	(operand_subword_force): Change second arg name to offset.
	* expmed.c (store_bit_field): Use SUBREG_BYTE.
	(store_split_bit_field): Use SUBREG_BYTE.
	(extract_bit_field): Use SUBREG_BYTE.
	(extract_split_bit_field): Use SUBREG_BYTE.
	(expand_shift): Use SUBREG_BYTE.
	* expr.c (store_expr, expand_expr): Use gen_lowpart_SUBREG.
	* final.c (alter_subreg) Use subreg_hard_regno and SUBREG_BYTE.
	* flow.c (set_noop_p): Use SUBREG_BYTE.
	(mark_set_1): Remove ALTER_HARD_SUBREG. Use subreg_regno_offset instead.
	* function.c (fixup_var_refs_1): Fixup explicit XEXP into a SUBREG_REG.
	(fixup_memory_subreg): Use SUBREG_BYTE and remove byte endian
	correction code.
	(optimize_bit_field): Use SUBREG_BYTE.
	(purge_addressof_1): Use SUBREG_BYTE.
	(purge_single_hard_subreg_set): Use subreg_regno_offset function.
	(assign_params): Mark arguments SUBREG_PROMOTED_VAR_P if they are
	actually promoted by the caller and PROMOTE_FOR_CALLS_ONLY is true.
	* gengenrtl.c (special_rtx): Add SUBREG.
	* global.c (mark_reg_store): Use SUBREG_BYTE.
	(set_preference): Rework to use subreg_regno_offset and SUBREG_BYTE.
	* ifcvt (noce_emit_move_insn): Use SUBREG_BYTE.
	* integrate.c (copy_rtx_and_substitute): Use SUBREG_BYTE and make sure
	final byte offset is congruent to subreg's mode size.
	(subst_constants): Use SUBREG_BYTE.
	(mark_stores): Use subreg_regno_offset function.
	* jump.c (rtx_renumbered_equal_p, true_regnum): Use subreg_regno_offset
	function and SUBREG_BYTE.
	* local-alloc.c (combine_regs): Use subreg_regno_offset function.
	(reg_is_born): Use subreg_hard_regno.
	* recog.c (valid_replace_rtx_1): Use SUBREG_BYTE and remove byte
	endian correction code.  Don't combine subregs unless resulting
	offset aligns with type.  Fix subreg constant extraction for DImode.
	Simplify SUBREG of VOIDmode CONST_DOUBLE.
	(general_operand): Remove dead mode_altering_drug code.
	(indirect_operand): Use SUBREG_BYTE.
	(constrain_operands): Use subreg_regno_offset function.
	* reg-stack.c (get_true_reg): Use subreg_regno_offset function.
	* regmove.c (regmove_optimize): Use SUBREG_BYTE.
	(optimize_reg_copy_3): Use gen_lowpart_SUBREG.
	* regs.h (REG_SIZE): Allow target to override.
	(REGMODE_NATURAL_SIZE): New macro which target can override.
	* reload.c (reload_inner_reg_of_subreg): subreg_regno should be used
	on the entire subreg rtx.
	(push_reload): Use SUBREG_BYTE in comments and code.
	(find_dummy_reload): Use subreg_regno_offset.  Only adjust offsets
	for hard registers inside subregs.
	(operands_match_p): Use subreg_regno_offset.
	(find_reloads): Use SUBREG_BYTE and only advance offset for subregs
	containing hard regs.
	(find_reload_toplev): Use SUBREG_BYTE.  Remove byte endian
	corrections when fixing up MEM subregs.
	(find_reloads_address_1): Use SUBREG_BYTE, subreg_regno, and
	subreg_regno_offset where appropriate.
	(find_reloads_subreg_address): Use SUBREG_BYTE.  Remove
	byte endian corrections when fixing up MEM subregs.
	(subst_reloads): When combining two subregs, make sure final
	offset is congruent to subreg's mode size.
	(find_replacement): Use SUBREG_BYTE and subreg_regno_offset.
	(refers_to_regno_for_reload_p): Use subreg_regno.
	(reg_overlap_mentioned_for_reload_p): Use subreg_regno_offset.
	* reload1.c (eliminate_regs) Use SUBREG_BYTE. Remove byte endian
	correction code for memory subreg fixups.
	(forget_old_reload_1): Use subreg_regno_offset.
	(choose_reload_regs): Use subreg_regno.
	(emit_input_reload_insns): Use SUBREG_BYTE.
	(reload_combine_note_store): Use subreg_regno_offset.
	(move2add_note_store): Use subreg_regno_offset.
	* resource.c (update_live_status, mark_referenced_resources): Use
	subreg_regno function.
	(mark_set_resources): Use subreg_regno function.
	* rtl.h (SUBREG_WORD): Rename to SUBREG_BYTE.
	(subreg_regno_offset, subreg_regno): Define prototypes.
	(subreg_hard_regno, constant_subword, gen_rtx_SUBREG): Newi functions.
	(gen_lowpart_SUBREG): Add prototype.
	* rtl.texi (subreg): Update to reflect new byte offset representation.
	Add mentioning of the effect that BYTES_BIG_ENDIAN has on subregs now.
	* rtlanal.c (refers_to_regno_p): Use subreg_regno.
	(reg_overlap_mentioned_p): Use subreg_regno.
	(replace_regs); Make sure final offset of combined subreg is
	congruent to size of subreg's mode.
	(subreg_regno_offset): New function.
	(subreg_regno): New function.
	* sched-vis.c (print_value): Change SUBREG_WORD to SUBREG_BYTE.
	* sdbout.c (sdbout_symbol): Compute offset using alter_subreg.
	* stmt.c (expand_anon_union_decl): Use gen_lowpart_SUBREG.
	* tm.texi (ALTER_HARD_SUBREG): Remove, it is now dead.
	(SUBREG_REGNO_OFFSET): Describe SUBREG_REGNO_OFFSET overrides.
	* config/a29k/a29k.c (gpc_reg_operand): Use subreg_regno.
	(a29k_get_reloaded_address): Use SUBREG_BYTE.
	(print_operand): Use SUBREG_BYTE.
	* config/alpha/alpha.c (print_operand_address): Use SUBREG_BYTE.
	* config/arm/arm.c (arm_reload_in_hi): Use SUBREG_BYTE.
	(arm_reload_out_hi): Use SUBREG_BYTE.
	* config/d30v/d30v.c (d30v_split_double): Use subreg_regno_offset
	instead of SUBREG_WORD.
	(d30v_print_operand_memory_reference): Use subreg_regno_offset.
	* config/dsp16xx/dsp16xx.md (extendqihi2, zero_extendqihi2): Fix
	SUBREG creation to use byte offset.
	* config/h8300/h8300.md (Unnamed HImode zero extraction and 16bit
	inverted load insns): Fix explicit rtl subregs to use byte
	offsets.
	* config/i370/i370.md (cmpstrsi, movstrsi, mulsi3, divsi3,
	udivsi3, umodsi3): Generate SUBREGs with byte offsets.
	* config/i860/i860.c (single_insn_src_p): Use SUBREG_BYTE.
	* config/i860/i860.md (mulsi3_big): Fixup explicit SUBREGs in rtl
	to use byte offsets.
	(unnamed fmlow.dd insn): Fixup SUBREGS to use byte offsets.
	* config/i960/i960.md (extendhisi2): Generate SUBREGs with byte
	offsets, also make sure it is congruent to SUBREG's mode size.
	(extendqisi2, extendqihi2, zero_extendhisi2, zero_extendqisi2,
	unnamed ldob insn): Generate SUBREGs with byte offset.
	(zero_extendqihi2): SUBREG's are byte offsets.
	* config/m68hc11/m68hc11.c (m68hc11_gen_lowpart): Use SUBREG_BYTE.
	(m68hc11_gen_highpart): Use SUBREG_BYTE.
	* config/m68k/m68k.md (zero_extendhisi2, zero_extendqihi2,
	zero-extendqisi2): Generate SUBREGs with byte offset.
	(umulsidi3, mulsidi3, subreghi1ashrdi_const32,
	subregsi1ashrdi_const32, subreg1lshrdi_const32): Fixup explicit
	subregs in rtl to use byte offsets.
	* config/m88k/m88k.md (extendsidi2): fixup subregs to use byte offset.
	* config/mips/mips.c (mips_move_1word): Use subreg_regno_offset.
	(mips_move_2words): Use subreg_regno_offset.
	(mips_secondary_reload_class): Use subreg_regno_offset.
	* config/mips/mips.md (DImode plus, minus, move, and logical op
	splits): Fixup explicit subregs in rtl to use byte offsets.
	* config/mn10200/mn10200.c (print_operand): Use subreg_regno function.
	* config/mn10300/mn10300.c (print_operand): Use subreg_regno function.
	* config/ns32k/ns32k.md (udivmoddisi4): Fix explicit subregs in
	rtl to use byte offsets.
	* config/pa/pa.c (emit_move_sequence): Use SUBREG_BYTE.
	* config/pa/pa.md (floatunssisf2, floatunssidf2, mulsi3): fix explicit
	subregs to use byte offsets.
	* config/pdp11/pdp11.md (zero_extendhisi2, modhi3, modhi3+1):
	Fixup explicit subregs in rtl to use byte offsets.
	* config/romp/romp.c (memory_offset_in_range_p): Use SUBREG_BYTE
	and remove byte endian correction code.
	* config/sh/sh.c (output_movedouble): Use subreg_regno.
	(gen_ashift_hi): Use SUBREG_BYTE.
	(regs_used): Use subreg_regno_offset.
	(machine_dependent_reorg): Use subreg_regno_offset.
	* config/sh/sh.h (INDEX_REGISTER_RTX_P): Use SUBREG_BYTE.
	* config/sh/sh.md (DImode and DFmode move splits): Use subreg_regno.
	(movdf_i4): Subregs are byte offsets now.
	* config/sparc/sparc.c (ultra_find_type): Use SUBREG_BYTE.
	* config/sparc/sparc.h (ALTER_HARD_SUBREG): Removed.
	(REGMODE_NATURAL_SIZE): Override.
	(REG_SIZE): For SUBREG check float mode on SUBREG_REG's mode.
	* config/sparc/sparc.md (TFmode move splits): Generate SUBREGs
	with byte offsets.
	(zero_extendhisi2, zero_extendqidi2_insn, extendhisi2,
	extendqihi2, sign_extendqihi2_insn, sign_extendqisi2_insn,
	extendqidi2): Generate SUBREGs with byte offsets, also make sure
	it is congruent to SUBREG's mode size.
	(smulsi3_highpart_v8plus): Fix explicit subregs in rtl to use byte
	offsets.
	(cmp_siqi_trunc, cmp_siqi_trunc_set, cmp_diqi_trunc,
	cmp_diqi_trunc_set, lshrdi3_v8plus+1, lshrdi3_v8plus+2,
	lshrdi3_v8plus+3, lshrdi3_v8plus+4): Use proper
	SUBREG_BYTE offset for non-paradoxical subregs in patterns.
	* config/v850/v850.c (print_operand, output_move_double): Use
	subreg_regno function.

Co-Authored-By: Andrew MacLeod <amacleod@redhat.com>
Co-Authored-By: David S. Miller <davem@pierdol.cobaltmicro.com>

From-SVN: r41058
2001-04-03 15:06:12 +00:00
Richard Kenner
bca05d20b8 cse.c (find_comparison_args): Remove previous change.
* cse.c (find_comparison_args): Remove previous change.
	* ifcvt.c (noce_process_if_block): When moving an insn, remove any
	REG_EQUAL notes.

From-SVN: r40715
2001-03-21 15:19:21 -05:00
Mark Mitchell
68e568c28e cse.c (find_comparison_args): Update documentation.
* cse.c (find_comparison_args): Update documentation.  Fix
	mishandling of COMPARE operations.

	* tree.def (ABS_EXPR): Add documentation.
	* fold-const.c (fold): Improve folding of ABS_EXPRs.

From-SVN: r40630
2001-03-19 18:53:04 +00:00
Brad Lucier
de6c597958 Brad's -ffast-math breakup.
From-SVN: r40300
2001-03-07 11:29:41 -08:00
Zack Weinberg
d6edb99e92 xm-lynx.h, [...]: Do not define TRUE or FALSE.
* config/xm-lynx.h, config/xm-std32.h, config/a29k/xm-a29k.h,
	config/a29k/xm-unix.h, config/alpha/xm-alpha.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h, config/i386/xm-aix.h,
	config/i386/xm-i386.h, config/i386/xm-osf.h,
	config/i860/xm-i860.h, config/i960/xm-i960.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/m88k/xm-m88k.h,
	config/mcore/xm-mcore.h, config/mips/xm-mips.h,
	config/mn10200/xm-mn10200.h, config/mn10300/xm-mn10300.h,
	config/ns32k/xm-ns32k.h, config/pa/xm-linux.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/vax/xm-vms.h, config/we32k/xm-we32k.h:
	Do not define TRUE or FALSE.

	* config/i386/xm-aix.h, config/i386/xm-osf.h: Delete; made
	empty by above change.
	* config.gcc: Remove references to these files.

	* configure.in: Detect stdbool.h.
	* configure, config.in: Regenerate.
	* system.h: Include stddef.h here if available.  Set
	HAVE__BOOL based on GCC_VERSION and __STDC_VERSION__.  Then
	set up a sensible boolean type at the very end.

	* combine.c, cse.c, expr.c, fold-const.c, gensupport.c,
	f/com.c, config/mcore/mcore.c:
	Rename variables named 'true' and/or 'false'.

	* hash.h: Delete 'boolean' typedef and related #undefs.
	* f/proj.h: Delete 'bool' type.  Don't include stddef.h here.

	* function.c, ggc-common.c, hash.h, hash.c, tlink.c, cp/decl.c,
	java/class.c, java/decl.c, java/java-tree.h:
	Replace all uses of 'boolean' with 'bool'.

From-SVN: r40176
2001-03-02 01:51:02 +00:00
Richard Kenner
f85cc4cbe2 cse.c (new_label_ref): New variable.
* cse.c (new_label_ref): New variable.
	(insert): Set it instead of recorded_label_ref.
	(cse_basic_block): Set recorded_label_ref if new_label_ref use, has
	CODE_LABEL for this function, and not already in REG_LABEL note.

From-SVN: r39768
2001-02-16 12:50:49 -05:00
Jan Hubicka
848e0190fb cse.c (cse_main): Converts ifdefs on PIC_OFFSET_TABLE_REGNUM to conditionals.
* cse.c (cse_main): Converts ifdefs on PIC_OFFSET_TABLE_REGNUM to
	conditionals.
	* defaults.h (PIC_OFFSET_TABLE_REGNUM): Default to INVALID_REGNUM.
	* emit-rtl.c (init_emit_once): Convert ifdefs to conditionals.
	* flow.c (mark_regs_live_at_end): Likewise.
	(calculate_global_regs_live): Likewise.
	* gcse.c (compute_hash_table): Likewise.
	(compute_kill_rd): Likewise.
	* resource.c (mark_target_live_regs): Likewise.
	* rtl.h (INVALID_REGNUM): New macro.

From-SVN: r39643
2001-02-13 20:17:45 +00:00
Richard Kenner
05bd3d4156 * cse.c (find_best_addr): Fix typo in computing cost.
From-SVN: r39490
2001-02-06 07:55:06 -05:00
Alexandre Oliva
f474c6f8f9 calls.c (emit_library_call_value_1): Add USEs and CLOBBERs to function usage for arguments passed by reference.
* calls.c (emit_library_call_value_1): Add USEs and CLOBBERs
to function usage for arguments passed by reference.  Optimize
callee-copied arguments.
* regmove.c (find_related_toplev): Find uses in function usage.
(replace_in_call_usage): New function.
(fixup_match_1): Call it.
* cse.c (cse_insn): Canonicalize registers in function usage.
* reload1.c (replace_pseudos_in_call_usage): New function.
(reload): Call it.

From-SVN: r38964
2001-01-12 21:58:56 +00:00
Jan Hubicka
261efdefd0 jump.c (jump_optimize_1): Use reversed_comparison_code instead of can_reverse_comparison_p.
* jump.c (jump_optimize_1): Use reversed_comparison_code
	instead of can_reverse_comparison_p.
	(jump_back_p): Likewise.
	(invert_exp_1): Likewise.
	(thread_jumps): Likewise.
	* simplify-rtx.c (simplify_unary_operation): Likewise.
	(simplify_ternary_operation): Likewise.
	* cse.c (find_comparison_args): Convert to use
	can_reverse_comparison_p.
	(record_jump_equiv): Likewise.

From-SVN: r38802
2001-01-08 15:16:40 +00:00
Jan Hubicka
fd13313fdb * cse.c (fold_rtx): Handle unordered comparisons.
From-SVN: r38773
2001-01-07 13:32:59 +00:00
J"orn Rennecke
8b03b9843b cse.c (find_comparison_args): Stop if the argument is known to be constant.
* cse.c (find_comparison_args): Stop if the argument is known to
	be constant.

From-SVN: r38723
2001-01-05 20:42:30 +00:00
Bernd Schmidt
fc5769d98c Fix silliness in last change
From-SVN: r38658
2001-01-03 14:29:01 +00:00
Bernd Schmidt
2be28ee21b Add extra arg to cse_rtx_varies_p
From-SVN: r38656
2001-01-03 14:08:30 +00:00
Bernd Schmidt
e38fe8e0cb Extra arg for rtx_varies_p
From-SVN: r38590
2001-01-01 17:20:09 +00:00
Richard Sandiford
58ecb5e2cd Avoid a bit of copy propagation when there's a REG_EQUIV note
From-SVN: r37705
2000-11-24 11:36:27 +00:00
Graham Stott
99a9c9460d cse.c (cse_insn): Initialise all regcost variables.
* cse.c (cse_insn): Initialise all regcost variables.
        Fix a typo add missing '='.
        Only compare costs if there is a replacement insn.

From-SVN: r37694
2000-11-23 11:04:45 +00:00
Joseph Myers
961192e1dd alias.c [...] (init_alias_analysis, [...]): Use memset () instead of bzero ().
* alias.c (init_alias_analysis), calls.c (expand_call,
	emit_library_call_value_1), combine.c (init_reg_last_arrays),
	cse.c (new_basic_block), dbxout.c (dbxout_type), diagnostic.c
	(init_output_buffer, set_diagnostic_context), dwarf2out.c
	(equate_decl_number_to_die, build_abbrev_table), emit-rtl.c
	(init_emit_once), fold-const.c (mul_double, div_and_round_double),
	function.c (assign_parms), gcse.c (compute_can_copy,
	alloc_gcse_mem, alloc_reg_set_mem, record_one_set,
	compute_hash_table, compute_set_hash_table,
	compute_expr_hash_table), genattrtab.c (optimize_attrs), global.c
	(global_alloc, global_conflicts), haifa-sched.c (compute_trg_info,
	clear_units, schedule_block), integrate.c (initialize_for_inline,
	expand_inline_function), jump.c (thread_jumps), local-alloc.c
	(local_alloc), loop.c (combine_movables, count_loop_regs_set,
	load_mems_and_recount_loop_regs_set), print-tree.c (debug_tree),
	regclass.c (init_reg_sets, init_reg_sets_1, regclass,
	record_reg_classes, allocate_reg_info), reload.c
	(get_secondary_mem, remove_address_replacements, find_reloads),
	reload1.c (reload, set_initial_label_offsets, finish_spills,
	reload_as_needed, choose_reload_regs_init,
	reload_cse_simplify_operands), reorg.c (dbr_schedule), sbitmap.c
	(sbitmap_zero), simplify-rtx.c (simplify_plus_minus), ssa.c
	(rename_registers), stmt.c (expand_end_case), unroll.c
	(unroll_loop), varray.c (varray_grow), objc/objc-act.c: Use memset
	() instead of bzero ().

ch:
	* actions.c (check_missing_cases), typeck.c (build_chill_slice,
	build_chill_cast): Use memset () instead of bzero ().

cp:
	* class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
	(push_binding_level), error.c (cp_tree_printer), pt.c
	(process_partial_specialization, tsubst_template_arg_vector),
	search.c (lookup_member): Use memset () instead of bzero ().

java:
	* expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
	(init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
	instead of bzero ().

From-SVN: r37303
2000-11-07 22:50:06 +00:00
Richard Henderson
78192b0984 cse.c (find_comparison_args): Check that we can reverse a comparison if needed before accepting the substitution.
* cse.c (find_comparison_args): Check that we can reverse a
        comparison if needed before accepting the substitution.

From-SVN: r37064
2000-10-25 17:17:53 -07:00
Mark Mitchell
1f8f4a0b31 Remove obstacks.
* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

From-SVN: r36856
2000-10-13 06:26:46 +00:00
Richard Henderson
f2fa288f03 cse.c (notreg_cost): New argument outer.
* cse.c (notreg_cost): New argument outer.
        (COST): Pass in SET to notreg_cost
        (COST_IN): New.
        (fold_rtx): Use COST_IN.  Prefer constants when costs
        are the same.

From-SVN: r36671
2000-09-29 16:22:20 -07:00
Richard Henderson
b437f1a754 calls.c (precompute_register_parameters): Use COSTS_N_INSNS, not 2.
* calls.c (precompute_register_parameters): Use COSTS_N_INSNS, not 2.
        * cse.c (rtx_cost): Likewise.
        * optabls.c (expand_binop): Likewise.
        (expand_twoval_binop, prepare_cmp_insn): Likewise.
        * regclass.c (copy_cost): Likewise.
        * reload1.c (reload_cse_move2add): Likewise.

From-SVN: r36423
2000-09-14 19:56:02 -07:00
John Wehle
bb07060a6a alias.c (find_base_term): Use frame_pointer_rtx when handling an ADDRESSOF.
* alias.c (find_base_term): Use frame_pointer_rtx
	when handling an ADDRESSOF.

	* cse.c (canon_hash): Handle USE of BLKmode memory.
	(cse_insn): Outgoing arguments for a libcall don't
	affect any recorded expressions.

From-SVN: r36384
2000-09-13 06:27:16 +00:00
Bernd Schmidt
f1c1dfc389 Fix hard reg cost calculations in CSE; some minor cleanups
From-SVN: r36354
2000-09-12 08:39:36 +00:00
Richard Henderson
a5e5cf67cc * cse.c (fold_rtx): Honor NO_FUNCTION_CSE.
From-SVN: r36331
2000-09-11 14:34:57 -07:00
Bernd Schmidt
630c79be17 Changes in cse.c/loop.c cost calculations
From-SVN: r36192
2000-09-06 09:20:38 +00:00
Alexandre Oliva
c0712acbc7 gcse.c (hash_string_1): Add prototype.
* gcse.c (hash_string_1): Add prototype.
* cse.c (canon_hash_string): Likewise.

From-SVN: r36154
2000-09-05 06:04:09 +00:00
Alexandre Oliva
6462bb432f rtl.h (ASM_OPERANDS_INPUT_CONSTRAINT_EXP): New macro.
* rtl.h (ASM_OPERANDS_INPUT_CONSTRAINT_EXP): New macro.
* gcse.c (hash_string_1): New function.
(hash_expr_1) <ASM_OPERANDS>: Disregard filename and line number.
(expr_equiv_p) <ASM_OPERANDS>: Likewise.
* cse.c (rtx_cost): Don't increase the cost of ASM_OPERANDS.
(canon_hash_string): New function.
(canon_hash) <ASM_OPERANDS>: Disregard filename and line number.
(exp_equiv_p) <ASM_OPERANDS>: Likewise.
(fold_rtx): Use ASM_OPERANDS accessor macros.
* emit-rtl.c (copy_insn_1): Likewise.
* integrate.c (copy_rtx_and_substitute): Likewise.
* stmt.c (expand_asm_operands): Likewise.  Give an
ASM_OPERANDS rtx the mode of the output reg being set from it.

From-SVN: r36110
2000-09-02 02:54:55 +00:00
Jim Wilson
d51ff7cb78 Fix IA-64 abort on testcase with switch statement that can be optimized away.
* cse.c (cse_insn): Don't pass label subtraction to force_const_mem.

From-SVN: r35992
2000-08-25 14:50:06 -07:00
Alexandre Oliva
95d0e5f1d0 simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to simplify_relational_operation() unless...
* simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to
simplify_relational_operation() unless both operands are of
VOIDmode.
* cse.c (fold_rtx): Likewise.

From-SVN: r35904
2000-08-23 07:59:06 +00:00
Rodney Brown
889e5964f2 * cse.c (insert_regs): Remove unused `regno'.
From-SVN: r35770
2000-08-17 17:03:43 -06:00
Kaveh R. Ghazi
e49a1d2e07 cse.c (fold_rtx): Avoid empty body in an if-statement.
* cse.c (fold_rtx): Avoid empty body in an if-statement.

	* doloop.c (doloop_iterations_max, doloop_modify): Avoid using the
	`U' integer constant suffix.

	* dwarf2out.c (add_subscript_info): Avoid empty body in an
	else-statement.

	* sparc/sol2.h (__enable_execute_stack): Prototype.

From-SVN: r35687
2000-08-14 20:55:11 +00:00
J"orn Rennecke
d9f204241b cse.c (insert_regs): Also in REG case...
* cse.c (insert_regs): Also in REG case: When finding an invalid
	value, and we make a new quantity, make sure that it won't be
	mistaken by for a valid one by mention_regs.

From-SVN: r35679
2000-08-14 18:54:23 +01:00
Kazu Hirata
ddc356e89a * cse.c: Fix formatting.
From-SVN: r35675
2000-08-14 08:31:23 -06:00
Rodney Brown
2c3c49dec3 alias.c (mark_constant_function): Use INSN_P.
* alias.c (mark_constant_function): Use INSN_P.
	(init_alias_analysis): Likewise.
	* combine.c (combine_instructions): Use INSN_P.
	(can_combine_p): Likewise.
	(try_combine): Likewise.
	(distribute_notes): Likewise.
	(distribute_links): Likewise.
	* cse.c (cse_around_loop): Use INSN_P.
	(invalidate_skipped_block): Likewise.
	(cse_set_around_loop): Likewise.
	(cse_end_of_basic_block): Likewise.
	(delete_trivially_dead_insns): Likewise.
	* emit-rtl.c (unshare_all_rtl_again): Use INSN_P.
	(unshare_all_rtl_1): Likewise.
	(next_cc0_user): Likewise.
	(try_split make_insn_raw): Likewise.
	(remove_unnecessary_notes): Likewise.
	* final.c (shorten_branches): Use INSN_P.
	(leaf_renumber_regs): Likewise.
	(leaf_renumber_regs_insn): Likewise.
	* flow.c (find_label_refs): Use INSN_P.
	(verify_wide_reg): Likewise.
	(notice_stack_pointer_modification): Likewise.
	(count_or_remove_death_notes): Likewise.
	(verify_flow_info): Likewise.
	(clear_log_links): Likewise.
	* function.c (fixup_var_refs_insns): Use INSN_P.
	(compute_insns_for_mem): Likewise.
	* gcse.c (alloc_gcse_mem): Use INSN_P.
	(compute_sets): Likewise.
	(compute_hash_table): Likewise.
	(classic_gcse): Likewise.
	(cprop): Likewise.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks_1): Likewise.
	* global.c (expand_preferences): Use INSN_P.
	(build_insn_chain): Likewise.
	* graph.c (node_data): Use INSN_P.
	* haifa-sched.c (priority): Use INSN_P.
	(rm_line_notes): Likewise.
	(rm_other_notes): Likewise.
	(find_insn_reg_weight): Likewise.
	(init_target_units): Likewise.
	(schedule_block): Likewise.
	(compute_block_forward_dependences): Likewise.
	(debug_dependencies): Likewise.
	(set_priorities): Likewise.
	* integrate.c (function_cannot_inline_p): Use INSN_P.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	* jump.c (mark_all_labels): Use INSN_P.
	(never_reached_warning): Likewise.
	* lcm.c (optimize_mode_switching): Use INSN_P.
	* local-alloc.c (validate_equiv_mem): Use INSN_P.
	(memref_used_between_p): Likewise.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	(no_conflict_p): Likewise.
	* loop.c (scan_loop): Use INSN_P.
	(find_and_verify_loops): Likewise.
	(count_loop_regs_set): Likewise.
	(loop_reg_used_before_p): Likewise.
	(strength_reduce): Likewise.
	(recombine_givs): Likewise.
	(check_dbra_loop): Likewise.
	(load_mems): Likewise.
	(try_copy_prop): Likewise.
	* print-rtl.c (print_rtx): Use INSN_P.
	* recog.c (find_single_use): Use INSN_P.
	* reg-stack.c (stack_regs_mentioned): Use INSN_P.
	(next_flags_user): Likewise.
	(swap_rtx_condition): Likewise.
	* regmove.c (mark_flags_life_zones): Use INSN_P.
	(optimize_reg_copy_1): Likewise.
	(optimize_reg_copy_2): Likewise.
	(optimize_reg_copy_3): Likewise.
	(reg_is_remote_constant_p): Likewise.
	(fixup_match_2): Likewise.
	(regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* regrename.c (build_def_use): Use INSN_P.
	(replace_reg_in_block): Likewise.
	(consider_use): Likewise.
	* reload.c (find_equiv_reg): Use INSN_P.
	* reload1.c (reload): Use INSN_P.
	(maybe_fix_stack_asms): Likewise.
	(calculate_needs_all_insns): Likewise.
	(reload_as_needed): Likewise.
	(emit_output_reload_insns): Likewise.
	(delete_address_reloads_1): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_combine): Likewise.
	(reload_cse_move2add): Likewise.
	* reorg.c (redundant_insn): Use INSN_P.
	(dbr_schedule): Likewise.
	* resource.c (find_dead_or_set_registers): Use INSN_P.
	(mark_target_live_regs): Likewise.
	* rtlanal.c (reg_used_between_p): Use INSN_P.
	(reg_referenced_between_p): Likewise.
	(reg_set_between_p): Likewise.
	(reg_set_p): Likewise.
	(single_set): Likewise.
	(multiple_sets): Likewise.
	(find_last_value): Likewise.
	(reg_set_last): Likewise.
	(find_reg_note): Likewise.
	(find_regno_note): Likewise.
	* sibcall.c (sequence_uses_addressof): Use INSN_P.
	* simplify-rtx.c (cselib_process_insn): Use INSN_P.
	* ssa.c (find_evaluations): Use INSN_P.
	(rename_block): Likewise.
	(rename_equivalent_regs): Likewise.
	* unroll.c (loop_find_equiv_value): Use INSN_P.
	(set_dominates_use): Likewise.
	* varasm.c (mark_constant_pool): Use INSN_P.
	(mark_constants): Likewise.
	* config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P.
	(alphaev4_next_group): Likewise.
	(alphaev5_next_group): Likewise.
	* config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P.
	(c4x_rptb_rpts_p): Likewise.
	* config/mips/mips.c (mips16_optimize_gp): Use INSN_P.
	* config/rs6000/rs6000.c (uses_TOC): Use INSN_P.
	(rs6000_adjust_priority): Likewise.
	* config/sh/sh.c (sh_loop_align): Use INSN_P.
	(machine_dependent_reorg): Likewise.
	(split_branches): Likewise.
	* config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P.

From-SVN: r35494
2000-08-04 14:28:08 -06:00
Kazu Hirata
278a83b26f * cse.c: Fix a comment typo. Fix formatting.
From-SVN: r35472
2000-08-04 00:55:10 -06:00
Richard Henderson
4b983fdc50 cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.
* cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.
	(cse_insn): Likewise.
	(addr_affects_sp_p): Likewise.
	* expr.c (move_by_pieces): Likewise.
	(clear_by_pieces): Likewise.
	* gcse.c (oprs_unchanged_p): Likewise.
	* haifa-sched.c (sched_analyze_2): Likewise.
	* recog.c (offsettable_address_p): Likewise.
	* regclass.c (record_address_regs): Likewise.
	* reload.c (find_reusable_reload): Likewise.
	(push_reload): Likewise.
	(operands_match_p): Likewise.
	(decompose): Likewise.
	(find_reloads_address_1): Likewise.
	(find_inc_amount): Likewise.
	* reload1.c (elimination_effects): Likewise.
	* resource.c (mark_set_resources): Likewise.
	* flow.c (attempt_auto_inc): New function; mostly broken out
	of find_auto_inc.
	(find_auto_inc): Split into two functions and enhanced to
	generate POST_MODIFY.
	* rtl.def (PRE_MODIFY, POST_MODIFY): Adjust comment.
	* rtl.h (count_all_occurrences):  Declare.
	(HAVE_{PRE,POST}_MODIFY_{DISP,REG}): Provide default of 0 if not
	defined.
	* rtlanal.c (count_all_occurrences): New function.
	* tm.texi (HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_DISP,
	HAVE_POST_MODIFY_REG, HAVE_PRE_MODIFY_REG): Document.

	* config/ia64/ia64-protos.h (destination_operand): Declare.
	* config/ia64/ia64.c (destination_operand): New function.
	(ia64_print_operand): Handle POST_MODIFY.
	(rtx_needs_barrier): Likewise.
	* config/ia64/ia64.h (HAVE_POST_MODIFY_DISP): Define to 1.
	(HAVE_POST_MODIFY_REG): Define to 1.
	(MAX_REGS_PER_ADDRESS): Change to 2.
	(GO_IF_LEGITIMATE_ADDRESS): Accept POST_MODIFY too.
	(LEGITIMATE_ADDRESS_REG): New helper macro.
	(LEGITIMATE_ADDRESS_DISP): Likewise.
	(PREDICATE_CODES): Add entry for destination_operand.
	* config/ia64/ia64.md (all mov patterns): Use destination_operand
	predicate for operand 0.

From-SVN: r35321
2000-07-28 10:46:18 -07:00
Jan Hubicka
7f1c097d36 combine.c (try_combine): Use any_condjump_p...
* combine.c (try_combine): Use any_condjump_p, any_uncondjump_p
        and pc_set at the place of simplejump_p and condjump_p.
        * cse.c (record_jump_equiv): Likewise.
        * emit-rtl.c (emit): Likewise.
        * explow.c (find_next_ref): Likewise.
        * flow.c (tidy_fallthru_edge): Likewise.
        (init_propagate_block_info): Likewise.
        * gcse.c (delete_null_pointer_checks): Likewise.
        * ifcvt.c (cond_exec_get_condition, noce_get_condition,
        dead_or_predicable): Likewise.
        * integrate.c (copy_insn_list): Likewise.
        * loop.c (scan_loop, verify_dominator, find_and_verify_loops,
        for_each_insn_in_loop, check_dbra_loop, get_condition,
        insert_bct, load_mems): Likewise.
        * resource.c (find_dead_or_set_registers): Likewise.
        * sibcalls.c (simplejump_p): Likewise.
        * unroll.c (copy_loop_body, reg_dead_after_loop): Likewise.

From-SVN: r34175
2000-05-25 14:38:49 -07:00
Richard Kenner
efc9bd412d cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
* cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
	* reload.c (find_equiv_reg): Likewise.
	* alias.c (init_alias_analysis): Likewise.
	Only call prologue_epilogue_contains on insns.
	* basic-block.h (REG_SET_TO_HARD_REG_SET): Call new function.
	* bb-reorder.c (hard-reg-set.h): Include earlier.
	* haifa-sched.c (hard-reg-set.h): Likewise.
	* ifcvt.c (hard-reg-set.h): Likewise.
	* local-alloc.c (hard-reg-set.h): Likewise.
	* loop.c (hard-reg-set.h): Likewise.
	* predict.c (hard-reg-set.h): Likewise.
	* regrename.c (hard-reg-set.h): Likewise.
	* flow.c (hard-reg-set.h): Likewise.
	(reg_set_to_hard_reg_set): New function.
	* bitmap.c (regs.h, basic-block.h): No longer include.
	(bitmap.h): Now include.
	* conflict.c (hard-reg-set.h): Include.
	* profile.c (hard-reg-set.h): Likewise.
	* print-rtl.c (hard-reg-set.h): Likewise.
	* sbitmap.c (hard-reg-set.h): Likewise.
	* toplev.c (hard-reg-set.h): Likewise.
	* unroll.c (hard-reg-set.h, basic-block.h): Likewise.
	* hard-reg-set.h (reg_names): Now constant.
	* regs.h (reg_names): Likewise.
	* regclass.c (reg_names): Likewise.
	* loop.h (basic-block.h): No longer include.
	(bitmap.h): Now include.
	* reload1.c (order_regs_for_reload): Avoid loop over reg sets.
	* Makefile.in (LOOP_H, sbitmap.o, profile.o): Reflect above changes.
	(toplev.o, print-rtl.o, conflict.o, unroll.o, bitmap.o): Likewise.

From-SVN: r34039
2000-05-19 18:27:28 -04:00
Richard Kenner
bf49b1396b rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and MEM_ALIAS_SET.
* rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and
	MEM_ALIAS_SET.
	* alias.c (canon_rtx): Don't copy RTX_UNCHANGING_P or MEM_ALIAS_SET
	when calling MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword, change_address): Likewise.
	* explow.c (stabilize): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* combine.c (combine_simplify_rtx): Don't copy RTX_UNCHANGING_P
	when calling MEM_COPY_ATTRIBUTES.
	(make_extraction, simplify_shift_const, gen_lowpart_for_combine):
	Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	* simplify-rtx.c (add_mem_for_addr): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* config/arm/arm.md: Likewise.
	* config/h8300/h7300.c (fix_bit_operand): Likewise.
	* config/m88k/m88k.c (legitimize_address, block_move_loop): Likewise.
	(block_move_no_loop, block_move_sequence): Likewise.
	* config/rs6000/rs6000.c (expand_block_move_mem): Likewise.
	* config/alpha/alpha.c (get_aligned_mem): Likewise.
	Clear MEM_ALIAS_SET.
	* final.c (alter_subreg): Don't copy MEM_ALIAS_SET when calling
	MEM_COPY_ATTRIBUTES.

From-SVN: r33665
2000-05-04 09:49:50 -04:00
Jan Hubicka
01329426bf cse.c (CSE_ADDRESS_COST): Remove.
* cse.c (CSE_ADDRESS_COST): Remove.
	(find_best_addr): Add new parameter "MODE", use address_cost instead
	of CSE_ADDRESS_COST
	(address_cost): New.
	(fold_rtx): Update call of find_best_addr.
	* rtl.h (address_cost): Declare.
	* loop.c (general_induction_var): Add new parameter "MODE", use
	address_cost instead of ADDRESS_COST
	(init_loop): Use address_cost instead of ADDRESS_COST.
	(check_insn_for_givs): Update call of general_induction_var.
	(find_mem_givs): Likewise.
	(consec_sets_giv): Likewise.
	* config/i386/i386.h (ADDRESS_COST): Call ix86_address_cost.
	* i386.c (ix86_address_cost): New.
	* i386-protos.h (ix86_address_cost): Declare.

From-SVN: r33486
2000-04-27 14:56:47 +00:00
Richard Henderson
369edff185 * cse.c (cse_insn): Emit barrier after unconditional jump.
From-SVN: r33433
2000-04-25 18:10:35 -07:00
Richard Kenner
403e25d0ba cse.c (cse_insn): In (set REG0 REG1) case, remove a REG_EQUAL note for REG1.
* cse.c (cse_insn): In (set REG0 REG1) case, remove a REG_EQUAL
	note for REG1.

From-SVN: r33310
2000-04-21 14:46:01 -04:00
Jan Hubicka
2ce6dc2f6a cse.c (struct check_depdendence_data): New.
* cse.c (struct check_depdendence_data): New.
	(check_dependence): New function.
	(invalidate): Use check_depdenence.

From-SVN: r33207
2000-04-17 13:00:44 +00:00
John Wehle
e8019e47f6 cse.c (delete_trivially_dead_insns): Also delete insns that copy a register to itself where the destination is a...
* cse.c (delete_trivially_dead_insns): Also delete insns
	that copy a register to itself where the destination is
	a strict_low_part.

From-SVN: r33090
2000-04-12 05:03:32 +00:00
Mark Mitchell
db048faf78 alias.c (canon_rtx): Make it global.
* alias.c (canon_rtx): Make it global.
	(rtx_equal_for_memref_p): CONST_INT equality is now pointer
	equality.
	* cse.c (struct table_elt): Add canon_exp.
	(insert): Clear it.
	(invalidate): Canonicalize expressions only once.
	* rtl.h (canon_rtx): Declare.

From-SVN: r32845
2000-03-31 16:24:30 +00:00
Mark Mitchell
c13e821047 Makefile.in (emit-rtl.o): Depend on HASHTAB_H.
* Makefile.in (emit-rtl.o): Depend on HASHTAB_H.
	* alias.c (reg_known_value): Add comments.
	(init_alias_analysis): Likewise.
	* cse.c (exp_equiv_p): CONST_INTs are equal iff they have the same
	address.
	(cse_basic_block): Fix typo in comment.
	* emit-rtl.c: Include hashtab.h.
	(const_int_htab): New variable.
	(const_int_htab_hash): New function.
	(const_int_htab_eq): Likewise.
	(rtx_htab_mark_1): Likewise.
	(rtx_htab_mark): Likewise.
	(gen_rtx_CONST_INT): Cache all CONST_INTs.
	(unshare_all_rtx): Fix formatting.
	(init_emit_once): Initialize const_int_htab.
	* rtl.c (rtx_equal_p): CONST_INTs are equal iff they have the same
	address.
	* rtl.texi: Document the fact that all CONST_INTs with the same
	value are shared.

From-SVN: r32844
2000-03-31 08:57:54 +00:00
Richard Kenner
770ae6cc71 * Rework fields used to describe positions of bitfields and
modify sizes to be unsigned and use HOST_WIDE_INT.
	* alias.c (reg_known_value_size): Now unsigned.
	* c-typeck.c (build_unary_op, case ADDR_EXPR): Use byte_position.
	(really_start_incremental_init): Use bitsize_zero_node.
	(push_init_level, pop_init_level, output_init_element): Likewise.
	Use bitsize_unit_node and bitsize_one_node.
	(output_pending_init_elements, process_init_element): Likewise.
	* combine.c (combine_max_regno, reg_sign_bit_copies): Now unsigned.
	(make_extraction): Position and length HOST_WIDE_INT and unsigned
	HOST_WIDE_INT, respectively.
	(get_pos_from_mask): Passed in value is unsigned HOST_WIDE_INT.
	(num_sign_bit_copies): Returns unsigned.
	BITWIDTH now unsigned; rework arithmetic.
	Remove recursive call from arg to MAX.
	(combine_instructions, init_reg_last_arrays): NREGS now unsigned.
	(setup_incoming_promotions, can_combine_p, try_combine, simplify_set):
	REGNO now unsigned.
	(set_nonzero_bit_and_sign_copies): NUM now unsigned.
	(find_split_point, expand_compound_operation, make_extraction): LEN
	now unsigned HOST_WIDE_INT, POS now HOST_WIDE_INT.
	(make_field_assignment): Likewise.
	(combine_simplify_rtx): Add cast.
	(expand_compound_operation): MODEWIDTH now unsigned; rework arithmetic.
	(force_to_mode): WIDTH now unsigned; add cast.
	(if_then_else_cond): SIZE now unsigned.
	(nonzero_bits): MODE_WIDTH, RESULT_WIDTH, and WIDTH now unsigned.
	(extended_count): Now returns unsigned.
	(simplify_shift_const): COUNT unsigned; arg is now INPUT_COUNT.
	Add SIGNED_COUNT variable; MODE_WORDS and FIRST_COUNT now unsigned.
	(simplify_comparison): MODE_WIDTH now unsigned.
	(update_table_tick): REGNO and ENDREGNO now unsigned; new var R.
	(mark_used_regs_combine): Likewise; rework arithmetic.
	(record_value_for_reg): REGNO, ENDREGNO, and I now unsigned.
	(record_dead_and_set_regs, reg_dead_at_p, distribute_notes): Likewise.
	(record_promoted_value): REGNO now unsigned.
	(get_last_value_validate): REGNO, ENDREGNO, and J now unsigned.
	(get_last_value): REGNO now unsigned.
	(use_crosses_set_p): REGNO and ENDREGNO now unsigned.
	(reg_dead_regno, reg_dead_endregno): Now unsigned.
	(remove_death): Arg REGNO now unsigned.
	(move_deaths):  REGNO, DEADREGNO, DEADEND, OUREND, and I now unsigned.
	(reg_bitfield_target_p): REGNO, REGNO, ENDREGNO, and ENDTREGNO
	now unsigned.
	* convert.c (convert_to_integer): INPREC and OUTPREC now unsigned.
	* cse.c (struct qty_table_elem): FIRST_REG and LAST_REG now unsigned.
	(struct cse_reg_info): REGNO now unsigned.
	(cached_regno): Now unsigned.
	(REGNO_QTY_VALID_P): Add cast.
	(make_new_qty, make_regs_eqv, delete_reg_eqiv): Regno args unsigned.
	(remove_invalid_regs): Likewise.
	(remove_invalid_subreg_refs): Likewise; arg WORD also unsigned
	as are variables END and I.
	(get_cse_reg_info, insert): Likewise.
	(mention_regs, invalidate_for_call): REGNO, ENDREGNO, and I unsigned.
	(canon_hash): Likewise.
	(insert_regs, lookup_for_remove): REGNO now unsigned.
	(invalidate): REGNO, ENDREGNO, TREGNO, and TENDREGNO now unsigned.
	New variable RN.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't check for REGNO < 0.
	* dwarf2out.c (dwarf2ou_frame_debug_expr): Remove cast.
	* emit-rtl.c (subreg_realpart_p): Add cast.
	(operand_subword): Arg I is now unsigned as is var PARTWORDS.
	(operand_subword_force): Arg I is now unsigned.
	* except.c (eh_regs): Variable I is now unsigned.
	* explow.c (hard_function_value): BYTES is unsigned HOST_WIDE_INT.
	* expmed.c (store_fixed_bit_field): Position is HOST_WIDE_INT;
	length is unsigned HOST_WIDE_INT; likewise for internal variables.
	(store_split_bit_field, extract_fixed_bit_field): Likewise.
	(extract_split_bit_field, store_bit_field, extract_bit_field):
	Likewise.
	* expr.c (store_constructor_fields, store_constructor, store_field):
	Positions are HOST_WIDE_INT and lengths are unsigned HOST_WIDE_INT.
	(expand_assignment, expand_expr, expand_expr_unaligned): Likewise.
	(do_jump): Likewise.
	(move_by_pieces, move_by_pieces_ninsns, clear_by_pieces):
	MAX_SIZE is now unsigned.
	(emit_group_load): BYTEPOS is HOST_WIDE_INT; BYTELEN is unsigned.
	(emit_group_store): Likewise.
	(emit_move_insn): I now unsigned.
	(store_constructor): Use host_integerp, tree_low_cst, and
	bitsize_unit_node.
	(get_inner_reference): Return bitpos and bitsize as HOST_WIDE_INT.
	Rework all calculations to use trees and new fields.
	* expr.h (promoted_input_arg): Regno now unsigned.
	(store_bit_field, extract_bit_field): Adjust types of pos and size.
	(mark_seen_cases): Arg is HOST_WIDE_INT.
	* flow.c (verify_wide_reg_1): REGNO now unsigned.
	* fold-const.c (decode_field_reference): Size and pos HOST_WIDE_INT;
	precisions and alignments are unsigned.
	(optimize_bit_field_compare, fold_truthop): Likewise.
	(int_const_binop): Adjust threshold for size_int_type_wide call.
	(fold_convert): Likewise.
	(size_int_type_wide): Make table larger and fix thinko that only
	had half of table used.
	(all_ones_mask_p, fold): Precisions are unsigned.
	* function.c (put_reg_info_stack): REGNO is unsigned.
	(instantiate_decl): Size is HOST_WIDE_INT.
	(instantiate_virtual_regs): I is unsigned.
	(assign_parms): REGNO, REGNOI, and REGNOR are unsigned.
	(promoted_input_arg): REGNO is unsigned.
	* function.h (struct function): x_max_parm_reg is now unsigned.
	* gcse.c (max_gcse_regno): Now unsigned.
	(struct null_pointer_info): min_reg and max_reg now unsigned.
	(lookup_set, next_set): REGNO arg now unsigned.
	(compute_hash_table): REGNO and I now unsigned.
	(handle_avail_expr): regnum_for_replacing now unsigned.
	(cprop_insn): REGNO now unsigned.
	(delete_null_pointer_checks_1): BLOCK_REG now pointer to unsigned.
	* ggc-common.c (ggc_mark_tree_children, case FIELD_DECL): New case.
	* global.c (set_preference): SRC_REGNO, DEST_REGNO, and I now unsigned.
	* hard-reg-set.h (reg_class_size): Now unsigned.
	* integrate.c (mark_stores): LAST_REG and I now unsigned; new UREGNO.
	* jump.c (mark_modified_reg): I now unsigned; add cast.
	(rtx_equal_for_thread_p): Add cast.
	* loop.c (max_reg_before_loop): Now unsigned.
	(struct_movable): REGNO now unsigned.
	(try_copy_prop): REGNO arg unsigned.
	(regs_match_p): XN and YN now unsigned.
	(consec_sets_invariant_p, maybe_eliminate_biv): REGNO now unsigned.
	(strength_reduce): Likewise; NREGS also unsigned.
	(first_increment_giv, last_increment_giv unsigned): Now unsigned.
	* loop.h (struct iv_class): REGNO now unsigned.
	(max_reg_before_loop, first_increment_giv, last_increment_giv):
	Now unsigned.
	* machmode.h (mode_size, mode_unit_size): Now unsigned.
	(mode_for_size, smallest_mode_for_size): Pass size as unsigned.
	* optabs.c (expand_binop): I and NWORDS now unsigned.
	(expand_unop): I now unsigned.
	* print-tree.c (print_node): Don't print DECL_FIELD_BITPOS, but do
	print DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET.
	* real.c (significand_size): Now returns unsigned.
	* real.h (significand_size): Likewise.
	* regclass.c (reg_class_size): Now unsigned.
	(choose_hard_reg_mode): Both operands now unsigned.
	(record_reg_classes): REGNO and NR now unsigned.
	(reg_scan): NREGS now unsigned.
	(reg_scan_update): old_max_regno now unsigned.
	(reg_scan_mark_refs): Arg MIN_REGNO and var REGNO now unsigned.
	* reload.c (find_valid_class): BEST_SIZE now unsigned.
	(find_dummy_reload): REGNO, NWORDS, and	I now unsigned.
	(hard_reg_set_here_p): Args BEG_REGNO and END_REGNO now unsigned.
	Likewise for variable R.
	(refers_to_regno_for_reload_p): Args REGNO and END_REGNO now unsigned,
	as are variables INNER_REGNO and INNER_ENDREGNO; add new variable R.
	(find_equiv_reg): Add casts.
	(regno_clobbered_p): Arg REGNO now unsigned.
	* reload.h (struct reload): NREGS now unsigned.
	(refers_to_regno_for_reload_p): Regno args are unsigned.
	(regno_clobbered_p): Likewise.
	* reload1.c (reg_max_ref_width, spill_stack_slot_width): Now unsigned.
	(compute_use_by_pseudos): REGNO now unsigned.
	(find_reg): I and J now unsigned, new variable K, and change loop
	variables accordingly; THIS_NREGS now unsigned.
	(alter_reg): INHERENT_SIZE and TOTAL_SIZE now unsigned.
	(spill_hard_reg): REGNO arg now unsigned; add casts.
	(forget_old_reloads_1): REGNO, NR, and I now unsigned.
	(mark_reload_reg_in_use): Arg REGNO and vars NREGS and I now unsigned.
	(clear_reload_reg_in_use): Arg REGNO and vars NREGS, START_REGNO,
	END_REGNO, CONFLICT_START, and CONFLICT_END now unsigned.
	(reload_reg_free_p, reload_reg_reaches_end_p): Arg REGNO now unsigned.
	(choose_reload_regs): MAX_GROUP_SIZE now unsigned.
	(emit_reload_insns): REGNO now unsigned.
	(reload_cse_move2add): Add cast.
	(move2add_note_store): REGNO and I now unsigned; new variable ENDREGNO
	and rework loop.
	* resource.c (mark_referenced_resources, mark_set_resources): New
	variable R; REGNO and LAST_REGNO now unsigned.
	(mark_target_live_regs): J and REGNO now unsigned.
	* rtl.c (mode_size, mode_unit_size): Now unsigned.
	* rtl.h (union rtunion_def): New field rtuint.
	(XCUINT): New macro.
	(ADDRESSOF_REGNO, REGNO, SUBREG_WORD): New XCUINT.
	(operand_subword, operand_subword_force): Word number is unsigned.
	(choose_hard_reg_mode): Operands are unsigned.
	(refers_to-regno_p, dead_or_set_regno_p): Regno arg is unsigned.
	(find_regno_note, find_regno_fusage, replace_regs): Likewise.
	(regno_use_in, combine_instructions, remove_death): Likewise.
	(reg_scan, reg_scan_update): Likewise.
	(extended_count): Return is unsigned.
	* rtlanal.c (refers_to_regno_p): Args REGNO and ENDREGNO and vars I,
	INNER_REGNO, and INNER_ENDREGNO now unsigned; new variable X_REGNO.
	(reg_overlap_mentioned_p): REGNO and ENDREGNO now unsigned.
	(reg_set_last_first_regno, reg_set_last_last_regno): Now unsigned.
	(reg_reg_last_1): FIRS and LAST now unsigned.
	(dead_or_set_p): REGNO, LAST_REGNO, and I now unsigned.
	(dead_or_set_regno_p): Arg TEST_REGNO and vars REGNO and ENDREGNO
	now unsigned.
	(find_regno_note, regno_use_in): Arg REGNO now unsigned.
	(find_regno_fusage): Likewise; also var REGNOTE now unsigned.
	(find_reg_fusage): Variables REGNO, END_REGNO, and I now unsigned.
	(replace_regs): Arg NREGS now unsigned.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Don't check REGNO < 0.
	* simplify-rtx.c (simplify_unary_operation): WIDTH now unsigned.
	(simplify_binary_operation): Likewise.
	(cselib_invalidate_regno): Arg REGNO and variables ENDREGNO, I, and
	THIS_LAST now unsigned.
	(cselib_record_set): Add cast.
	* ssa.c (ssa_max_reg_num): Now unsigned.
	(rename_block): REGNO now unsigned.
	* stmt.c (expand_return): Bit positions unsigned HOST_WIDE_INT;
	sizes now unsigned.
	(all_cases_count): Just return -1 not -2.
	COUNT, MINVAL, and LASTVAL now HOST_WIDE_INT.
	Rework tests to use trees whenever possible.
	Use host_integerp and tree_low_cst.
	(mark_seen_cases): COUNT arg now HOST_WIDE_INT;
	Likewise variable NEXT_NODE_OFFSET; XLO now unsigned.
	(check_for_full_enumeration_handing): BYTES_NEEDED, I to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size): SIZE arg now unsigned.
	(smallest_mode_for_size): Likewise.
	(layout_decl): Simplify handing of a specified DECL_SIZE_UNIT.
	KNOWN_ALIGN is now an alignment, so simplify code.
	Don't turn off DECL_BIT_FIELD if field is BLKmode, but not type.
	(start_record_layout): Renamed from new_record_layout_info.
	Update to new fields.
	(debug_rli, normalize_rli, rli_size_unit_so_far, rli_size_so_far):
	New functions.
	(place_union_field): Renamed from layout_union_field.
	Update to use new fields in rli.
	(place_field): Renamed from layout_field.
	Major rewrite to use new fields in rli; pass alignment to layout_decl.
	(finalize_record_size): Rework to use new fields in rli and handle
	union.
	(compute_record_mode): Rework to simplify and to use new DECL fields.
	(finalize_type_size): Make rounding more consistent.
	(finish_union_layout): Deleted.
	(layout_type, case VOID_TYPE): Don't set TYPE_SIZE_UNIT either.
	(layout_type, case RECORD_TYPE): Call new function names.
	(initialize_sizetypes): Set TYPE_IS_SIZETYPE.
	(set_sizetype): Set TYPE_IS_SIZETYPE earlier.
	(get_best_mode): UNIT is now unsigned; remove casts.
	* tree.c (bit_position): Compute from new fields.
	(byte_position, int_byte_position): New functions.
	(print_type_hash_statistics): Cast to remove warning.
	(build_range_type): Use host_integerp and tree_low_cst to try to hash.
	(build_index_type): Likewise; make subtype of sizetype.
	(build_index_2_type): Pass sizetype to build_range_type.
	(build_common_tree_nodes): Use size_int and bitsize_int to
	initialize nodes; add bitsize_{zero,one,unit}_node.
	* tree.h (DECL_FIELD_CONTEXT): Use FIELD_DECL_CHECK.
	(DECL_BIT_FIELD_TYPE, DECL_QUALIFIER, DECL_FCONTEXT): Likewise.
	(DECL_PACKED, DECL_BIT_FIELD): Likewise.
	(DECL_FIELD_BITPOS): Deleted.
	(DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): New fields.
	(DECL_RESULT, DECL_SAVED_INSNS): Use FUNCTION_DECL_CHECK.
	(DECL_FRAME_SIZE, DECL_FUNCTION_CODE, DECL_NO_STATIC_CHAIN): Likewise.
	(DECL_INLINE, DECL_BUILT_IN_NONANSI, DECL_IS_MALLOC): Likewise.
	(DECL_BUILT_IN_CLASS, DECL_STATIC_CONSTRUCTOR): Likewise.
	(DECL_STATIC_DESTRUCTOR, DECL_NO_CHECK_MEMORY_USAGE): Likewise.
	(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT, DECL_NO_LIMIT_STACK) Likewise.
	(DECL_ORIGINAL_TYPE, TYPE_DECL_SUPPRESS_DEBUG): Use TYPE_DECL_CHECK.
	(DECL_ARG_TYPE_AS_WRITEN, DECL_ARG_TYPE): Use PARM_DECL_CHECK.
	(DECL_INCOMING_RTL, DECL_TRANSPARENT_UNION): Likewise.
	(DECL_ALIGN): Adjust to new field in union.
	(DECL_OFFSET_ALIGN): New field.
	(DECL_ERROR_ISSUED, DECL_TOO_LATE): Use LABEL_DECL_CHECK.
	(DECL_IN_TEXT_SECTION): Use VAR_DECL_CHECK.
	(union tree_decl): Add struct for both aligns.
	(enum tree_index): Add TI_BITSIZE_{ZERO,ONE,UNIT}.
	(bitsize_zero_node, bitsize_one_node, bitsize_unit_node): Added.
	(struct record_layout_info): Rework fields to have offset
	alignment and byte and bit position.
	(start_record_layout, place_field): Renamed from old names.
	(rli_size_so_far, rli_size_unit_so_far, normalize_rli): New decls.
	(byte_position, int_byte_position): Likewise.
	(get_inner_reference): Change types of position and length.
	* unroll.c (unroll_loop): New variable R; use for some loops.
	MAX_LOCAL_REGNUM and MAXREGNUM now unsigned.
	(calculate_giv_inc): Arg REGNO now unsigned.
	(copy_loop_body): REGNO and SRC_REGNO now unsigned.
	* varasm.c (assemble_variable): Clean up handling of size using
	host_integerp and tree_low_cst.
	(decode_addr_const): Use byte, not bit, position.
	(output_constructor): bitpos and offsets are HOST_WIDE_INT;
	use tree_low_cst and int_bit_position.
	* objc/objc-act.c (build_ivar_list_initializer): Use byte_position.
	* ch/actions.c (check_missing_cases): BYTES_NEEDED is HOST_WIDE_INT.
	* ch/typeck.c (expand_constant_to_buffer): Use int_byte_position.
	(extract_constant_from_buffer): Likewise.
	* cp/class.c (build_vbase_pointer_fields): layout_field now
	place_field.
	(get_vfield_offset): Use byte_position.
	(set_rtti_entry): Set OFFSET to ssizetype zero.
	(get_binfo_offset_as_int): Deleted.
	(dfs_record_base_offsets): Use tree_low_cst.
	(dfs_search_base_offsets): Likewise.
	(layout_nonempty_base_or_field): Reflect changes in RLI format
	and call byte_position.
	(layout_empty_base): Convert offset to ssizetype.
	(build_base_field): use rli_size_unit_so_far.
	(dfs_propagate_binfo_offsets): Do computation in proper type.
	(layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
	(layout_class_type): Reflect changes in RLI names and fields.
	(finish_struct_1): Set DECL_FIELD_OFFSET.
	* cp/dump.c (dequeue_and_dump): Call bit_position.
	* cp/expr.c (cplus_expand_constant): Use byte_position.
	* cp/rtti.c (expand_class_desc): Use bitsize_one_node.
	* cp/typeck.c (build_component_addr): Use byte_position and don't
	special case for zero offset.
	* f/com.c (ffecom_tree_canonize_ptr_): Use bitsize_zero_node.
	(ffecom_tree_canonize_ref_): Likewise.
	* java/class.c (make_field_value): Use byte_position.
	* java/expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
	(java_array_data_offset): Likewise.
	* java/java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
	bzero call.

From-SVN: r32742
2000-03-25 13:34:13 -05:00
Kaveh R. Ghazi
3cce094dd9 rtl.h (rtunion_def): Constify member `rtstr'.
* rtl.h (rtunion_def): Constify member `rtstr'.
	(emit_line_note_after, emit_line_note, emit_line_note_force,
	emit_note, decode_asm_operands): Constify.

	* cse.c (canon_hash): Likewise.

	* dbxout.c (dbxout_block): Likewise.

	* diagnostic.c (file_and_line_for_asm, v_error_for_asm,
	v_warning_for_asm): Likewise.

	* dwarfout.c (function_start_label): Likewise.

	* emit-rtl.c (emit_line_note_after, emit_line_note, emit_note,
	emit_line_note_force): Likewise.

	* final.c (last_filename, asm_insn_count, final_scan_insn,
	output_source_line): Likewise.

	* function.h (struct emit_status): Likewise.

	* gcse.c (hash_expr_1): Likewise.

	* genattr.c (gen_attr, main): Likewise.

	* genattrtab.c (struct function_unit, current_alternative_string,
	write_attr_valueq, n_comma_elts, next_comma_elt, attr_eq,
	attr_numeral, check_attr_test, check_attr_value,
	convert_set_attr_alternative, convert_set_attr,
	compute_alternative_mask, simplify_by_exploding, gen_attr,
	gen_unit): Likewise.

	* genflags.c (gen_insn): Likewise.

	* gengenrtl.c (type_from_format): Likewise.

	* genopinit.c (gen_insn): Likewise.

	* genoutput.c (n_occurrences, process_template, process_template):
	Likewise.

	* ggc-page.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size):
	Likewise.

	* ggc-simple.c (ggc_set_mark, ggc_mark_if_gcable, ggc_get_size):
	Likewise.

	* ggc.h (ggc_mark_string, ggc_mark, ggc_mark_if_gcable,
	ggc_set_mark, ggc_get_size): Likewise.

	* objc/objc-act.c (build_module_descriptor, finish_objc): Likewise.

	* optabs.c (init_one_libfunc): Likewise.

	* output.h (assemble_start_function): Likewise.

	* recog.c (decode_asm_operands): Likewise.

	* toplev.c (rest_of_compilation): Likewise.

	* tree.h (emit_line_note_after, emit_line_note,
	emit_line_note_force): Likewise.

	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	asm_emit_uninitialised, assemble_start_function,
	assemble_variable, const_hash, compare_constant_1,
	find_pool_constant, mark_constant_pool, assemble_alias): Likewise.

	* xcoffout.h (DBX_FINISH_SYMBOL): Likewise.

	* alpha/alpha.md (call_vms, call_value_vms): Likewise.

	* arm/aof.h (ASM_OUTPUT_ASCII): Likewise.

	* arm/aout.h (ASM_OUTPUT_ASCII): Likewise.

	* arm/arm-protos.h (output_ascii_pseudo_op, arm_dllexport_name_p,
	arm_dllimport_name_p): Likewise.

	* arm/arm.c (arm_encode_call_attribute, output_ascii_pseudo_op):
	Likewise.

	* arm/arm.h (ASM_OUTPUT_MI_THUNK): Likewise.

	* arm/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* arm/pe.c (arm_dllexport_name_p, arm_dllimport_name_p,
	arm_mark_dllexport, arm_mark_dllimport,
	arm_pe_encode_section_info): Likewise.

	* arm/telf.h (ASM_OUTPUT_DEF_FROM_DECLS,
	ASM_FINISH_DECLARE_OBJECT): Likewise.

	* arm/thumb.c (thumb_function_prologue): Likewise.

	* arm/thumb.h (ASM_OUTPUT_ASCII): Likewise.

	* avr/avr.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* clipper/clix.h (ASM_OUTPUT_ASCII): Likewise.

	* fx80/fx80.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/cygwin.h (ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/freebsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* i386/i386-interix.h (ASM_OUTPUT_LIMITED_STRING,
	ASM_OUTPUT_ASCII, ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/i386-protos.h (asm_output_function_prefix): Likewise.

	* i386/i386.c (asm_output_function_prefix): Likewise.

	* i386/i386elf.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/osfrose.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* i386/ptx4-i.h (ASM_OUTPUT_ASCII): Likewise.

	* i386/sco5.h (ASM_FINISH_DECLARE_OBJECT,
	ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII,
	ASM_OUTPUT_SECTION_NAME): Likewise.

	* i386/sysv4.h (ASM_OUTPUT_ASCII): Likewise.

	* i860/paragon.h (ASM_OUTPUT_ASCII): Likewise.

	* i860/sysv3.h (ASM_OUTPUT_ASCII): Likewise.

	* m32r/m32r.c (m32r_encode_section_info): Likewise.

	* mcore-elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mcore/mcore.c (mcore_encode_section_info): Likewise.

	* mips/elf.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/elf64.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/iris6.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* mips/mips.h (ASM_OUTPUT_IDENT): Likewise.

	* mips/mips.md (movdi, movsi): Likewise.

	* mips/netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* netbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* openbsd.h (ASM_FINISH_DECLARE_OBJECT): Likewise.

	* ptx4.h (ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING,
	ASM_OUTPUT_ASCII): Likewise.

	* rs6000/rs6000.c (rs6000_allocate_stack_space, output_epilog,
	output_mi_thunk, output_toc): Likewise.

	* rs6000/rs6000.md (movsi): Likewise.

	* rs6000/sysv4.h (ASM_OUTPUT_INT, ASM_OUTPUT_SECTION_NAME): Likewise.

	* tahoe/harris.h (ASM_OUTPUT_ASCII): Likewise.

	* v850/v850.c (print_operand, print_operand_address,
	v850_encode_data_area): Likewise.

ch:
	* grant.c (globalize_decl): Constify a char*.

cp:
	* decl2.c (finish_objects): Constify a char*.

	* method.c (emit_thunk): Likewise.

From-SVN: r32388
2000-03-07 20:39:10 +00:00
Richard Kenner
4e37e57d14 cse.c (cse_insn): Delete dead code involving tablejump.
* cse.c (cse_insn): Delete dead code involving tablejump.
	Pass CODE_LABEL, not LABEL_REF to gen_jump and reset INSN_CODE.

From-SVN: r32219
2000-02-27 09:06:15 -05:00
Jeff Law
5e7b4e2509 Fix copyrights.
From-SVN: r32173
2000-02-25 22:59:31 -07:00
Jeffrey A Law
602c4c0d71 cse.c (cse_insn): Replace the PATTERN of the insn with an new jump when...
* cse.c (cse_insn): Replace the PATTERN of the insn with an new
	jump when changing a computed jump into a jump to a known
	target.

From-SVN: r32160
2000-02-25 19:50:12 -07:00
Zack Weinberg
4eadede7c1 cse.c (cse_altered): New internal flag.
2000-02-13  Zack Weinberg  <zack@wolery.cumb.org>

	* cse.c (cse_altered): New internal flag.
	(cse_insn): Set it if we changed an insn.
	(cse_main): Clear cse_altered before each basic block.
	Only garbage collect if cse_altered is true afterward.

From-SVN: r31962
2000-02-14 01:32:19 +00:00
Richard Henderson
1eb8759b1b rtl.def: Add unordered fp comparisions.
* rtl.def: Add unordered fp comparisions.
        * tree.def: Likewise.
	* tree.h: Add ISO C 9x unordered fp comparision builtins.

	* builtins.c (expand_tree_builtin): New function.
	* c-typeck.c (build_function_call): Use it.
	(build_binary_op): Support unordered compares.
	* c-common.c (c_common_nodes_and_builtins): Add unordered compares.

	* combine.c (known_cond): Handle reverse_condition returning UNKNOWN.
	(reversible_comparison_p): Allow UNORDERED/ORDERED to be reversed.
	* cse.c (fold_rtx): Check FLOAT_MODE_P before reversing.
	(record_jump_equiv): Handle reverse_condition returning UNKNOWN.
	* jump.c (reverse_condition): Don't abort for UNLE etc, but
	return UNKNOWN.
	(swap_condition): Handle unordered compares.
	(thread_jumps): Check can_reverse before reversing.
	* loop.c (get_condition): Likewise.  Allow UNORERED/ORDERED to be
	reversed for FP.

	* optabs.c (can_compare_p): New argument CODE.  Verify branch or
	setcc is present before acking for cmp_optab.  Update all callers.
	(prepare_float_lib_cmp, init_optabs): Handle UNORDERED.
	* expmed.c (do_cmp_and_jump): Update for can_compare_p.
	* expr.c (expand_expr): Likewise.  Support unordered compares.
	(do_jump, do_store_flag): Likewise.
	* expr.h (enum libfunc_index): Add unordered compares.

	* Makefile.in (FPBIT_FUNCS): Add _unord_sf.
	(DPBIT_FUNCS): Add _unord_df.
	* config/fp-bit.c (_unord_f2): New.
	* fp-test.c (main): Try unordered compare builtins.

	* alpha-protos.h (alpha_fp_comparison_operator): Declare.
	* alpha.c (alpha_comparison_operator): Check mode properly.
	(alpha_swapped_comparison_operator): Likewise.
	(signed_comparison_operator): Likewise.
	(alpha_fp_comparison_operator): New.
	(alpha_emit_conditional_branch): Handle unordered compares.
	* alpha.h (PREDICATE_CODES): Update.
	* alpha.md (fp compares): Use alpha_fp_comparison_operator.
	(bunordered, bordered): New.

	* cp/call.c (build_over_call): Use expand_tree_builtin.
	* cp/typeck.c (build_function_call_real): Likewise.
	(build_binary_op_nodefault): Handle unordered compares.

	* gcc.c-torture/execute/ieee/fp-cmp-4.c: New.

From-SVN: r31591
2000-01-24 12:10:04 -08:00
Richard Henderson
12530dbee3 combine.c (combine_simplify_rtx): Give FLOAT_STORE_FLAG_VALUE a mode.
* combine.c (combine_simplify_rtx): Give FLOAT_STORE_FLAG_VALUE a mode.
        * cse.c (find_comparison_args, fold_rtx): Likewise.
        * integrate.c (subst_constants): Likewise.
        * loop.c (get_condition): Likewise.

        * tm.texi (FLOAT_STORE_FLAG_VALUE): Update docs.

        * alpha.h (FLOAT_STORE_FLAG_VALUE): Use REAL_VALUE_ATOF.

From-SVN: r31479
2000-01-17 16:30:17 -08:00
Jeffrey A Law
516ff948a7 cse.c (cse_insn): When changing (set (pc) (reg)) to (set (pc) (label_ref))...
* cse.c (cse_insn): When changing (set (pc) (reg)) to
        (set (pc) (label_ref)), verify the change creates a valid insn.

From-SVN: r31407
2000-01-14 01:35:56 -07:00
Kaveh R. Ghazi
83d2b3b9dc cccp.c: PROTO -> PARAMS.
* cccp.c: PROTO -> PARAMS.
	* cexp.y: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* convert.h: Likewise.
	* cse.c: Likewise.
	* dbxout.c: Likewise.
	* dbxout.h: Likewise.
	* diagnostic.c: Likewise.
	* doprint.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarf2out.h: Likewise.
	* dwarfout.c: Likewise.
	* dwarfout.h: Likewise.
	* dyn-string.h: Likewise.

From-SVN: r31399
2000-01-14 00:46:57 +00:00
Jeff Law
dd1bd86318 cse.c (cse_insn): Missing cast added.
* cse.c (cse_insn): Missing cast added.
	* loop.c (loop_reg_used_before_p): Ditto.
	* gcse.c (Pre_gcse, hoist_code): Ditto.
	* varasm.c (decode_rtx_const): Ditto.
	* except.c (push_ehqueue): Ditto.
	* cccp.c (index0): Ditto.
	* toplev.c (main): Useless `&' removed before function name.

From-SVN: r31229
2000-01-04 23:55:02 -07:00
Kaveh R. Ghazi
9d0878fd43 cse.c (free_element, [...]): Remove unused prototypes.
* cse.c (free_element, get_element): Remove unused prototypes.

	* fold-const.c (extract_muldiv): Initialize variables `op0' and
	`op1'.

	* jump.c (invert_exp): Add explicit braces to avoid ambiguous
	`else' clauses.

From-SVN: r31123
1999-12-29 21:18:46 +00:00
Zack Weinberg
7e28988a04 Makefile.in (ggc-simple.c, ggc-page.c): Don't depend on hash.h.
1999-12-23  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (ggc-simple.c, ggc-page.c): Don't depend on
	hash.h.  (cse.c): Don't depend on hashtab.h.

	* cse.c: Don't include hashtab.h.
	(hash_cse_reg_info, cse_reg_info_equal_p): Delete prototypes
	of dead functions.
	* ggc-simple.c: Don't include hash.h.

From-SVN: r31080
1999-12-23 17:54:00 +00:00
Richard Kenner
d4b60170fd alias.c: Minor reformatting.
* alias.c: Minor reformatting.
	* flow.c: Likewise.
	* regs.h: Likewise.
	* stor-layout.c: Likewise.
	* fold-const.c: Likewise.
 	(OVERFLOW_SUM_SIGN): Renamed from overflow_sum_sign.
	(struct cb_args, const_binop_1, const_binop): Pass type of arg,
	not arg itself.
	(size_int_wide): Cache nodes even if garbage collecting.
	(twoval_comparison_p): Reenable SAVE_EXPR case if operand
	of SAVE_EXPR has no side effects.
	* cse.c: Move a comment.
	* tree.c: Minor reformatting.
	(int_size_in_bytes): Return -1 if constant overflows.
	* reload.c (combine_reloads): Do nothing if no output reload

From-SVN: r31017
1999-12-18 16:33:23 -05:00
Jeff Law
eb33f7449c * cse.c: Fix a few minor whitespace goofs.
From-SVN: r30885
1999-12-13 00:48:55 -07:00
David S. Miller
9b1549b811 cse.c (struct cse_reg_info): Add hash_next member, reorder rest of struct for better packing on 64-bit hosts.
* cse.c (struct cse_reg_info): Add hash_next member,
	reorder rest of struct for better packing on 64-bit
	hosts.
	(cse_reg_info_tree): Kill.
	(REGHASH_SHIFT, REGHASH_SIZE, REGHASH_MASK, reg_hash,
	REGHASH_FN): New custom pow2 hash mechanism.
	(NBUCKETS): Kill.
	(HASH_SHIFT, HASH_SIZE, HASH_MASK, HASH, table): Rework to
	use a pow2 hash table.
	(get_cse_reg_info): Rework to use new REGHASH.
	(new_basic_block): Likewise, use HASH_SIZE, and inline
	free_element call.
	(remove_from_table): Rework to use HASH_SIZE/HASH_MASK,
	and inline free_element call.
	(lookup_as_function, insert, flush_hash_table, invalidate,
	remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg,
	invalidate_for_call, use_related_value, find_comparison_args,
	fold_rtx, equiv_constant, cse_insn, invalidate_memory): Likewise.
	(hash_cse_reg_info, cse_reg_info_equal_p, free_element,
	get_element): Kill.

From-SVN: r30883
1999-12-12 22:51:09 -08:00
Jeffrey A Law
fa0933ba25 * cse.c (cse_basic_block): Free qty_table consistently.
From-SVN: r30882
1999-12-12 21:33:11 -07:00
Jakub Jelinek
47841d1be3 sparc.h (PROMOTE_FOR_CALL_ONLY): Define.
* config/sparc/sparc.h (PROMOTE_FOR_CALL_ONLY): Define.

	* calls.c (precompute_arguments): Make sure initial_value contains
	value pseudo which CSE expects.
	* cse.c (struct set): New entry orig_src.
	(cse_insn): Set it early on entry, use it for libcall EQUIV note
	replacement.

From-SVN: r30846
1999-12-09 06:38:11 -08:00
Bernd Schmidt
553687c920 Delete obsolete macros
From-SVN: r30723
1999-11-30 12:16:56 +00:00
David S. Miller
1bb98cecc6 Move quantity tables and register equivalence chains into
per-qty and per-register structure arrays respectively.

From-SVN: r30717
1999-11-29 22:03:30 -08:00
Bernd Schmidt
73d65336b7 addr_affects_sp_p now unconditional
From-SVN: r30586
1999-11-19 11:36:25 +00:00
Richard Henderson
e7a59e04e7 cse.c (delete_trivially_dead_insns): Identify no-op insns containing subregs too.
* cse.c (delete_trivially_dead_insns): Identify no-op insns
        containing subregs too.

From-SVN: r30563
1999-11-17 16:52:07 -08:00
Bernd Schmidt
ef835bb0c3 Delete two unused functions
From-SVN: r30526
1999-11-14 11:45:55 +00:00
Bernd Schmidt
e428d7383b Remove useless code
From-SVN: r30499
1999-11-12 11:39:08 +00:00
Mark Mitchell
4da896b292 cse.c (delete_trivially_dead_insns): Replace alloca with xmalloc/xcalloc.
* cse.c (delete_trivially_dead_insns): Replace alloca with
	xmalloc/xcalloc.
	* except.c (update_rethrow_references): Likewise.
	(init_eh_nesting_info): Likewise.
	* function.c (identify_blocks): Likewise.
	* gcse.c (dump_hash_table): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* loop.c (combine_movables): Likewise.
	(move_movables): Likewise.
	(count_loop_regs_set): Likewise.
	(strength_reduce): Likewise.
	* profile.c (compute_branch_probabilities): New function, split
	out from ...
	(branch_prob): Here.  Replace alloca with xmalloc/xcalloc.
	* regclass.c (regclass): Likewise.
	* regmove.c (regmove_optimize): Likewise.
	* toplev.c (compile_file): Likewise.
	(main): Don't mess with the stack rlimit.

From-SVN: r30445
1999-11-08 04:56:18 +00:00
Jim Wilson
26132f7136 Fix cse bug that broke the ia64 port.
* cse.c (cse_insn): Revert Oct 31 change.  When computing src_elt,
	if REG_RETVAL check succeeds, then put classp in src_elt.

From-SVN: r30406
1999-11-04 23:08:13 -08:00
Richard Henderson
75c6bd46fe cse.c (cse_main): Use xmalloc, not alloca.
* cse.c (cse_main): Use xmalloc, not alloca.
        (cse_basic_block): Likewise.
        * local-alloc.c (local_alloc): Likewise.

From-SVN: r30399
1999-11-04 12:51:04 -08:00
Bernd Schmidt
c3dfacf03a Delete two useless declarations.
From-SVN: r30351
1999-11-02 16:00:03 +00:00
Jeffrey A Law
e26ef527af cse.c (cse_insn): If an insn has only a single set...
* cse.c (cse_insn): If an insn has only a single set, SRC_EQV
        is nonzero and the single set does not have an elt, then assign
        it an elt.

From-SVN: r30304
1999-10-31 19:19:25 -07:00
Richard Kenner
14a774a9d2 [multiple changes]
Fri Oct 29 15:25:07 1999  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* gcov.c (DIR_SEPARATOR): Provide default.
	(output_data): Add test for MS-DOS format absolute filename.
	(fancy_abort): Correct program name.
	(open_files): Open all files in binary mode.
	* libgcc2.c (__bb_exit_func): Likewise.

	* profile.c (init_branch_prob): Specify binary when opening files.

	* flags.h (flag_unwind_tables): New decl.
	* toplev.c (flag_unwind_table): New definition.
	(f_options): Add -funwind-tables.
	(decode_g_option): Clarify warning when unknown -g option is given.
	(rest_of_compilation): If inside an inlined external function,
	pretend we are just being declared.

	* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
	(dwarf2out_frame_finish): Likewise.

Fri Oct 29 06:32:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When the last reference to a label
 	before an ADDR_VEC is deleted because the reference is a dead
 	store, delete the ADDR_VEC.

Fri Oct 29 07:44:26 1999  Vasco Pedro  <vp@di.fct.unl.pt>

	* fold-const.c (merge_ranges): In not in0, but in1, handle
	upper bounds equal like subset case.

Thu Oct 28 19:22:24 1999  Douglas Rupp <rupp@gnat.com>

	* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
	passed in a register but moved to the stack.

Thu Oct 28 19:12:57 1999  Sam Tardieu  <tardieu@act-europe.fr>

	* gcc.c (pass_exit_codes, greatest_status): New variables.
	(struct option_map): Add entry for "--pass-exit-codes".
	(execute): Update greatest_status if error.
	(display_help): Add documentation for -pass-exit-codes.
	(process_command): Handle -pass-exit-codes.
	(main): Look at pass_exit_codes and greatest_status on call to exit.

Thu Oct 28 18:06:50 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads): Refine test for no input reload
	case to not includes reloads emitted after insn.

	* function.c (find_temp_slots_from_address): Handle sum involving
	a register that points to a temp slot.
	(update_temp_slot_address): Make recursive call if both old and
	new are PLUS with a common operand.
	* calls.c (expand_call): Mark temp slot for result as having
	address taken.

	* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.

	* gcc.c (process_command): Add standard_exec_prefix with "GCC"
	component as well as "BINUTILS".

	* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
	All callers changed.
	* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.

	* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
	gdb extensions, write size of type; also be more consistent
	in using references when this is a subtype.

	* pa.md (extv, extzv, insv): Use define_expand to reject constant
	that is out of range.

	* loop.c (unknown_constant_address_altered): New variable.
	(prescan_loop): Initialize it.
	(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
	(invariant_p, case MEM): Remove handling for volatile and readony;
	check new variable if readonly.
	(check_dbra_loop): Chdeck unknown_constant_address_altered.

	* cse.c (canon_hash, case MEM): Do not record if BLKmode.
	(addr_affects_sp_p): Removed from note_mem_written and only
	define #ifdef AUTO_INC_DEC.

	* alpha.c (input_operand, case ADDRESSOF): Treat as REG.

	* regclass.c (record_reg_classes): Properly handle register move
	directions.

	* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
	Don't think valid if both operands are invalid.
	(struct constant_descriptor): New field RTL.
	(mark_const_hash_entry): Mark it.
	(record_constant{,_rtx}): Initialize it.
	(output_constant_def): Allocate RTL in permanent obstack and
	save in table.
	({record,compare}_constant_1): Modes must match for
	CONSTRUCTOR of ARRAY_TYPE.

	* c-common.h (initializer_constant_valid_p): Delete decl from here.
	* output.h (initializer_constant_valid_p): Move decl to here.
	* c-common.c (initializer_constant_valid_p): Delete function from here.
	* varasm.c (initializer_constant_valid_p): Move function to here.

	* tree.h (STRIP_SIGN_NOPS): New macro.
	* fold-const.c (optimize_minmax_comparison): New function.
	(invert_truthvalue, case WITH_RECORD_EXPR): New case.
	(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
	(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
	cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
	widening conversions.
	(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
	to look at size of mode, not precision of type; also add missing cases.
	(optimize_bit_field_compare, decode_field_reference): Don't try to
	optimize COMPONENT_REF of a PLACEHOLDER_EXPR.

	* dwarf2out.c (ctype.h): Include.
	(dwarf2out_set_demangle_name_func): New function.
	(size_of_line_info): Deleted.
	(output_line_info): Compute size of line info table from difference
	of labels.
	(base_type_die, add_name_attribute): Call demangle function, if any.
	(field_byte_offset): Use bits per word for variable length fields.
	(gen_array_type_die): Add array name.
	(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
	(dwarf2out_add_library_unit_info): New function.

	* explow.c (set_stack_check_libfunc): New function.
	(stack_check_libfunc): New static variable.
	(probe_stack_range): Allow front-end to set up a libfunc to call.

	* combine.c (simplify_comparison): When making comparison in wider
	mode, check for having commuted an AND and a SUBREG.
	(contains_muldiv): New function.
	(try_combine): Call it when dividing a PARALLEL.
	(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
	(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
	a PLUS.
	(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
	use one of the CLOBBERs instead.
	(if_then_else_cond): If comparing against zero, just return thing
	being compared.

	* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
	Don't generate shifts and subtract if have conditional arithmetic.

	* rtl.h (delete_barrier): New declaration.
	* jump.c (jump_optimize): Set up to handle conditional call.
	In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
	(delete_barrier): New function.

	* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.

	* recog.c (nonmemory_operand): Accept ADDRESSOF.

	* tree.c (build_type_attribute_variant): Push to obstack of
	ttype around type_hash_canon call.

	* expr.c (placeholder_list): Move decl to file scope.
	(expand_expr): Don't force access to volatile just because its
	address is taken.
	If ignoring reference operations, just expand the operands.
	(expand_expr, case COMPONENT_REF): Propagate
	EXPAND_CONST_ADDRESS to recursive call when expanding inner.
	Refine test for using bitfield operations vs pointer punning.
	(expand_expr, case CONVERT_EXPR): If converting to
	BLKmode UNION_TYPE from BLKmode, just return inner object.
	Use proper mode in store_field call.
	Properly set sizes of object to store and total size in store_field
	call for convert to union.
	(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
	memory (like for ADDR_EXPR).  Also, don't put constant in register if
	we'll want it in memory.
	(readonly_fields_p): New function.
	(expand_expr, case INDIRECT_REF): Call it if LHS.
	(expand_assignment): Handle a RESULT_DECL where
	DECL_RTL is a PARALLEL.
	(do_jump, case WITH_RECORD_EXPR): New case.
	(get_inner_reference): Always go inside a CONVERT_EXPR
	and NOP_EXPR if both modes are the same.
	(store_field): Use bitfield operations if size of bitsize is not same
	as size of RHS's type.
	Check for bitpos not a multiple of alignment in BLKmode case.
	Do block move in largest possible alignment.
	(store_constructor): Set BITSIZE to -1 for variable size and properly
 	in case of array of BLKmode.
	(expand_expr_unaligned): New function.
	(do_compare_and_jump): Call it.

	* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
	* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
	does not include 'o'.

	* function.c (instantiate_virtual_regs_1, case SET): Handle case where
	both SET_DEST and SET_SRC reference a virtual register.
	(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.

	* integrate.c (expand_inline_function): Handle case of setting
	virtual stack vars register (from built in setjmp); when parameter
	lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
	(subst_constant): Add new parm, MEMONLY.
	(expand_inline_function, integrate_parm_decls): Pass new parm.
	(integrate_decl_tree): Likewise.
	(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
	(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
	(copy_rtx_and_substitute, case SET): Add explicit calls to
	copy_rtx_and_substitute for both sides.

	* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
	constraints.
	(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
	within INDEX_TYPE, instead of before.
	(fixup_gotos): Use f->target_rtl, not the next insn,
	since latter may be from a later fixup.
	(expand_value_return): Correctly convert VAL when promoting function
	return; support RETURN_REG being a PARALLEL.
	(expand_return): When checking for result in regs and having
	cleanup, consider PARALLEL in DECL_RTL as being in regs.

From-SVN: r30299
1999-10-31 20:11:22 -05:00
Jeff Law
8f65050e41 Remove experimental hunk that wasn't supposed to be checked in.
From-SVN: r30298
1999-10-31 17:55:24 -07:00
Jeffrey A Law
0cedb36cbd simplify-rtx.c: New file.
* simplify-rtx.c: New file.
        * Makefile.in (OBJS): Add simplify-rtx.o
        (simplify-rtx.o): Add dependencies.
        * rtl.h (simplify_gen_binary, simplify_rtx): Add prototypes.
        * cse.c: Use simplify_gen_binary intead of cse_gen_binary.
        (cse_gen_binary, simplify_unary_operation): Delete.
        (simplify_binary_operation, simplify_plus_minus): Likewise.
        (check_fold_consts, simplify_relation_operation): Likewise.
        (simplify_ternary_operation): Likewise.
        (delete_trivially_dead_insns): Simplify the contents of the
        REG_EQUAL note before trying to substitute it into the source
        of the reg-reg copy at the end of a libcall sequence.

From-SVN: r30295
1999-10-31 17:18:23 -07:00
Mark Mitchell
848323170b rtl.h (note_stores): Add additional paramter.
* rtl.h (note_stores): Add additional paramter.
	* rtlanal.c (reg_set_p_1): Take additional paramter.
	(reg_set_last_1): Likewise.
	(reg_set_p): Adjust call to note_stores.
	(reg_set_last): Likewise.
	(note_stores): Pass data parameter to worker function.
	* alias.c (record_set): Take additional parameter.
	(init_alias_analysis): Pass it.
	* caller-save.c (mark_set_regs): Take additional parameter.
	(save_call_clobbered_regs): Pass NULL to note_stores.
	* combine.c (set_nonzero_bits_and_sign_copies): Take additional
	parameter.
	(record_dead_and_set_regs_1): Likewise.
	(reg_dead_at_p_1): Likewise.
	(combine_instructions): Adjust calls to note_stores.
	(try_combine): Likewise.
	(record_dead_insn): Remove.
	(record_dead_and_set_regs): Adjust calls to note_stores.
	(reg_dead_at_p): Likewise.
	* cse.c (invalidate_skipped_set): Take additional parameter.
	(cse_check_loop_start): Likewise.
	(cse_check_loop_start_value): Remove.
	(cse_set_around_loop): Adjust calls to note_stores.
	* flow.c (notice_stack_pointer_modification): Take additional
	parameter.  Remove duplicate declaration.
	(record_volatile_insns): Adjust calls to note_stores.
	* gcse.c (record_set_info): Take additional parameter.
	(record_last_set_info): Likewise.
	(invalidate_nonnull_info): Likewise.
	(record_set_insn): Remove.
	(compute_sets): Adjust calls to note_stores.
	(last_set_insn): Remove.
	(compute_hash_table): Adjust calls to note_stores.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks): Likewise.
	* global.c (mark_reg_store): Take additional parameter.
	(mark_reg_clobber): Likewise.
	(reg_becomes_live): Likewise.
	(global_conflicts): Adjust calls to note_stores.
	(build_insn_chain): Likewise.
	* integrate.c (note_modified_parmregs): Take additional parameter.
	(mark_stores): Likewise.  Make it static.
	(save_for_inline_nocopy): Adjust calls to note_stores.
	(try_constants): Likewise.
	* integrate.h (mark_stores): Remove declaration.
	* jump.c (mark_modified_reg): Take additional parameter.
	(thread_jumps): Adjust calls to note_stores.
	* local-alloc.c (validate_equiv_mem_from_store): Take additional
	parameter.
	(no_equiv): Likewise.
	(reg_is_set): Likewise.
	(validate_equiv_mem): Adjust calls to note_stores.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	* loop.c (note_set_pseudo_multiple_uses_retval): Remove.
	(note_addr_stored): Take additional parameter.
	(note_set_pseudo_multiple_uses): Likewise.
	(record_initial): Likewise.
	(prescan_loop): Adjust calls to note_stores.
	(strength_reduce): Likewise.
	(check_dbra_loop): Likewise.
	* regmove.c (flags_set_1): Take additional paramter.
	(mark_flags_life_zones): Adjust calls to note_stores.
	* reload1.c (mark_not_eliminable): Take additional parameter.
	(forget_old_reloads_1): Likewise.
	(reload_cse_invalidate_rtx): Likewise.
	(reload_cse_check_clobber): Likewise.
	(reload_combine_note_store): Likewise.
	(move2add_note_store): Likewise.
	(reload): Adjust calls to note_stores.
	(reload_as_needed): Likewise.
	(emit_reload_insns): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_cse_record_set): Adjust calls to reload_cse_invalidate_rtx.
	(reload_combine): Adjust calls to note_stores.
	* resource.c (update_live_status): Take additional paramter.
	(mark_target_live_regs): Adjust calls to note_stores.
	* stupid.c (find_clobbered_regs): Take additional parameter.
	(stupid_life_analysis): Adjust calls to note_stores.

From-SVN: r30221
1999-10-27 19:27:41 +00:00
Mark Mitchell
e05e2395bd alias.c (init_alias_analysis): Allocate reg_known_value and reg_known_equiv_p on the heap.
* alias.c (init_alias_analysis): Allocate reg_known_value and
 	reg_known_equiv_p on the heap.  Likewise for new_reg_base_value
	and reg_seen.
	(end_alias_analysis): Free reg_known_value and reg_known_equiv_p.
	* cse.c (cse_main): Call end_alias_analysis.
	* haifa-sched.c (schedule_insns): Likewise.
	* local-alloc. (update_equiv_regs): Likewise.
	* reload1.c (reload_cse_regs): Likewise.

From-SVN: r30217
1999-10-27 17:34:59 +00:00
Kaveh R. Ghazi
ec0ce6e261 c-parse.in (cast_expr): Constify.
* c-parse.in (cast_expr): Constify.

        * cccp.c (special_symbol): Likewise.

        * cse.c (hash_cse_reg_info, cse_reg_info_equal_p): Likewise.

        * dwarf2out.c (base_type_die): Likewise.

        * global.c (allocno_compare): Likewise.

        * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise.

        * regclass.c (fix_register): Likewise.

        * rtl.h (fix_register): Likewise.

        * stupid.c (stupid_reg_compare): Likewise.

        * toplev.c (decode_f_option): Likewise.

        * tree.c (build_complex_type): Likewise.

From-SVN: r30196
1999-10-26 18:13:38 +00:00
Mark Mitchell
16b702cd43 cse.c (cse_end_of_basic_block): Don't return the end of a basic block reached by a branch if...
* cse.c (cse_end_of_basic_block): Don't return the end of a basic
	block reached by a branch if we're not going to actually process
	this block

From-SVN: r30109
1999-10-21 03:37:33 +00:00
Jeffrey A Law
b61a6c8113 cse.c (invalidate_for_call): Do not remove memory references from the table here.
* cse.c (invalidate_for_call): Do not remove memory references from
        the table here.  It's handled elsewhere.

From-SVN: r30076
1999-10-18 17:05:03 -06:00
Vladimir Makarov
c1edba58eb cse.c: Include hashtab.h instead of splay-tree.h (struct cse_reg_info): No longer use...
* cse.c: Include hashtab.h instead of splay-tree.h
        (struct cse_reg_info): No longer use variant union.  Add new
        field "regno".  All references changed to avoid union.
        (cse_reg_info_used_list, cse_reg_info_used_list_end): New variables.
        (free_cse_reg_info): Remove.
        (hash_cse_reg_info, cse_reg_info_equal_p): New functions.
        (get_cse_reg_info): Revamp to use expandable hash tables instead
        of splay trees.  Initialize new fields in cse_reg_info structure.
        (new_basic_block): Similarly.

From-SVN: r30014
1999-10-15 02:19:37 -06:00
Kaveh R. Ghazi
ca3075bd73 cpplib.c (if_directive_nameo): Add static prototype.
* cpplib.c (if_directive_nameo): Add static prototype.

	* cse.c (cse_insn): Remove unused variable `p'.

	* except.c (create_rethrow_ref, push_entry,
	receive_exception_label, new_eh_region_entry, find_func_region,
	clear_function_eh_region, process_nestinfo): Add static prototypes.
	(get_reg_for_handler): Hide definition.
	(process_nestinfo): Initialize variable `extra_handlers'.

	* expr.h (expand_builtin_longjmp): Add extern prototype.

	* final.c (final_addr_vec_align, align_fuzz): Add static prototypes.

	* function.c (prepare_function_start): Likewise.
	(pop_function_context_from): Mark parameter `context' with
	ATTRIBUTE_UNUSED.
	(push_temp_slots_for_block, flush_addressof): Hide definition.

	* gcov.c (init_arc, reverse_arcs, create_program_flow_graph,
	solve_program_flow_graph, calculate_branch_probs,
	function_summary, main, fancy_abort): Add prototypes.

	* gen-protos.c (add_hash, parse_fn_proto, main): Likewise.
	(add_hash): Constify a char*.

	* ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr,
	ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr,
	ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes.

	* integrate.c (expand_inline_function_eh_labelmap): Likewise.

	* lists.c (free_list, zap_lists): Likewise.

From-SVN: r29783
1999-10-03 16:28:33 +00:00
Jeffrey A Law
0339ce7e77 cse.c (struct set): Delete inner_dest_loc field.
* cse.c (struct set): Delete inner_dest_loc field.
        (cse_insn): Remove assignments to inner_dest_loc field.

From-SVN: r29719
1999-09-29 23:43:58 -06:00
Jeffrey A Law
e48a7fbe7b cse.c: Update comments.
* cse.c: Update comments.
        (cse_insn): When converting a conditional/computed jump into
        an unconditional jump, always make sure a BARRIER immediately
        follows the converted jump.  Do not delete unreachable code.
        (cse_basic_block): Do not delete unreachable code.
        * toplev.c (rest_of_compilation): Move call to
        delete_trivially_dead_insns after the conditional call to
        jump_optimize.

From-SVN: r29665
1999-09-25 13:13:18 -06:00
Bernd Schmidt
6baf1cc8f8 Make it possible to prototype port-specific functions (and convert i386 to use this)
From-SVN: r29514
1999-09-20 10:00:03 +00:00
Jeffrey A Law
41babf2e0d cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to arg_pointer_rtx fixed if...
* cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to
        arg_pointer_rtx fixed if the argument pointer register is
        not fixed.
        (NONZERO_BASE_PLUS_P): Likewise.

From-SVN: r29425
1999-09-14 22:05:38 -06:00
Richard Henderson
a995e389c4 Replace insn_foo with insn_data.foo.
From-SVN: r29358
1999-09-12 05:46:08 -07:00
Richard Henderson
1497faf6be * cse.c (cse_main): If gc'ing, collect around cse_basic_block.
From-SVN: r29354
1999-09-11 23:26:04 -07:00
Jeff Law
c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Jeffrey A Law
8d71a51026 cse.c (delete_trivially_dead_insns): Do not skip the last insn if it is a real insn.
* cse.c (delete_trivially_dead_insns): Do not skip the last
        insn if it is a real insn.

From-SVN: r29138
1999-09-06 02:44:50 -06:00
Jeffrey A Law
61c48fbf26 cse.c (delete_trivially_dead_insns): Do not delete stores to the internal_arg_pointer.
* cse.c (delete_trivially_dead_insns): Do not delete stores to
        the internal_arg_pointer.

From-SVN: r29017
1999-08-31 16:48:58 -06:00
Zack Weinberg
ef178af3a4 rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL accesses if --enable-checking.
1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>

	* rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and
	bounds- check RTL accesses if --enable-checking.
	(RTVEC_ELT): Bounds check if --enable-checking.
	(XWINT, XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE,
	XBBDEF): Use RTL_CHECK1/RTL_CHECK2 as appropriate.
	(XVECEXP, XVECLEN): Define in terms of XVEC, RTVEC_ELT, and
	GET_NUM_ELEM.
	(X0WINT, X0INT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
	X0BBDEF, X0ADVFLAGS):  New macros for accessing '0' slots of RTXes.

	(ADDR_DIFF_VEC_FLAGS): Use X0ADVFLAGS.
	(NOTE_SOURCE_FILE): Use X0STR.
	(NOTE_BLOCK_NUMBER, NOTE_EH_HANDLER, LABEL_NUSES,
	MEM_ALIAS_SET): Use X0INT.
	(NOTE_RANGE_INFO, NOTE_LIVE_INFO, NOTE_BASIC_BLOCK,
	JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF, CONTAINING_INSN):
	Use X0EXP.
	* real.h (CONST_DOUBLE_CHAIN): Use X0EXP.
	* rtl.c (copy_rtx, copy_most_rtx): Copy '0' slots with X0WINT.
	(rtl_check_failed_bounds, rtl_check_failed_type1,
	rtl_check_failed_type2, rtvec_check_failed_bounds): New
	functions.
	(fancy_abort): Fix comment.

	* cse.c (canon_hash): Read CONST_DOUBLE data slots with XWINT.
	(cse_insn): Decrement LABEL_NUSES for jump target before
	deleting jump insn.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Use X0EXP for slot 1.
	* final.c (alter_subreg): Compute regno before changing x to
	REG; set REGNO(x) after changing it.
	* flow.c (count_basic_blocks): Use XWINT to inspect EH_REGION
	notes containing CONST_INTs.
	(delete_eh_regions): Use NOTE_EH_HANDLER.
	* function.c (put_reg_into_stack): Make reg a MEM before
	initializing it.
	(fixup_var_refs_insns):  Save REG_NOTES (insn) in case we
	delete insn.
	(gen_mem_addressof): Make reg a MEM before initializing it.
	* integrate.c (copy_rtx_and_substitute): Copy '0' slots with
	X0WINT.
	* local-alloc.c (update_equiv_regs): Zap REG_NOTES before
	deleting an insn, not after.
	(block_alloc): Only look at PATTERN(insn) if we have to, and
	only if it's format class 'i'.
	* loop.c (check_dbra_loop): Check bl->biv->add_val is a
	CONST_INT before using its INTVAL.
	* print-rtl.c (print_rtx): Use X0STR.
	* regmove.c (fixup_match_1): Don't look at PATTERN of
	non-class-'i' insn chain elements.
	* reload.c (loc_mentioned_in_p): Take address of
	in->fld[1].rtx directly.
	* reload1.c (reload): Change reg to a MEM before initializing
	it.
	* varasm.c (mark_constant_pool): Skip CONST_DOUBLES, which
	have no names.
	* config/i386/i386.md (decrement_and_branch_if_zero): Fix typo.

From-SVN: r29008
1999-08-31 19:39:10 +00:00
Kaveh R. Ghazi
5c45a8ac5f * cse.c: (fold_rtx): Cast to HOST_WIDE_INT in left shift.
From-SVN: r28993
1999-08-31 00:23:40 +00:00
Jeffrey A Law
af37f0dda9 jump.c (jump_optimize_1): Do not delete assignments to internal_arg_pointer.
* jump.c (jump_optimize_1): Do not delete assignments to
        internal_arg_pointer.
        * cse.c (delete_trivially_dead_insns): Always consider a set of
        the internal_arg_pointer live.

From-SVN: r28957
1999-08-28 19:42:28 -06:00
Jeffrey A Law
4741f6ad9a * cse.c (fold_rtx): Work around bug in Sun V5.0 compilers.
From-SVN: r28941
1999-08-27 23:41:44 -06:00
Kaveh R. Ghazi
6a651371a7 Warning fixes:
* calls.c (emit_call_1): Mark parameter `stack_size' with
	ATTRIBUTE_UNUSED.
	(expand_call): Initialize variable `insn'.
	(emit_library_call): Likewise for variable `high_to_save'.
	(emit_library_call_value): Likewise.
	(store_one_arg): Likewise for variables `lower_bound' and
	`upper_bound'.

	* combine.c (try_combine): Likewise for variables `i2_code_number'
	and `other_code_number'.
	(find_split_point): Likewise for variables `pos', `unsignedp' and
	`inner'.
	(simplify_if_then_else): Likewise for variables `op' and `c1'.
	(simplify_and_const_int): Remove unused variable `width'.
	(merge_outer_ops): Likewise.

	* cse.c (simplify_binary_operation): Cast an INTVAL() to `unsigned
	HOST_WIDE_INT' when comparing against one.
	(simplify_relational_operation): Likewise.
	(cse_insn): Initialize variables `src_eqv_volatile',
	`src_eqv_in_memory', `src_eqv_in_struct', `src_eqv_hash' and `sets'.

	* final.c (init_final): Constify parameter `filename'.
	(final_start_function): Mark parameter `optimize' with
	ATTRIBUTE_UNUSED.
	(profile_function): Likewise for parameters `first' and `optimize'.
	(output_source_line): Likewise for parameter `file'.

	* integrate.c (subst_constants): Cast a value to `size_t' when
	comparing against one.
	(mark_stores): Initialize variable `mode'.  Cast a value to
	`size_t' when comparing against one.

	* integrate.h (MAYBE_EXTEND_CONST_EQUIV_VARRAY): Likewise.

	* loop.c (move_movables): Initialize variable `first'.
	(strength_reduce): Likewise for variable `increment'.
	(check_dbra_loop): Likewise for variable `comparison_val'.  Cast a
	value to `size_t' when comparing against one.
	(load_mems): Initialize variable `end_label'.

	* output.h (init_final): Constify parameter.

	* reload.c (decompose): Initialize variable `base'.

	* reload1.c (reload): Likewise for variable `is_scalar'.
	(spill_hard_reg): Mark parameter `dumpfile' with ATTRIBUTE_UNUSED.
	(choose_reload_regs): Initialize variable `mode'.
	(emit_reload_insns): Likewise for variable `store_insn'.
	(reload_cse_noop_set_p): Mark parameter `insn' with
	ATTRIBUTE_UNUSED.
	(reload_combine): Initialize variable `set'.

	* unroll.c (unroll_loop): Likewise for variable `local_label'.
	(copy_loop_body): Cast a value to `size_t' when comparing against
	one.

	* varasm.c (assemble_variable): Initialize variable `size_tree'.
	(const_hash): Add an `else abort()' in an if-else-if-else sequence.
	(remove_from_pending_weak_list): Mark parameter `name' with
	ATTRIBUTE_UNUSED.

From-SVN: r28860
1999-08-25 13:37:46 +00:00
Bernd Schmidt
bf6bb899e1 Fix more problems from GC diffs
From-SVN: r28820
1999-08-24 12:05:09 +00:00
Kaveh R. Ghazi
6f7d635c0e rtl.h (rtx_format): Constify a char*.
* rtl.h (rtx_format): Constify a char*.

	* rtl.c (rtx_format): Likewise.
	(copy_rtx, copy_most_rtx, read_rtx): Likewise.
	(init_rtl): Use accessor macro, not `rtx_format'.

	* alias.c (rtx_equal_for_memref_p, find_symbolic_term): Constify a
	char*.

	* caller-save.c (mark_referenced_regs): Likewise.

	* combine.c (subst, make_compound_operation, known_cond,
	gen_rtx_combine, update_table_tick, get_last_value_validate,
	use_crosses_set_p, mark_used_regs_combine, move_deaths): Likewise.

	* cse.c (rtx_cost, mention_regs, canon_hash, exp_equiv_p,
	refers_to_p, canon_reg, fold_rtx, cse_process_notes,
	count_reg_usage): Likewise.

	* emit-rtl.c (gen_rtx, copy_rtx_if_shared, reset_used_flags):
	Likewise.

	* final.c (leaf_renumber_regs_insn): Likewise.

	* flow.c (mark_used_regs, find_use_as_address, dump_flow_info,
	dump_edge_info, count_reg_references): Likewise.

	* function.c (fixup_var_refs_1, walk_fixup_memory_subreg,
	fixup_stack_1, purge_addressof_1, instantiate_virtual_regs_1):
	Likewise.

	* gcse.c (oprs_unchanged_p, hash_expr_1, expr_equiv_p,
	oprs_not_set_p, expr_killed_p, compute_transp, find_used_regs,
	add_label_notes): Likewise.

	* genattrtab.c (attr_rtx, attr_copy_rtx, encode_units_mask,
	clear_struct_flag, count_sub_rtxs, count_alternatives,
	compares_alternatives_p, contained_in_p, walk_attr_value,
	write_expr_attr_cache): Likewise.

	* genconfig.c (walk_insn_part): Likewise.

	* genemit.c (max_operand_1, gen_exp): Likewise.

	* genextract.c (walk_rtx): Likewise.

	* genflags.c (num_operands): Likewise.

	* genoutput.c (scan_operands): Likewise.

	* genpeep.c (match_rtx): Likewise.

	* genrecog.c (add_to_sequence): Likewise.

	* haifa-sched.c (may_trap_exp, sched_analyze_2, attach_deaths):
	Likewise.

	* integrate.c (save_constants, copy_for_inline,
	copy_rtx_and_substitute, subst_constants, restore_constants):
	Likewise.

	* jump.c  (mark_jump_label, invert_exp, redirect_exp,
	rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.

	* local-alloc.c (contains_replace_regs, memref_referenced_p):
	Likewise.

	* loop.c (record_excess_regs, rtx_equal_for_loop_p,
	add_label_notes, replace_call_address, count_nonfixed_reads,
	invariant_p, find_single_use_in_loop, find_mem_givs,
	find_life_end, maybe_eliminate_biv_1, update_reg_last_use):
	Likewise.

	* print-rtl.c (reg_names, print_rtx): Likewise.

	* recog.c (validate_replace_rtx_1, find_single_use_1): Likewise.

	* reg-stack.c (stack_regs_mentioned_p, record_label_references,
	record_reg_life_pat, swap_rtx_condition, goto_block_pat,
	print_blocks): Likewise.

	* regclass.c (fix_register, record_address_regs,
	reg_scan_mark_refs): Likewise.

	* regmove.c (stable_but_for_p): Likewise.

	* reload.c (loc_mentioned_in_p, operands_match_p,
	find_reloads_toplevsubst_reg_equivs, find_reloads_address_1,
	copy_replacements, refers_to_regno_for_reload_p,
	refers_to_mem_for_reload_p, find_inc_amount, regno_clobbered_p,
	reload_when_needed_name, reg_class_names, debug_reload_to_stream):
	Likewise.

	* reload1.c (eliminate_regs, scan_paradoxical_subregs,
	delete_address_reloads_1, count_occurrences,
	reload_cse_mem_conflict_p, reload_combine_note_use,
	add_auto_inc_notes): Likewise.

	* resource.c (mark_referenced_resources, mark_set_resources):
	Likewise.

	* rtlanal.c (rtx_unstable_p, rtx_varies_p, rtx_addr_varies_p,
	reg_mentioned_p, regs_set_between_p, modified_between_p,
	modified_in_p, refers_to_regno_p, reg_overlap_mentioned_p,
	rtx_equal_p, volatile_insn_p, volatile_refs_p, side_effects_p,
	may_trap_p, inequality_comparisons_p, replace_rtx, replace_regs,
	jmp_uses_reg_or_mem, for_each_rtx, regno_use_in): Likewise.

	* sched.c (sched_analyze_2, attach_deaths): Likewise.

	* stupid.c (stupid_mark_refs): Likewise.

	* unroll.c (remap_split_bivs): Likewise.

	* varasm.c (mark_constants): Likewise.

	* a29k/a29k.c (uses_local_reg_p): Likewise.

	* alpha/alpha.c (summarize_insn): Likewise.

	* arm/arm.c (symbol_mentioned_p, label_mentioned_p,
	eliminate_lr2ip): Likewise.

	* arm/thumb.c (symbol_mentioned_p, label_mentioned_p): Likewise.

	* i386/i386.c (symbolic_reference_mentioned_p, copy_all_rtx,
	reg_mentioned_in_mem): Likewise.

	* ns32k/ns32k.c (global_symbolic_reference_mentioned_p,
	symbolic_reference_mentioned_p): Likewise.

	* romp/romp.c (unsigned_comparisons_p, hash_rtx): Likewise.

	* sh/sh.c (regs_used, mark_use): Likewise.

	* vax/vax.c (vax_rtx_cost): Likewise.

From-SVN: r28784
1999-08-20 23:05:25 +00:00
Zack Weinberg
8f985ec4c7 rtl.def (NOTE): Change format to "iuu0n".
1999-08-19 14:44 -0700  Zack Weinberg  <zack@bitmover.com>

	* rtl.def (NOTE): Change format to "iuu0n".
	(ADDR_DIFF_VEC): Change format to "eEee0".
	(ADDRESSOF): Change format to "eit".

	* rtl.h (rtvec): Make "elem" an array of rtx, not rtunion.
	(RTVEC_ELT): Change to match.
	(XVECEXP): Use XVEC and RTVEC_ELT.
	(INSN_UID, INSN_CODE, CODE_LABEL_NUMBER, NOTE_LINE_NUMBER,
	ADDRESSOF_REGNO, REGNO, SUBREG_WORD): Use XINT.
	(PREV_INSN, NEXT_INSN, PATTERN, REG_NOTES,
	CALL_INSN_FUNCTION_USAGE, SUBREG_REG, SET_SRC, SET_DEST,
	TRAP_CONDITION, TRAP_CODE): Use XEXP.
	(INTVAL): Use XWINT.
	(ADDRESSOF_DECL): Use XTREE.
	(SET_ADDRESSOF_DECL): Delete.
	(NOTE_DECL_NAME, NOTE_DECL_CODE, NOTE_DECL_RTL,
	NOTE_DECL_IDENTIFIER, NOTE_DECL_TYPE): Kill.  These have been
	ifdefed out since 2.6 at least.
	(gen_rtvec_vv): Delete prototype.

	* rtl.h (rtvec_alloc): rt->elem is now an array of rtx,
	not rtunion.
	(copy_most_rtx): Handle 't' format letter.
	* emit-rtl.c (gen_rtvec_v): rt_val->elem is an array of rtx.
	(gen_rtvec_vv): Delete function.  All callers changed to use
	gen_rtvec_v instead.
	* print-rtl.c (print_rtx): Move special casing of NOTEs to
	the '0' format letter.

	* function.c (gen_mem_addressof): Don't use
	SET_ADDRESSOF_DECL; provide `decl' to gen_rtx_ADDRESSOF
	instead.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	Copy 't' slots with XTREE.
	(subst_constants): Treat 't' slots like '[swi]' slots.
	* cse.c (canon_hash, exp_equiv_p): Treat 't' slots like	'0' slots.
	* jump.c (rtx_equal_for_thread_p): Likewise.
	* rtlanal.c (rtx_equal_p): Likewise.
	* stmt.c (expand_end_case): gen_rtx_ADDR_DIFF_VEC now takes
	only four arguments.
	* gengenrtl.c (type_from_format): Provide correct types for
	'b' and 't' slots.


	* tree.h [ENABLE_CHECKING] (TREE_CHECK, TREE_CLASS_CHECK):
	If a recent gcc is in use (always in stage2 and beyond), use
	statement expressions, so we don't make a function call unless
	the check fails.  Evaluate arguments exactly once.
	(CHAIN_CHECK, DO_CHECK, DO_CHECK1, TREE_CHECK1,
	TREE_CLASS_CHECK1, TYPE_CHECK1, DECL_CHECK1, CST_CHECK1):
	Delete.
	(CST_OR_CONSTRUCTOR_CHECK, EXPR_CHECK): Redefine such that
	they evaluate their arguments exactly once, irrespective of
	the compiler in use.

	* tree.c [ENABLE_CHECKING]: Define whichever set of functions
	is used by the currently-enabled check macros.  This is:
	(tree_check_failed, tree_class_check_failed): For gcc.
	(tree_check, tree_class_check, cst_or_constructor_check,
	expr_check): For other compilers.

	* gencheck.c: Do not define any *_CHECK1 macros.

From-SVN: r28769
1999-08-19 22:33:38 +00:00
Geoff Keating
312f625598 cse.c (cse_insn): Call never_reached_warning when a jump is changed to be unconditional.
* cse.c (cse_insn): Call never_reached_warning when a jump is
changed to be unconditional.
* flags.h: Declare warn_notreached.
* flow.c (delete_block): Call never_reached_warning when
a block is deleted.
* jump.c (delete_barrier_successors): Call never_reached_warning
when we delete everything after a BARRIER.
(never_reached_warning): New function.
* rtl.h: Declare never_reached_warning.
* toplev.c (warn_notreached): New variable.
(lang_independent_options): Set warn_notreached
when -Wunreachable-code.
(compile_file): We need line numbers for -Wunreachable-code.

Also modify documentation to suit.

From-SVN: r28747
1999-08-18 10:43:26 +00:00
Bernd Schmidt
49ad7cfa7a Include function.h in most files.
Include function.h in most files.  Remove most of the global variables
duplicated in function.h.  Add accessor macros for them which access
current_function.  Delete INLINE_HEADER rtx and related code, replace
with code using struct function to store inlining related data.

From-SVN: r28626
1999-08-09 14:00:21 +00:00
Jeffrey A Law
778e067718 * cse.c (cse_insn): Fix dumb thinko in last change.
From-SVN: r28466
1999-08-03 04:00:27 -06:00
Jeffrey A Law
eec9ef57bf cse.c (cse_insn): Fix loop which deletes insns after a jump that has become an unconditional jump.
* cse.c (cse_insn): Fix loop which deletes insns after a jump
        that has become an unconditional jump.

From-SVN: r28388
1999-08-01 23:53:02 -06:00
Richard Henderson
7e4ce834b2 explow.c (trunc_int_for_mode): New function.
* explow.c (trunc_int_for_mode): New function.
        (plus_constant_wide): Use it.
        * combine.c (simplify_and_const_int): Likewise.
        (merge_outer_ops): Likewise.
        (simplify_shift_const): Likewise.
        * cse.c (simplify_unary_operation): Likewise.
        (simplify_binary_operation): Likewise.
        * emit-rtl.c (operand_subword): Likewise.
        * rtl.h: Declare it.

From-SVN: r28222
1999-07-22 18:21:31 -07:00
J"orn Rennecke
15c68354e9 cse.c (cse_insn): Don't put hard register source into tables for last insn of a libcall.
* cse.c (cse_insn): Don't put hard register source into tables for
	last insn of a libcall.

From-SVN: r27550
1999-06-16 14:32:14 +01:00
Andreas Schwab
51e2a951cc cse.c (cse_insn): Copy SRC_CONST before putting it in the REG_EQUAL note.
* cse.c (cse_insn): Copy SRC_CONST before putting it in the
        REG_EQUAL note.

From-SVN: r26958
1999-05-16 18:36:36 -06:00
Jeffrey A Law
01e752d386 cse.c (flush_hash_table): New function.
* cse.c (flush_hash_table): New function.
        (cse_insn): Flush the hash table when we encounter a volatile asm.
        (cse_basic_block): Use flush_hash_table instead of doing it
        inline.
        * reload1.c (reload_cse_regs_1): Flush known register values if
        we encounter a volatile asm.

From-SVN: r26304
1999-04-08 18:29:45 -06:00
Mark Mitchell
30f7237966 alias.c (alias_set_compare): Remove.
* alias.c (alias_set_compare): Remove.
	(record_alias_subset): Use splay_tree_compare_ints instaed of
	alias_set_compare.
	(init_alias_once): Likewise.
	* cse.c: Include splay-tree.h.
	(reg_qty): Remove.
	(reg_tick): Likewise.
	(reg_table): Likewise.
	(cse_reg_info): New structure.
	(cse_reg_info_free_list): New variable.
	(cse_reg_info_tree): Likewise.
	(cached_regno): Likewise.
	(cached_cse_reg_info): Likewise.
	(all_minus_one): Remove.
	(consec_ints): Likewise.
	(GET_CSE_REG_INFO): New macro.
	(REG_TICK): Likewise.  Use throughout instead of reg_tick.
	(REG_IN_TABLE): Likewise.  Use throughout instead of reg_in_table.
	(REG_QTY): Likewise.  Use throughout instead of reg_qty.
	(get_cse_reg_info): New function.
	(free_cse_reg_info): Likewise.
	(new_basic_block): Reinitialize cse_reg_info_tree instead of
	reg_tick, all_minus_one, and consec_ints.
	* Makefile.in (cse.o): Depend on splay-tree.h
	* splay-tree.h (splay_tree_compare_ints): Declare.
	* splay-tree.c (splay_tree_compare_ints): Define.

From-SVN: r26069
1999-03-30 20:52:33 +00:00
J"orn Rennecke
50270076bd * cse.c (cse_insn): Don't change the result register of a libcall.
From-SVN: r25898
1999-03-22 13:55:22 +00:00
Kaveh R. Ghazi
1a87eea220 cse.c (check_fold_consts): New static function.
* cse.c (check_fold_consts): New static function.
        (cfc_args): New struct.
        (simplify_relational_operation): Use them in call to
        `do_float_handler'.
        * toplev.c (do_float_handler): New function to wrap calls to
        setjmp/set_float_handler.
        * toplev.h (do_float_handler): Add extern prototype.
        * tree.c (build_real_from_int_cst_1): New static function.
        (brfic_args): New struct.
        (build_real_from_int_cst): Use them in call to
        `do_float_handler'.

From-SVN: r25768
1999-03-14 14:02:10 +00:00
Richard Henderson
9a794e5054 * cse.c (canon_hash): Never reject hard regs in CCmode.
From-SVN: r25623
1999-03-06 18:00:27 -08:00
Franz Sirl
ac7ef8d56b cse.c (fold_rtx): Update comments for (const (minus (label) (label))) case.
* cse.c (fold_rtx): Update comments for (const (minus (label) (label)))
        case.
        (cse_insn): Avoid creating a bogus REG_EQUAL note for
        (const (minus (label) (label)))
        (record_jump_cond): Fix mismatched paren in comment.
Fixes powerpc label-label problem.
Bootstraps on the x86.

Co-Authored-By: Jeffrey A Law <law@cygnus.com>

From-SVN: r25527
1999-03-01 17:45:45 -07:00
Kaveh R. Ghazi
a015305167 cse.c (dump_class): Revert last change and make the prototype extern.
* cse.c (dump_class): Revert last change and make the prototype
       extern.

From-SVN: r25438
1999-02-25 11:43:00 +00:00
Kaveh R. Ghazi
592e5d21b1 cse.c (dump_class): Make the function definition static to match the prototype.
* cse.c (dump_class): Make the function definition static to match
       the prototype.

From-SVN: r25430
1999-02-25 09:29:10 +00:00
Mark Mitchell
a4c6502a66 cse.c (dump_class): New function.
* cse.c (dump_class): New function.
	(invalidate_memory): Fix typo in comment.
	* function.c (temp_slot): Add an alias set field.
	(assign_stack_temp): Only reuse slots if they will have the
	same alias set as before.
	(combine_temp_slots): Don't combine if -fstrict-aliasing;
	that's unsafe.
	* rtl.c (copy_rtx): Copy all the flags (in particular,
	MEM_SCALAR_P).

From-SVN: r25372
1999-02-22 13:34:33 +00:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Richard Henderson
ee5332b81a cse.c (fold_rtx): Revert 29 Dec change.
* cse.c (fold_rtx): Revert 29 Dec change.
        (cse_insn): Revert 12 Jan change.
        * expr.c (expand_builtin): Don't emit CONST around CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs): Revert 29 Dec change.
        * rtl.def: Likewise.
        * rtl.h (CONSTANT_P): Likewise.
        * expr.c (emit_move_insn): Never try to flush CONSTANT_P_RTX
        to memory.
        * recog.c (immediate_operand): Accept CONSTANT_P_RTX.
        * alpha.c (input_operand): Likewise.
        * c4x.c (const_operand): Likewise.
        * explow.c (allocate_dynamic_stack_space): Use register_operand
        instead of arith_operand, which does not exist.
        * 1750a.h: Fix comment closure.
        * a29k.c (a29k_set_memflags): Fix typo in 19 Jan change.
        * arc.md (one_cmplsi2_set_cc_insn): Fix set mode mismatch.
        * arm.h (TARGET_SWITCHES): Fix typo.
        * i370.md (anon mult and div patterns): Fix set mode mismatch.
        * i860.c (output_delayed_branch): Fix operands to constrain_operands.
        (output_delay_insn): Likewise.
        * m88k.md (anon rotate insns): Fix set mode mismatch.
        (anon BLKmode moves): Commonize and fix set mode mismatches.
        * ns32k.md (udivmoddi[shq]i4_internal): Fix mode mismatch.
        * romp.md (movdf): Fix typo.

From-SVN: r24796
1999-01-20 18:21:28 -08:00
Mark Mitchell
747215f1fe Update copyrights
From-SVN: r24765
1999-01-19 12:08:36 +00:00
Mark Mitchell
c6df88cbec rtl.h (rtx_def): Update documentation.
* rtl.h (rtx_def): Update documentation.
	(MEM_IN_STRUCT_P): Likewise.
	(MEM_SCALAR_P): New macro.
	(MEM_COPY_ATTRIBUTES): Likewise.
	(MEM_SET_IN_STRUCT_P): Likewise.
	* rtl.texi (MEM_SCALAR_P): Document.
	* alias.c (canon_rtx): Use MEM_COPY_ATTRIBUTES.
	(fixed_scalar_and_varying_struct_p): New function.  Use
	MEM_SCALAR_P rather than !MEM_IN_STRUCT_P.
	(aliases_everything_p): Likewise.
	(true_dependence): Use them.
	(write_dependence_p): New function, containing code common to
	anti_dependence and output_dependence.
	(anti_dependence): Use it.
	(output_dependence): Likewise.
	* calls.c (save_fixed_argument_area): Don't clear
	MEM_IN_STRUCT_P.
	(expand_call): Use MEM_SET_IN_STRUCT_P.
	(emit_library_call): Don't clear MEM_IN_STRUCT_P.
	(emit_library_call_value): Likewise.
	(store_one_arg): Use MEM_SET_IN_STRUCT_P.
	* combine.c (simplify_rtx): Use MEM_COPY_ATTRIBUTES.
	(make_extraction): Likewise.
	(simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Use MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address): Likewise.
	* explow.c (stabilize): Use MEM_COPY_ATTRIBUTES.
	* expr.c (protect_from_queue): Use MEM_COPY_ATTRIBUTES.
	(emit_group_store): Use MEM_SET_IN_STRUCT_P.
	(copy_blkmode_from_reg): Likewise.
	(store_field): Likewise.
	(expand_expr): Remove bogus guesswork setting MEM_IN_STRUCT_P
	heuristically.  Use MEM_SET_IN_STRUCT_P.
	(get_memory_rtx): Likewise.
	* final.c (alter_subreg): Use MEM_COPY_ATTRIBUTES.
	* function.c (assign_stack_temp): Clear MEM_SCALAR_P and
	MEM_ALIAS_SET on newly returned MEMs.
	(assign_temp): Use MEM_SET_IN_STRUCT_P.
	(put_reg_into_stack): Likewise.
	(fixup_var_refs1): Use MEM_COPY_ATTRIBUTES.
	(gen_mem_addressof): Use MEM_SET_IN_STRUCT_P.
	(assign_parms): Likewise.
	(expand_function): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Use MEM_COPY_ATTRIBUTES.
	* loop.c (note_addr_stored): Remove check on MEM_IN_STRUCT_P.
	* optabs.c (gen_move_insn): Use MEM_COPY_ATTRIBUTES.
	* print-rtl.c (print_rtx): Print /f for frame_related.
	* recog.c (validate_replace_rtx_1): Use MEM_COPY_ATTRIBUTES.
	* reload1.c (reload): Copy MEM_SCALAR_P as well.
	* stmt.c (expand_decl): Use MEM_SET_IN_STRUCT_P.
	(expand_anon_union_decl): Use MEM_COPY_ATTRIBUTES.
	* varasm.c (make_decl_rtl): Use MEM_SET_IN_STRUCT_P.
	(output_constant_def): Likewise.
	* a29k.c (a29k_set_memflags_1): Take scalar_p.
	Set MEM_SCALAR_P.
	(a29k_set_memflags): Use it.
	* alpha.c (get_aligned_mem): Use MEM_COPY_ATTRIBUTES.
	* c4x.c (c4x_scan_for_ld): Likewise.
	* h8300.c (fix_bit_operand): Likewise.
	* m88k.c (legitimize_address): Likewise.
	(block_move_loop): Likewise.
	(block_move_no_loop): Likewise.
	(block_move_sequence): Likewise.
	(m88k_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* mips/abi64.h (SETUP_INCOMING_VARARGS): Likewise.
	* rs6000.c (expand_block_move_insn): Use MEM_COPY_ATTRIBUTES.
	* sh.c (sh_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* arm.h (arm_gen_load_multiple): Take scalar_p.
	(arm_store_load_multiple): Likewise.
	* arm.c (arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movstrqi): Treat MEM_SCALAR_P like MEM_IN_STRUCT_P.

From-SVN: r24759
1999-01-19 10:32:33 +00:00
Richard Henderson
1ff136fd07 * cse.c (cse_insn): Never prefer (const (constant_p_rtx)).
From-SVN: r24637
1999-01-11 18:54:32 -08:00
Jeffrey A Law
97577254a2 cse.c (invalidate_skipped_block): Call invalidate_from_clobbers for each insn in the skipped block.
* cse.c (invalidate_skipped_block): Call invalidate_from_clobbers
        for each insn in the skipped block.
Fixes m68k codegen bug.

From-SVN: r24450
1998-12-30 16:35:49 -07:00
Richard Henderson
185ebd6c71 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>:
* rtl.def (CONSTANT_P_RTX): Clarify commentary.
        * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): Rework to
        consider constant CONSTRUCTOR constant and to defer some cases
        to cse.
        * cse.c (fold_rtx, case CONST): Add handling for CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs, case CONST): Likewise.
Richard Henderson  <rth@cygnus.com>
        * expr.c (init_expr_once): Kill can_handle_constant_p recognition.
        * cse.c (fold_rtx, case 'x'): Remove standalone CONSTANT_P_RTX code.

From-SVN: r24439
1998-12-29 03:36:22 -08:00
Kaveh R. Ghazi
973838fdb3 Warning fixes:
* alias.c (record_alias_subset): Remove ignored `&'.
        (init_alias_once): Likewise.
        * c-lex.c (UNGETC): Cast first argument of comma expression to void.
        * config/mips/mips.c (mips_asm_file_end): Cast the result of
        fwrite to `int' when comparing against one.
        * config/mips/mips.h (CAN_ELIMINATE): Add parens around && within ||.
        (INITIAL_ELIMINATION_OFFSET): Add braces to avoid ambiguous `else'.
        * cse.c (rehash_using_reg): Change type of variable `i' to
        unsigned int.
        * dwarf2out.c (initial_return_save): Cast -1 to unsigned before
        assigning it to one.
        * except.c (duplicate_eh_handlers): Remove unused variable `tmp'.
        * final.c (final_scan_insn): Likewise for variable `i'.
        (output_asm_insn): Cast a char to unsigned char when used as an
        array index.
        * gcse.c (compute_pre_ppinout): Cast -1 to SBITMAP_ELT_TYPE when
        assigning it to one.
        * loop.c (strength_reduce): Remove unused variables `count' and `temp'.
        * recog.c (preprocess_constraints): Cast a char to unsigned char
        when used as an array index.
        * regmove.c (find_matches): Likewise.
        * reload1.c (calculate_needs): Add default case in switch.
        (eliminate_regs_in_insn): Initialize variable `offset'.
        (set_offsets_for_label): Change type of variable `i' to unsigned.
        (reload_as_needed): Wrap variable `i' in macro check on
        AUTO_INC_DEC || INSN_CLOBBERS_REGNO_P.
        * scan-decls.c (scan_decls): Mark parameters `argc' and `argv'
        with ATTRIBUTE_UNUSED.  Cast variable `start_written' to size_t
        when comparing against one.
        * stor-layout.c (layout_decl): Cast maximum_field_alignment to
        unsigned when comparing against one.  Likewise for
        GET_MODE_ALIGNMENT().
        (layout_record): Cast record_align to int when comparing against a
        signed value.
        (layout_type): Cast TYPE_ALIGN() to int when comparing against a
        signed value.
        * tree.c (get_identifier): Cast variable `len' to unsigned when
        comparing against one.
        (maybe_get_identifier): Likewise

From-SVN: r24403
1998-12-23 07:09:01 +00:00
Jim Wilson
737e7965de Fix alpha-x-m32r-elf bugs.
* cse.c (simplify_unary_operation): Sign-extend constants when
	they have the most significant bit set for the target.
	* real.c (endian): Sign-extend 32 bit output values on a 64 bit
	host.
	* m32r/m32r.c (m32r_expand_prologue): Store pretend_size in
	HOST_WIDE_INT temporary before negating it.
	* m32r/m32r.md (movsi_insn+1): Use ~0xffff instead of 0xffff0000.

From-SVN: r24254
1998-12-10 09:21:35 -08:00
Jeffrey A Law
940da3246d cse.c (fold_rtx): Make autoincrement addressing mode tests be runtime selectable.
* cse.c (fold_rtx): Make autoincrement addressing mode tests be
        runtime selectable.
        * expr.c (move_by_pieces): Similarly.
        (move_by_pieces_1, clear_by_pieces, clear_by_pieces_1): Similarly.
        * flow.c (find_auto_inc): Similarly.
        (try_pre_increment): Similarly.
        * loop.c (strength_reduce): Similarly.
        * regclass.c (auto_inc_dec_reg_p): Similarly.
        * regmove.c (try_auto_increment): Similarly.
        (fixup_match_1): Similarly.
        * rtl.h (HAVE_PRE_INCREMENT): Define if not already defined.
        (HAVE_PRE_DECREMENT): Similarly.
        (HAVE_POST_INCREMENT, HAVE_POST_DECREMENT): Similarly.
        sponding changes to all target header files.

From-SVN: r23837
1998-11-24 16:15:19 -07:00
Kaveh R. Ghazi
79c9824ecb Warning fixes:
* Makefile.in (flow.o): Depend on recog.h.
        * cpplib.h (directive_table): Add missing initializiers.
        (finclude): Change type of variable `bsize' to size_t.
        * cse.c (rtx_cost): Mark parameter `outer_code' with ATTRIBUTE_UNUSED.
        * dwarfout.h (dwarfout_label): Wrap prototype in macro RTX_CODE.
        * fix-header.c (lookup_std_proto): Cast the result of `strlen' to
        `int' when comparing against one.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (cpp_fatal): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
        * flow.c: Include recog.h.
        (sbitmap_copy): Cast arguments 1 & 2 of `bcopy' to (PTR).
        * function.c (thread_prologue_and_epilogue_insns): Mark parameter
        `f' with ATTRIBUTE_UNUSED.
        (reposition_prologue_and_epilogue_notes): Likewise.
        * genopinit.c (gen_insn): Cast argument of ctype functions to
        `unsigned char'.
        * haifa-sched.c: Include recog.h.
        (blockage_range): Cast result of UNIT_BLOCKED macro to (int) when
        comparing against one.
        * libgcc2.a (__throw): Revert ATTRIBUTE_UNUSED change for now.
        * mips-tfile.c (parse_end): Cast the argument of ctype function to
        `unsigned char'.
        (parse_ent): Likewise.
        (parse_input): Likewise.
        * optabs.c (init_libfuncs): Likewise.
        * protoize.c (find_rightmost_formals_list): Likewise.
        * recog.h (const_double_operand): Fix typo in prototype.
        * tlink.c (scan_linker_output): Cast the argument of ctype
        function to `unsigned char'.
        * toplev.c (check_lang_option): Cast the result of `strlen' to
        `int' when comparing against one.

From-SVN: r23155
1998-10-17 20:26:29 +00:00
David S. Miller
925be47cd5 cse.c (cse_basic_block): Fixup hash flushing loop so we do not accidently walk into the free list.
* cse.c (cse_basic_block): Fixup hash flushing loop so we do not
	accidently walk into the free list.  Comment how that can happen.
	(invalidate): Fix indentation.

From-SVN: r23122
1998-10-15 18:23:51 -07:00
Nick Clifton
2ce5e1b422 Check for NULL return from gen_lowpart_if_possible().
From-SVN: r23049
1998-10-13 11:39:26 +00:00
J"orn Rennecke
37053d1fe5 * cse.c (insert_regs): Fix bug in Sep 24 change.
From-SVN: r22866
1998-10-06 13:04:55 +01:00
J"orn Rennecke
34c7390981 expr.c (store_constructor): When initializing a field that is smaller than a word...
* expr.c (store_constructor): When initializing a field that is smaller
	than a word, at the start of a word, try to widen it to a full word.
	* cse.c (cse_insn): When we are about to change a register,
	remove any invalid references to it.
	(remove_invalid_subreg_refs): New function.
	(mention_regs): Special treatment for SUBREGs.
	(insert_regs): Don't strip SUBREG for call to mention_regs.
	Check if reg_tick needs to be bumped up before that call.
	(lookup_as_function): Try to match known word_mode constants when
	looking for a norrower constant.
	(canon_hash): Special treatment for SUBREGs.

From-SVN: r22567
1998-09-24 10:59:41 +01:00
Jason Merrill
63be02dbae i386.h (MODES_TIEABLE_P): Reorganize to shut up warnings.
* i386.h (MODES_TIEABLE_P): Reorganize to shut up warnings.
	* alias.c (memrefs_conflict_p): Add braces to shut up warnings.
	* cse.c (cse_basic_block): Add parens to shut up warnings.

From-SVN: r21734
1998-08-14 12:28:30 -04:00
Vladimir N. Makarov
1ed0205e35 cse.c (cse_insn): Enable subsitution inside libcall only for REG, SUBREG, MEM.
�
	* cse.c (cse_insn): Enable subsitution inside libcall only for REG,
	SUBREG, MEM.
	* rtlanal.c (replace_rtx): Prohibit replaces in	CONST_DOUBLE.

From-SVN: r21435
1998-07-28 12:54:04 +00:00
Jeffrey A Law
02e39abcc1 cse.c (count_reg_usage): Count registers used in addresses of CLOBBERs.
* cse.c (count_reg_usage): Count registers used in addresses of
        CLOBBERs.

From-SVN: r21012
1998-07-08 14:46:15 -06:00
J"orn Rennecke
759bd8b73b * cse (cse_insn): Don't make change without validation.
From-SVN: r20996
1998-07-07 14:09:07 +01:00
Mark Mitchell
2f54179908 cse.c (CSE_ADDRESS_COST): New macro, based on ADDRESS_COST, but dealing with ADDRESSOF.
* cse.c (CSE_ADDRESS_COST): New macro, based on ADDRESS_COST, but
	dealing with ADDRESSOF.
	(find_best_addr): Use it.

From-SVN: r20945
1998-07-06 09:38:46 +00:00
Jeffrey A Law
7bd8b2a885 cse.c (cse_insn): Second arg is an RTX now.
* cse.c (cse_insn): Second arg is an RTX now.  Update all callers.
        (cse_basic_block): Keep track of the current RETVAL insn for a
        libcall instead of just noting that we're in a libcall.

From-SVN: r20936
1998-07-05 17:59:03 -06:00
Mark Mitchell
9de2c71a47 cse.c (cse_insn): When SETting (MEM (ADDRESSOF (X))) to Y...
* cse.c (cse_insn): When SETting (MEM (ADDRESSOF (X))) to Y,
        don't claim that the former is equivalent to the latter.

From-SVN: r20935
1998-07-05 17:33:36 -06:00
Richard Henderson
aac5cc1620 expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
        the size and alignment of the structure being manipulated.
        * expr.c, calls.c, function.c: Update all callers.
        * expr.h: Update prototypes.
        * cse.c (invalidate): Cope with parallels.

From-SVN: r20867
1998-06-30 22:10:51 -07:00
Richard Henderson
cff48d8f76 rtl.def (CONSTANT_P_RTX): New.
* rtl.def (CONSTANT_P_RTX): New.
        * rtl.h (CONSTANT_P): Recognize it.
        * cse.c (fold_rtx): Eliminate it.
        * expr.c (can_handle_constant_p): New variable.
        (init_expr_once): Initialize it.
        (expand_builtin): Generate CONSTANT_P_RTX if the expression is not
        immediately recognizable as a constant.

From-SVN: r20846
1998-06-30 09:19:11 -07:00
Jeff Law
9ec36da574 * Merge from gcc2 June 9, 1998 snapshot. See ChangeLog.13 for
details.

From-SVN: r20808
1998-06-29 15:40:49 -06:00
Mark Mitchell
1d22a2c164 cse.c (cse_basic_block): Don't include NOTE insns in the count that is used to decide whether or not it...
* cse.c (cse_basic_block): Don't include NOTE insns in the count
	that is used to decide whether or not it is time to erase the
	equivalence table.

From-SVN: r20548
1998-06-17 20:20:21 +00:00
Kaveh R. Ghazi
50b2596f67 Warning fixes:
* Makefile.in (varasm.o): Depend on dbxout.h.
	(cse.o): Depend on toplev.h and output.h.
	(gcse.o): Depend on output.h.
	* mips.c: Include system.h and toplev.h and remove redundant code.
	Include output.h after tree.h so all its prototypes get activated.
	* mips.md (table_jump): Remove unused variable `dest'.
	* sparc.h: Add prototype for `v8plus_regcmp_op'.
	* crtstuff.c (fini_dummy, init_dummy): Mark function definitions
	with __attribute__ ((__unused__)).
	(__frame_dummy): Provide prototype before use, wrap it with
	EH_FRAME_SECTION_ASM_OP.
	* cse.c: Move inclusion of <setjmp.h> above local headers.
  	Include toplev.h and output.h.
	* dbxout.h: Add prototype for `dbxout_begin_function'.
	* final.c (final_scan_insn): Wrap variable `max_skip' in macro
	ASM_OUTPUT_MAX_SKIP_ALIGN.
	* gcse.c: Include system.h and output.h.
	(dump_cuid_table, dump_rd_table, dump_cprop_data, dump_pre_data):
	Make extern instead of static.
	(compute_can_copy): Only declare variables `reg' and `insn' when
 	AVOID_CCMODE_COPIES is not defined.
	(record_set_info): Mark parameter `setter' with ATTRIBUTE_UNUSED.
	(hash_scan_clobber): Likewise for `x' and `insn'.
	(hash_scan_call): Likewise.
	(record_last_set_info): Likewise for `setter'.
	(mark_call): Likewise for `pat'.
	(pre_insert_insn): Wrap variable `note' in macro HAVE_cc0.
	* libgcc2.c (__bb_init_prg): Replace bzero with memset and fix the
 	length parameter so that it multiplies the number of elements by
 	the sizeof(element).
	* output.h: Add prototype for `weak_finish'.
	* recog.h: Likewise for `validate_replace_src'.
	* rtl.h: Likewise for `optimize_save_area_alloca',
 	`fix_sched_param', `purge_addressof', `gcse_main',
 	`regmove_optimize', `dbr_schedule', `branch_prob' and
 	`end_branch_prob'.
	* toplev.h: Likewise for `set_float_handler' and
 	`output_quoted_string'.
	* varasm.c: Include dbxout.h.

From-SVN: r20351
1998-06-08 18:30:27 +00:00
Andreas Schwab
7a87758dfb m68k.h: Declare more functions used in macros.
* m68k.h: Declare more functions used in macros.
        (REG_CLASS_CONTENTS): Completely embrace initializer.
        * m68k.md (adddi3, subdi3): Add abort call to avoid warning
        about returning no value.
        * cse.c (find_best_addr): Declare p and found_better only if
        needed.
        * dbxout.c (dbxout_continue): Define only if DBX_CONTIN_LENGTH > 0.
        * dwarfout.c (string_length_attribute): #if 0 away.
        * function.c (expand_function_end): Define varible blktramp only
        if needed.
        * jump.c (find_insert_position): Define only if !HAVE_cc0.
        * loop.c (combine_givs_p): Define variable tem only if needed.
        * real.c: Comment out unused functions eabs, eround,
        e{24,53,64,113}toasc and eiinfin.

From-SVN: r19998
1998-05-23 17:14:57 -06:00
Kaveh R. Ghazi
d6f4ec5199 Warning fixes:
* Makefile.in (c-lang.o): Depend on c-tree.h, c-lex.h and toplev.h.
	(c-lex.o): Depend on output.h.
	(c-common.o): Likewise.
	(stmt.o): Likewise.
	(calls.o): Likewise.
	(integrate.o): Depend on toplev.h.
	(regclass.o): Depend on output.h.
	(final.o): Depend on reload.h.
	* c-common.c: Include output.h.
	(check_format_info): Remove unused variable `integral_format'.
	* c-decl.c (print_lang_decl): Mark parameters `file', `node' and
	`indent' with ATTRIBUTE_UNUSED.
	(print_lang_type): Likewise.
	(maybe_build_cleanup): Likewise for parameter `decl'.
	(copy_lang_decl): Likewise for parameter `node'.
	* c-lang.c: Include c-tree.h, c-lex.h and toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
 	with ATTRIBUTE_UNUSED.
	(lookup_interface): Likewise for parameter `arg'.
	(is_class_name): Likewise.
	(maybe_objc_check_decl): Likewise for parameter `decl'.
	(maybe_objc_comptypes): Likewise for parameters `lhs', `rhs' and
	`reflexive'.
	(maybe_objc_method_name): Likewise for parameter `decl'.
	(build_objc_string): Likewise for parameters `len' and `str'.
	* c-lex.c: Include output.h.
	* c-lex.h (position_after_white_space): Correct typo in prototype.
	* c-tree.h (finish_file, c_expand_start_cond, c_expand_start_else,
 	c_expand_end_cond, init_iterators): Add prototypes.
	* caller-save.c (set_reg_live): Mark parameters `reg' and `setter'
	with ATTRIBUTE_UNUSED.
	* calls.c: Include output.h.
	* cccp.c (pipe_closed): Mark parameter `signo' with
 	ATTRIBUTE_UNUSED.
	* combine.c: Move inclusion of expr.h to after insn-config.h.
	* iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Don't define
	as empty, rather define as ((void)0).
	* sparc.c (sparc_check_64): Add braces around ambiguous `else'.
	Add parentheses around assignment used as truth value.
	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
 	replace with `size_t i' at each location where it is used.
	(cplus_demangle_opname): change type of `i' from int to size_t.
	* cppexp.c (right_shift): Mark parameter `pfile' with
	ATTRIBUTE_UNUSED.
	* cpphash.c (cpp_lookup): Likewise.
	(cpp_hash_cleanup): Likewise.
	* cpplib.c (parse_name): Add a prototype and make it static.
	(null_underflow): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
	(null_cleanup): Likewise for parameters `pbuf' and `pfile'.
	(macro_cleanup): Likewise for parameter `pfile'.
	(file_cleanup): Likewise.
	* cpplib.h (cpp_reader_init, cpp_options_init, cpp_start_read,
 	cpp_read_check_assertion, skip_rest_of_line): Add prototypes.
	* crtstuff.c (force_to_data, __CTOR_LIST__, force_to_data,
	__DTOR_END__, __FRAME_END__): Mark with ATTRIBUTE_UNUSED.
	* cse.c (cse_check_loop_start): Mark parameter `set' with
 	ATTRIBUTE_UNUSED.
	* dbxout.c (flag_minimal_debug, have_used_extensions,
	source_label_number): Move inside macro wrapper check against
	defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO).
	* dwarf2out.c (gen_entry_point_die): Hide prototype and definition.
	* except.h (doing_eh): Provide prototype.
	* expr.c: Move inclusion of expr.h to after insn-config.h.
	* final.c: Include reload.h.
	(shorten_branches): Cast the first argument of bzero to char *.
	* fix-header.c (cpp_print_containing_files): Mark parameter
 	`pfile' with ATTRIBUTE_UNUSED.
	(cpp_fatal): Likewise.
	* flow.c (find_basic_blocks_1): Cast the first argument of bzero
	to char *.
	* genattrtab.c (make_length_attrs): Change the type of variable
	`i' from int to size_t.
	(zero_fn): Mark parameter `exp' with ATTRIBUTE_UNUSED.
	(one_fn): Likewise.
	* genextract.c (main): When generating insn-extract.c, mark
	variable `junk' with ATTRIBUTE_UNUSED.
	* gengenrtl.c (gencode): When generating genrtl.c, cast the first
	argument of bzero to char*.
	* integrate.c: Include toplev.h.
	* libgcc2.c: Wrap `struct exception_table' and
	`find_exception_handler' in macro DWARF2_UNWIND_INFO.
	* objc/Make-lang.in (objc-act.o): Depend on toplev.h.
	* objc/objc-act.c: Include toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
	with ATTRIBUTE_UNUSED.
	(finish_protocol): Likewise for parameter `protocol'.
	* output.h (declare_weak): Add prototype.
	(decode_reg_name): Don't wrap with TREE_CODE macro.
	(assemble_alias): Add prototype.
	* regclass.c: Include output.h.
	* reload.h (reloads_conflict): Add prototype.
	* rtl.h (print_rtl_single, mark_elimiation, reg_class_subset_p,
	output_func_start_profiler): Add prototypes.
	* rtlanal.c (reg_set_p_1): Mark parameters `x' and `pat' with
 	ATTRIBUTE_UNUSED.
	* scan-decls.c: Include scan.h.
	* scan.h (recognized_function, recognized_extern): Add prototypes.
	* stmt.c: Include output.h.
	* toplev.c (error_for_asm, warning_for_asm): Remove prototypes.
	(output_lang_identify): Hide prototype and definition.
	(float_signal): Mark parameter `signo' with ATTRIBUTE_UNUSED.
	(pipe_closed): Likewise.
	* toplev.h (count_error, strip_off_ending, error_for_asm,
 	warning_for_asm): Add prototypes.

From-SVN: r19712
1998-05-13 12:40:39 +00:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
J"orn Rennecke
e89d3e6faf cse.c (cse_set_around_loop): Don't do optimization when new pseudos are created.
* cse.c (cse_set_around_loop): Don't do optimization when
	new pseudos are created.

From-SVN: r19404
1998-04-24 14:03:42 +01:00
Jeffrey A Law
c6a26dc45d cse.c (count_reg_usage): Correctly handle REG_NONNEG notes.
* cse.c (count_reg_usage): Correctly handle REG_NONNEG notes.
        (delete_trivially_dead_insns): Renamed from delete_dead_from_cse.
        * toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
        instead of delete_dead_from_cse.  Also call delete_trivially_dead_insns
        between loop optimization passes.
        * rtl.h: Updated appropriately.

From-SVN: r19100
1998-04-10 18:28:07 -06:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Jeffrey A Law
47a0b68fb6 * cse.c (rtx_cost): Only call CONST_COSTS if it is defined.
From-SVN: r18787
1998-03-23 15:55:04 -07:00
Kaveh R. Ghazi
670ee92097 Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
        c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
        caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
        dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
        expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
        integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
        prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
        reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
        rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
        tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
        on system.h.
        * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
        c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
        caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
        dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
        expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
        integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
        prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
        reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
        rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
        stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
        xcoffout.c: Include system.h.  Organize include ordering so
        that stdarg/varargs comes before other system headers.  Remove
        spurious casts of functions assured of a prototype in system.h.

From-SVN: r18726
1998-03-20 14:58:42 +00:00
Kaveh R. Ghazi
8625fab57c Warning fixes, resulting in the addition of a new target macro:
* tm.texi (DEFAULT_RTX_COSTS): Document new macro.
        * arm.h (DEFAULT_RTX_COSTS): Define instead of RTX_COSTS.
        * cse.c (rtx_cost): Provide a default case in an enumeration
        switch, and call DEFAULT_RTX_COSTS if it's defined.

Co-Authored-By: Nick Clifton <nickc@cygnus.com>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>

From-SVN: r18513
1998-03-12 12:32:24 +00:00
Kaveh R. Ghazi
5172371191 Fix warious warnings:
* c-aux-info.c: Include string.h/strings.h.
	* pa.c: Include stdlib.h.
	(pa_combine_instructions): Prototype the function.
	(pa_can_combine_p, forward_branch_p, shadd_constant_p): Likewise.
	(reloc_needed): Add default case for enumeration switch.
	(remove_useless_addtr_insns): Remove unused variable `all'.
	(hppa_expand_prologue): Add explicit braces to avoid
	ambiguous `else'.
	(output_function_epilogue): Remove unused variable `i'.
	(output_millicode_call): Remove unused variable `link'.
	(shadd_constant_p, forward_branch_p): Make the function static.
	(following_call): Explicitly declare to return int.
	(pa_reorg): Declare as void.
	(pa_combine_instructions): Declare as static void.  Add
	parentheses around && within ||.
	* pa.h: Add prototypes for pa_reorg, symbolic_operand,
	following_call, function_label_operand, lhs_lshift_cint_operand
	and zdepi_cint_p.
	* pa.md: Add parentheses around && within ||.
	* cppalloc.c: Include stdlib.h.
	* cpperror.c (cpp_print_containing_files): Remove unused variable
	`i'.  Fix format specifier in fprintf.
	* cse.c (cse_around_loop): Add explicit braces to avoid
	ambiguous `else'.
	(delete_dead_from_cse): Wrap variable `tem' in macro HAVE_cc0.
	* expr.c (expand_expr): Add parentheses around && within ||.
	* final.c (app_enable): Replace fprintf with fputs where there are
	no format specifiers and no trailing argument after the string.
	Eg, when printing ASM_APP_ON/ASM_APP_OFF.
	(app_disable): Likewise.
	(final_end_function): Likewise.
	(final_scan_insn): Likewise.  Remove unused variable `set'.
	(profile_function): Wrap empty if-statement body in {} brackets.
	* function.c: Include stdlib.h.
	(pad_below): Wrap prototype and definition in ARGS_GROW_DOWNWARD.
	(reposition_prologue_and_epilogue_notes): Add parentheses
	around assignment used as truth value.
	* integrate.c (expand_inline_function): Wrap variable
	`cc0_insn' in macro HAVE_cc0.
	* jump.c (jump_optimize): Wrap variable `q' in macro
	HAVE_cc0.  Remove unused variable `prev1'.
	* libgcc2.c (__bb_exit_trace_func): Add parentheses around &&
	within ||.  Fix format specifier in fprintf.
	(__bb_init_prg): Add parentheses around assignment used as
	truth value.
	* local-alloc.c: Include stdlib.h.
	(requires_inout): Add parentheses around assignment used
	as truth value.
	* loop.c (analyze_loop_iterations): Wrap prototype and definition
	in macro HAVE_decrement_and_branch_on_count.
	(insert_bct, instrument_loop_bct): Likewise.
	(move_movables): Add parentheses around assignment used as
	truth value.
	(consec_sets_invariant_p): Likewise.
	(maybe_eliminate_biv_1): Wrap variable `new' in macro HAVE_cc0.
	* objc/objc-act.c: Include stdlib.h.
	(lookup_method_in_protocol_list): Wrap empty else-statement body
	in braces.
	(lookup_protocol_in_reflist): Likewise.
	(objc_add_static_instance): Remove unused variables `decl_expr'
	and `decl_spec'.
	(get_objc_string_decl): Remove unused variable `decl'.
	(generate_static_references): Remove unused variables `idecl' and
	`instance'.
	(check_protocols): Wrap empty else-statement body in braces.
	* protoize.c: Include stdlib.h.
	(substr): Add parentheses around assignment used as truth value.
	(abspath): Likewise.
	(shortpath): Likewise.
	* regmove.c (fixup_match_1): Add parentheses around assignment
	used as truth value.
	* reload.c (push_secondary_reload): Remove unused variable `i'.
	(find_reloads): Add parentheses around assignment used as truth
	value.
	* reload1.c: Include stdlib.h.
	* rtl.h: Correct typo in prototype of offsettable_memref_p.
	* stmt.c (add_case_node): Add parentheses around assignment used
	as truth value.
	(case_tree2list): Likewise.
	* tree.c (valid_machine_attribute): Wrap variable `decl_attr_list'
	in macro VALID_MACHINE_DECL_ATTRIBUTE.  Wrap variable
	`type_attr_list' in macro VALID_MACHINE_TYPE_ATTRIBUTE.
	(merge_attributes): Add explicit braces to avoid ambiguous
	`else'.
	* unroll.c (copy_loop_body): Wrap variable `cc0_insn' in
	macro HAVE_cc0.
	* varasm.c: Include stdlib.h.

From-SVN: r18290
1998-02-28 07:06:53 +00:00
Jeffrey A Law
614bb5d45d cse.c (delete_dead_from_cse): If a libcall produces a constant result and that result can be substituted into...
* cse.c (delete_dead_from_cse): If a libcall produces a constant
        result and that result can be substituted into SET_SRC of the
        insn with the REG_RETVAL note, then perform the substitution
        and delete the libcall.

From-SVN: r17871
1998-02-12 07:26:47 -07:00
Jeff Law
2d8b0f3ada c-lex.c: Include <stdlib.h> and <string.h>/<strings.h>.
a
	* c-lex.c: Include <stdlib.h> and <string.h>/<strings.h>.  Add
	prototype for `handle_sysv_pragma', and make it static.  Add
	parentheses around assignment used as truth value.
	* combine.c (combine_instructions): Protect variable `prev' with
	macro HAVE_cc0.
	(can_combine_p): Protect variable `link' with AUTO_INC_DEC.
	(extract_left_shift): Add parentheses around operand of &.
	(merge_outer_ops): Avoid an empty body in an else-statement.
	(gen_rtx_combine): Remove unused variable `i'.
	* sparc/gmon-sol2.c: Include <fcntl.h>.  Make return type of
        function monstartup `void'.  Likewise for internal_mcount.  Add
        `static void' prototype for moncontrol.  Reconcile sprintf format
        vs. args.
	* sparc/sparc.c: Include <stdlib.h> and <string.h>/<strings.h>.
	Make return type of function_arg_slotno explicitly `int'.
	(reg_unused_after): Add	parentheses around assignment used as
	truth value.
	(save_regs): Add explicit braces to avoid ambiguous `else'.
	(function_arg_slotno): Add parentheses around && within ||.
	(function_arg_pass_by_reference): Likewise.
	(sparc_flat_output_function_prologue): Reconcile fprintf format
	vs. args.
	* svr4.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
	assignment used as truth value.
	* cplus-dem.c: Include <stdlib.h>.
	(demangle_signature): Avoid an empty body in an else-statement.
	(do_type): Remove unused variable `lvl'.
	* cppexp.c: Don't have <stdlib.h> depend on MULTIBYTE_CHARS.
	Include <string.h>/<strings.h>.
	(cpp_lex): Remove unused variable `namelen'.
	(cpp_lex): Explicitly declare `num_chars' as an int.
	* cpplib.c: Avoid duplicate inclusion of <stdlib.h>, include
	<unistd.h> instead.  Explicitly declare is_system_include
	returning int.
	(make_assertion): Remove unused variable `kt'.
	(cpp_expand_to_buffer): Hide variable `obuf'.
	(output_line_command): Remove unused variables, `line_end',
	`line_cmd_buf' and `len'.
	(macarg): Remove unused variable `arg_start'.
	(special_symbol): Remove unused variable `i'.  Add parentheses
	around assignment used as truth value.
	(do_include):  Remove unused variables `pcfname' and `retried',
	hide `pcf' and `pcfbuflimit'.
	(do_line): Remove unused variable `i'.
	(finclude): Hide variable `missing_newline'.
	(cpp_handle_options): Remove unused variable `j'.
	(read_token_list): Remove unused variable `eofp'.
	(cpp_error_with_line): Remove unused variable `i'.
	(cpp_warning_with_line): Likewise.
	(cpp_pedwarn_with_line): Explicitly declare `column' as int.
	(cpp_error_from_errno): Remove unused variable `i'.
	* cse.c (invalidate): Add parentheses around assignment used as
	truth value.
	(find_best_addr): Move declaration of variable `our_cost' inside
	the conditional macro where its used.
	(fold_rtx): Avoid an empty body in an if-statement.
	(cse_insn): Wrap variables  `this_insn_cc0_mode' and
	`this_insn_cc0' in macro HAVE_cc0.
	* dwarf2out.c: Include <stdlib.h> and <string.h>/<string.h>.
	(ASM_OUTPUT_DWARF_DATA8):  Reconcile format vs. args in fprintf's.
	(output_uleb128): Likewise.
	(output_sleb128): Likewise.
	(output_cfi): Likewise.
	(output_call_frame_info): Remove unused variables `j', `fde_size'
	and `fde_pad'.
	(comp_unit_has_inlines): Hide declaration as per rest of file.
	(size_of_line_prolog): Correct typo in prototype.
	(add_arange): Likewise.
	(output_aranges): Likewise.
	(add_name_and_src_coords_attributes): Likewise.
	(gen_array_type_die): Likewise.
	(gen_inlined_subroutine_die): Likewise.
	(equate_decl_number_to_die): Remove unused variable `i'.
	(print_die): Reconcile format vs. args in fprintf's.
	(print_dwarf_line_table): Likewise.
	(output_die): Likewise.
	(output_line_info): Likewise.
	(add_subscript_info): Avoid an empty body in an else-statement.
	(gen_subprogram_die): Remove unused variable `fp_loc'.
	* dwarfout.c: Explicitly declare `next_pubname_number' as int.
	Protect `ordering_attribute' prototype with USE_ORDERING_ATTRIBUTE
	macro.  Protect `src_coords_attribute' prototype with
	DWARF_DECL_COORDINATES macro.  Hide `output_entry_point_die'
	prototype as in the rest of the file.  Likewise for
	`output_pointer_type_die' and `output_reference_type_die'.  Remove
	prototype for `type_of_for_scope'.
	(output_unsigned_leb128): Reconcile format vs. args in fprintf.
	(type_attribute): Add explicit braces to avoid ambiguous `else'.
	* final.c: Include <stdlib.h> and <string.h>/<strings.h>.
	(shorten_branches): Protect declaration of tmp_length with
	SHORTEN_WITH_ADJUST_INSN_LENGTH and ADJUST_INSN_LENGTH macros.
	(profile_function): Protect declaration of `sval' and `cxt'
	variables with appropriate macros.
	(final_scan_insn): Likewise for `note' variable.  Add explicit
	braces to avoid empty body in an if-statement.
	(output_asm_insn): Move variable `i' inside macro conditional
	where it is used.  Add parentheses around assignment used as truth
	value.
	(asm_fprintf) Likewise, likewise.
	* fix-header.c (main): Remove unused variable `done'.  Protect
	declaration of `i' with FIXPROTO_IGNORE_LIST.
	* pexecute.c: Include <unistd.h>.  Prototype `my_strerror'.
	* print-rtl.c (print_inline_rtx): Explicitly declare the parameter
	`ind'.
	* profile.c: Include <string.h>/<strings.h>.
	(instrument_arcs): Remove unused variables `note', `inverted',
	`zero' and `neg_one'.
	(branch_prob): Avoid empty body in an if-statement.
	* regclass.c: Include <stdlib.h>.
	(reg_alternate_class): Explicitly declare parameter `regno'.
	* regmove.c (regmove_optimize): Remove unused variable `p'.  Add
	parentheses around assignment used as truth value.
	(find_matches):  Remove unused variables `output_operand' and
	`matching_operand'.
	(fixup_match_1): Remove statement with no effect: "if (0) ;".
	* scan.c (sstring_append): Explicitly declare `count' as int.
	(scan_string): Explicitly declare parameter `init' as int.
	* sched.c: Include <stdlib.h>.
	(BLOCKAGE_RANGE): Add parentheses around arithmetic in operand of |.
	(rank_for_schedule): Add parentheses around assignment used as
	truth value.
	(schedule_block): Likewise.
	(regno_use_in): Likewise.
	(schedule_insns): Remove unused variable `i'.
	* toplev.c: Include <stdlib.h> and <string.h>/<strings.h>.
	(v_message_with_decl): Remove unused variable `n'.
	(botch): Explicitly declare parameter `s' as char *.
	(main): Add parentheses around assignment used as truth value.
	* tree.c (make_node): Protect the variable `kind' with the
	GATHER_STATISTICS macro.
	(real_value_from_int_cst): Move variable `e' inside conditional
	macro area where it is used.
	(tree_last): Add parentheses around assignment used as truth value.
	(build1): Protect the variable `kind' with the GATHER_STATISTICS
	macro.
	(print_obstack_statistics): Reconcile format vs. args in fprintf.
	Protect variables `i', `total_nodes', and `total_bytes' with the
	GATHER_STATISTICS macro.
Lots more -W -Wall warnings disappear.

From-SVN: r17515
1998-01-27 15:11:37 -07:00
Michael Tiemann
e82ad93d64 cse.c (simplify_ternary_operation): Don't try to simplify IF_THEN_ELSE expressions (created by combine) that don't...
* cse.c (simplify_ternary_operation): Don't try to simplify
        IF_THEN_ELSE expressions (created by combine) that don't use
        relational operators.

From-SVN: r17472
1998-01-25 04:12:26 -07:00
Jeffrey A Law
ed1ecb1930 cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE simplifications.
* cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE
        simplifications.

From-SVN: r17465
1998-01-23 16:06:03 -07:00
David S. Miller
7bcac048fd varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where necessary.
* varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where
        necessary.
        (const_hash): Hash val is unsigned long.
        (SYMHASH): Likewise.
        * tree.c (TYPE_HASH): Type of hash val is unsigned long.
        * print-tree.c (print_node_brief): HOST_PTR_PRINTF format wants a
        char pointer, not HOST_WIDE_INT.
        (print_node): Likewise.  Also hash is unsigned long not
        HOST_WIDE_INT.
        * cse.c (canon_hash): Hash is unsigned long not HOST_WIDE_INT.

From-SVN: r17403
1998-01-17 15:50:40 -07:00
Richard Henderson
38a448ca5d alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO...
* alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO;
change gen_rtx(expr...) to gen_rtx_fmt_foo(expr...).
* caller-save.c, calls.c, combine.c, cse.c: Likewise.
* dwarf2out.c, except.c, explow.c, expmed.c, expr.c: Likewise.
* final.c, flow.c, function.c, genpeep.c, haifa-sched.c: Likewise.
* halfpic.c, integrate.c, jump.c, local-alloc.c, loop.c: Likewise.
* profile.c, recog.c, reg-stack.c, regclass.c, regmove.c: Likewise.
* reload.c, reload1.c, reorg.c, sched.c, stmt.c, stupid.c: Likewise.
* unroll.c, varasm.c: Likewise.
* config/alpha/alpha.c, config/alpha/alpha.md: Likewise.

From-SVN: r17357
1998-01-14 15:10:50 -08:00
Jeff Law
c85f7c16ad Bring in final gcc-2.8.0 changes.
From-SVN: r17355
1998-01-14 13:57:58 -07:00
Jeffrey A Law
5b5a2a1ecc * cse.c (rtx_cost): Remove conflicting default case.
From-SVN: r17245
1997-12-27 14:44:26 -07:00
Jim Wilson
556c714b3d cse.c (max_insn_uid): New variable.
* cse.c (max_insn_uid): New variable.
        (invalidate): Remove CYGNUS LOCAL patch.
        (cse_around_loop): Use max_insn_uid.
        (cse_main): Set max_insn_uid.

From-SVN: r17231
1997-12-24 15:54:37 -07:00
Kaveh R. Ghazi
9e04c65a52 cse.c (rtx_cost): Add default case in enumeration switch.
* cse.c (rtx_cost): Add default case in enumeration switch.
        * fix-header.c (recognized_macro): Likewise.
        (recognized_extern): Likewise.
        (write_rbrac): Likewise.
        * objc/objc-act.c (encode_aggregate): Likewise.
        (gen_declarator): Likewise.
        (gen_declspecs): Likewise.

From-SVN: r17186
1997-12-22 02:31:41 -07:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Jeff Law
da932f04bf m68k.c: Include tree.h for dwarf2out_cfi_label.
* m68k.c: Include tree.h for dwarf2out_cfi_label.

        * gcc.c (process_command): Do not take address of function fatal when
        calling lang_specific_driver.

        * config/i386/cygwin32.h (DWARF2_UNWIND): Exception handling
        doesn't work with it yet, so set it to 0.
        * config/i386/xm-cygwin32.h (NO_SYS_SIGLIST): Define.

        * cse.c (cse_insn): Check for invalid entries when taking references.
More assorted pending patches.

From-SVN: r16978
1997-12-06 08:48:29 -07:00
Jeffrey A Law
85c3ba60dd cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl return.
* cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl
        return.
        (cse_end_of_basic_block): Similarly.

From-SVN: r16534
1997-11-16 23:51:20 -07:00
Jeff Law
e9a25f70a0 Update mainline egcs to gcc2 snapshot 971021.
From-SVN: r16278
1997-11-02 14:19:36 -07:00