1. 27 Nov, 2001 1 commit
  2. 15 Nov, 2001 1 commit
    • jump.c (squeeze_notes): Return true if no real insns were found. · 2b7d71b2
      	* jump.c (squeeze_notes): Return true if no real insns were found.
      	* rtl.h (squeeze_notes): Adjust prototype.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): If
      	squeeze_notes finds no real instructions, abort.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	* loop.c (find_and_verify_loops): Likewise.
      	* stmt.c (expand_end_case): Likewise.
      	* ifcvt.c (dead_or_predicable): Return TRUE if squeeze_notes doesn't
      	find any real instructions.
      
      	* gcc.c-torture/compile/20011114-4.c: New test.
      
      From-SVN: r47048
      Jakub Jelinek committed
  3. 11 Nov, 2001 1 commit
    • expmed.c (extract_bit_field): No longer pass in alignment. · 04050c69
      	* expmed.c (extract_bit_field): No longer pass in alignment.
      	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
      	(store_bit_field, store_fixed_bit_field, store_split_bit_field):
      	Likewise.
      	* expr.c (store_constructor, store_constructor_field): Likewise.
      	(store_field, emit_group_load, emit_group_store): Likewise.
      	* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
      	(store_bit_field, extract_bit_field): Likewise.
      	* calls.c, expr.c, function.c: Change calls to above functions.
      	* ifcvt.c, stmt.c: Likewise.
      
      From-SVN: r46926
      Richard Kenner committed
  4. 04 Nov, 2001 1 commit
    • ChangeLog.2, [...]: Fix spelling errors. · f5143c46
      	* ChangeLog.2, ChangeLog.4, ChangeLog.5, ChangeLog,
      	FSFChangeLog.10, FSFChangeLog.11, alias.c, attribs.c,
      	caller-save.c, calls.c, cfg.c, cfganal.c, cfgcleanup.c, cfgrtl.c,
      	cppmacro.c, fold-const.c, ifcvt.c, local-alloc.c, profile.c,
      	sched-int.h, toplev.c, config/alpha/alpha.c,
      	config/alpha/alpha.md, config/c4x/c4x.h, config/cris/cris.h,
      	config/cris/cris.md, config/i370/i370.md, config/i386/i386.c,
      	config/i386/i386.h, config/i386/i386.md, config/i386/xm-djgpp.h,
      	config/ia64/ia64.c, config/m68hc11/m68hc11.c, config/m68k/m68k.md,
      	config/mcore/mcore.h, config/mmix/mmix.c, config/ns32k/ns32k.h,
      	config/ns32k/ns32k.md, config/rs6000/rs6000.c,
      	config/rs6000/sysv4.h, config/sh/sh.md: Fix spelling errors.
      
      From-SVN: r46760
      Joseph Myers committed
  5. 27 Oct, 2001 1 commit
  6. 23 Oct, 2001 1 commit
    • alias.c (can_address_p): Compnonents are not addressable if the containing type has alias set 0. · 8ac61af7
      	* alias.c (can_address_p): Compnonents are not addressable if
      	the containing type has alias set 0.
      	(get_alias_set): Rework to use STRIP_NOPS.
      	Only call front-end routine on object, type, or object with
      	NOPs stripped, not inner values.
      	Use language hook to call front-end routine.
      	* builtins.c (get_memory_rtx): Always call set_mem_attributes.
      	(expand_builtin_apply): Call set_mem_align on MEMs we make.
      	Don't pass alignment to emit_block_move.
      	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
      	(expand_builtin_memset): Likewise, but for clear_storage.
      	* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
      	and remove C++ specific parts.
      	* c-common.h (c_common_get_alias_set): Add declaration.
      	* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
      	* calls.c (emit_call_1): Fix typo in sibcall_pop case.
      	(save_fixed_argument_area): Call set_mem_align.
      	Remove alignment in call to emit_block_move.
      	(emit_library_call_value_1, store_one_arg): Likewise.
      	(target_for_arg): Remove; disabled long ago.
      	* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
      	once and similar cleanups.
      	(offset_address): Use proper introductory comment.
      	* expr.c (emit_block_move): Use alignment from that of MEM args, not
      	from explicit operand; all callers changed.
      	(clear_storage): Likewise.
      	(expand_assignment): Don't call set_mem_alias_set on to_rtx.
      	(store_field): Remove kludge on alias set used for to_rtx.
      	(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
      	(expand_expr_unaligned): Call set_mem_attributes instead of
      	set_mem_alias_set.
      	* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
      	* function.c (assign_stack_temp_for_type): Set MEM alignment.
      	(expand_function_end): Track MEM attributes of trampolines.
      	* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
      	* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
      	attributes from original.
      	* langhooks.c (lang_hook_default_get_alias_set): New function.
      	(hook_get_alias_set_0): New function.
      	* langhooks.h (hook_get_alias_set_0): New declaration.
      	(lang_hook_default_get_alias_set): Likewise.
      	(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
      	* reload1.c (alter_reg): Use adjust_address_nv.
      	* rtl.c (get_mode_alignment): Moved to here.
      	* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
      	change default if unknown from 1 to BITS_PER_UNIT.
      	* stor-layout.c (get_mode_alignment): Remove from here.
      	* toplev.h (struct lang_hoks): Add get_alias_set field.
      	* tree.h (lang_get_alias_set): Delete declaration.
      	* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
      	* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
      	(ix86_va_arg): Likewise.
      	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
      	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
      	* config/sparc/sparc.c (sparc_va_arg): Likewise.
      	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
      	(expand_block_move_mem): Remove dead code.
      	* cp/cp-lang.c (cxx_get_alias_set): New function.
      	Point LANG_HOOKS_GET_ALIAS_SET to it.
      	* f/com.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
      	(lang_get_alias_set): Delete.
      	* java/lang.c (lang_get_alias_set): Deleted.
      
      From-SVN: r46440
      Richard Kenner committed
  7. 09 Oct, 2001 1 commit
    • c-common.c: Fix comment typos. · 4fe9b91c
      	* c-common.c: Fix comment typos.
      	* cfgrtl.c: Likewise.
      	* collect2.c: Likewise.
      	* cpplex.c: Likewise.
      	* doloop.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarfout.c: Likewise.
      	* expr.c: Likewise.
      	* fold-const.c: Likewise.
      	* gcc.c: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* global.c: Likewise.
      	* ifcvt.c: Likewise.
      	* loop.c: Likewise.
      	* optabs.c: Likewise.
      	* protoize.c: Likewise.
      	* regclass.c: Likewise.
      	* reorg.c: Likewise.
      	* rtl.h: Likewise.
      	* stmt.c: Likewise.
      	* tree.h: Likewise.
      	* doc/cpp.texi: Likewise.
      	* doc/c-tree.texi: Likewise.
      	* doc/extend.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/objc.texi: Likewise.
      	* doc/tm.texi: Likewise.
      
      From-SVN: r46114
      Kazu Hirata committed
  8. 21 Sep, 2001 1 commit
    • basic-block.h (flow_delete_insn, [...]): Kill. · 53c17031
      	* 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
      Jan Hubicka committed
  9. 16 Sep, 2001 1 commit
    • basic-block.h (free_bb_for_insn): Declare. · 3c030e88
      	* basic-block.h (free_bb_for_insn): Declare.
      	* bb-reorder.c (label_for_bb): Use block_label.
      	(emit_jump_to_block_after): Remove.
      	(insert_intra_1): Do not update block_for_insn.
      	(insert_inter_bb_scope_notes): Likewise; update bb->end
      	* cfg.c (free_bb_for_insn): New.
      	(try_rediret_by_replacing_jump): Avoid set_block_for_new_insns call.
      	(force_nonfallthru_and_redirect): Likewise; do not update BB boundaries.
      	(commit_one_edge_insertion): Likewise.
      	(commit_one_edge_insertion): Do not update BB boundary.
      	(commit_edge_insertions): Do not call compute_bb_for_insn.
      	* cfgbuild.c (find_basic_blocks): Do not free basic_block_for_insn.
      	* cfgcleanup.c (merge_blocks_move_predecessor): Use reorder_insns_nobb.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	(try_crossjump_to_edge): Do not update block_for_insn.
      	* combine.c (combine_instructions): Remove compute_bb_for_insn call.
      	* df.c (df_pattern_emit_later): Do not update BB boundary.
      	(df_jump_pattern_emit_after): Likewise.
      	(df_insn_move_before): Use emit_insn_before.
      	* emit-rtl.c (try_split): Emit after trial to get bb boundary updated
      	 properly.
      	(add_insn_after, add_insn_before, emit_insns_after): Update BB
      	boundaries and basic_block_for_insn.
      	(reorder_insns_nobb): Rename from reorder_insns.
      	(reorder_insns): New.
      	(emit_block_insn_before, emit_block_insn_after): Kill.
      	* flow.c (check_function_return_warnings): Do not call
      	compute_bb_for_insn; Do not free basic_block_for_insn.
      	(attempt_auto_inc): Do not update basic_block_for_insn.
      	* function.c (emit_return_into_block): Likewise;
      	do not update BB boundaries.
      	* gcse.c (handle_avail_expr): Do not update basic_block_for_insn.
      	(insert_insn_end_bb): Use emit_insn_before; Likewise.
      	(pre_insert_copy_insn): Likewise.
      	(update_ld_motion_notes): Likewise.
      	(insert_insn_start_bb): Likewise.
      	(replace_store_insn): Likewise.
      	* ifcvt.c (noce_process_if_block): Likewise.
      	(if_convert): Do not call compute_bb_for_insn.
      	* lcm.c (optimize_mode_switching): Do not update BB boundaries.
      	Use emit_insn_before and emit_insn_after.
      	* recog.c (split_all_insns): Do not update BB boundaries;
      	Do not call compute_bb_for_insn.
      	(peephole2_optimize): Do not update BB boundaries.
      	* reg-stack.c (emit_pop_insn): Use emit_insn_after and
      	emit_insn_before.
      	(emit_swap_insn): Likewise.
      	(convert_regs_1): Likewise.
      	* reload1.c (reload): Call compute_bb_for_insn.
      	* rtl.h (reorder_insns_nobb): Declare.
      	* ssa.c (rename_equivalent_regs): Use emit_insn_before.
      	* toplev.c (rest_of_compilation): Call free_bb_for_insn
      	at places CFG is invalidated; do not call compute_bb_for_insn.
      
      	* cfg.c (expunge_block): Invalidate BB structure.
      
      	* (merge_blocks_nomove): Update properly BLOCK_FOR_INSN
      	array.
      
      	* cfg.c (verify_flow_info): Verify the basic_block_for_insn array.
      
      From-SVN: r45647
      Jan Hubicka committed
  10. 22 Aug, 2001 3 commits
    • jump.c (squeeze_notes): Take parms by reference. · 2270623a
              * jump.c (squeeze_notes): Take parms by reference.  Handle END being
              a squeezable note.
              * rtl.h: Adjust.
              * ifcvt.c (dead_or_predicable): Adjust.
              * loop.c (find_and_verify_loops): Adjust.
              * stmt.c (expand_end_case): Adjust.
              * flow.c (merge_blocks_move_successor_nojumps): Adjust.  Modify the
              head and end insn pointers in the basic block, not just local copies.
              (merge_blocks_move_predecessor_nojumps): Likewise.
      
      From-SVN: r45107
      Jason Merrill committed
    • Makefile.in, [...]: replace "GNU CC" with "GCC". · 1322177d
      	* 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
      Lars Brinkhoff committed
    • ifcvt.c (find_if_block): Allow join_bb as EXIT. · b64d061e
              * ifcvt.c (find_if_block): Allow join_bb as EXIT.
              (merge_if_block): Handle fallout from same.
      
      From-SVN: r45093
      Richard Henderson committed
  11. 18 Aug, 2001 1 commit
    • optabs.h (OTI_flodiv, [...]): Kill. · ef89d648
      	* optabs.h (OTI_flodiv, flodiv_optab): Kill.
      	* genopinit.c: Put floating point divide insns in sdiv_optab.
      	* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
      	* config/gofast.h, config/c4x/c4x.h,
      	config/ia64/hpux_longdouble.h, config/mips/mips.h,
      	config/pa/long_double.h, config/rs6000/sysv4.h,
      	config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
      	* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
      	(init_optabs): Use init_optabv for overflow-trapping optabs.
      	Don't init flodiv_optab.  Give mov_optab, movstrict_optab, and
      	cmp_optab RTX codes so have_insn_for can find them.
      
      	* optabs.c (expand_simple_binop, expand_simple_unop,
      	have_insn_for, gen_sub3_insn): New interfaces.
      	* expr.h: Prototype new functions.
      	(enum optab_methods): Move here from optabs.h.
      
      	* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
      	loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
      	Use new	functions instead of working directly with optabs.
      	* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
      	unroll.c: Don't include optabs.h.
      	* caller-save.c, combine.c, function.c, stmt.c: Just include
      	insn-codes.h, not optabs.h.
      	* Makefile.in: Update dependencies.
      
      	* combine.c (make_compound_operation, simplify_comparison):
      	Fix typos testing for this or that instruction.
      
      From-SVN: r45008
      Zack Weinberg committed
  12. 13 Aug, 2001 1 commit
    • expr.h: Split out optab- and libfunc-related code to... · e78d8e51
      	* expr.h: Split out optab- and libfunc-related code to...
      	* optabs.h, libfuncs.h: ... these new headers.
      
      	* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
      	(OPTABS_H): New.
      	(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
      	dependencies.
      	* mkconfig.sh: Don't include insn-codes.h from config.h.
      
      	* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
      	enum insn_code is available.  Move reload_in_optab and
      	reload_out_optab array declarations to optabs.h.
      	* regmove.c (gen_add3_insn): Move to optabs.c, export from
      	there, prototype in expr.h.
      	* gencodes.c: Cleanup: zap global variables, don't use
      	printf where puts will do, don't bother defining MAX_INSN_CODE
      	which nothing uses, let CODE_FOR_nothing get its value implicitly.
      
      	* genemit.c, genopinit.c: Include optabs.h in generated file.
      	* genoutput.c: Include insn-codes.h in generated file.
      	* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
      	expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
      	reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
      	config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
      	config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
      	config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
      	Include optabs.h.
      	* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
      	optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
      	config/m88k/m88k.c, config/sparc/sparc.c:
      	Include libfuncs.h.
      	* reload.c: Include expr.h and optabs.h before reload.h.
      	* config/alpha/alpha.c: Include tree.h before reload.h.
      	* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
      	and reload.h in that order.
      	* config/sparc/sparc.c: Include debug.h.
      	* recog.c: Include insn-codes.h.
      
      cp:
      	* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
      	* except.c: Include libfuncs.h.
      java:
      	* Make-lang.in (java/decl.o): Update dependencies.
      	* decl.c: Include libfuncs.h, don't include toplev.h.
      
      From-SVN: r44858
      Zack Weinberg committed
  13. 12 Aug, 2001 1 commit
    • gcc.c: Fix comment formatting. · dc297297
      	* gcc.c: Fix comment formatting.
      	* gccspec.c: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genemit.c: Likewise.
      	* gengenrtl.c: Likewise.
      	* genrecog.c: Likewise.
      	* gensupport.c: Likewise.
      	* ggc-page.c: Likewise.
      	* global.c: Likewise.
      	* graph.c: Likewise.
      	* ifcvt.c: Likewise.
      	* integrate.c: Likewise.
      	* lcm.c: Likewise.
      	* libgcc2.c: Likewise.
      	* loop.c: Likewise.
      	* mbchar.c: Likewise.
      	* optabs.c: Likewise.
      	* predict.c: Likewise.
      	* prefix.c: Likewise.
      	* profile.c: Likewise.
      	* protoize.c: Likewise.
      	* real.c: Likewise.
      	* recog.c: Likewise.
      	* regclass.c: Likewise.
      	* regmove.c: Likewise.
      	* reg-stack.c: Likewise.
      	* reload1.c: Likewise.
      	* resource.c: Likewise.
      	* rtlanal.c: Likewise.
      	* rtl.c: Likewise.
      
      From-SVN: r44837
      Kazu Hirata committed
  14. 03 Aug, 2001 1 commit
  15. 28 Jul, 2001 1 commit
  16. 22 Jul, 2001 1 commit
    • basic-block.h (redirect_edge_and_branch_force, [...]): Declare. · 6b24c259
      	* basic-block.h (redirect_edge_and_branch_force,
      	redirect_edge_and_branch, block_label, forwarder_block_p): Declare.
      	* flow.c (redirect_edge_and_branch_force,
      	redirect_edge_and_branch, block_label, forwarder_block_p): Make global.
      	(redirect_edge_and_branch_force): Fix copying of lifeness information.
      	(block_label): Handle EXIT_BLOCK_PTR by returning NULL.
      	* ifcvt.c (dead_or_predictable): Take BB as an new destionation
      	instead of label; update CFG after transformation.
      	(find_if_case_1): Update call, use redirect_edge_and_branch_force
      	for finishing the transformation; handle even case where ELSE
      	does not follow THEN.
      	(find_if_case_2): Update call of dead_or_predictable; simplify
      	CFG update.
      
      	* emit-rtl.c (split_branch_probability): New global variable.
      	(try_split): Take care to set split_branch_probability and
      	create REG_BR_PROB note for new jump insns.
      	* md.texi (define_split): Document new feature.
      
      	* i386.c (ix86_split_fp_branch): Redistribute branch probability notes.
      
      From-SVN: r44249
      Jan Hubicka committed
  17. 20 Jul, 2001 1 commit
  18. 19 Jul, 2001 1 commit
  19. 15 Jul, 2001 1 commit
  20. 14 Jul, 2001 1 commit
  21. 11 Jul, 2001 1 commit
    • alias.c (set_mem_alias_set): New function. · ba4828e0
      	* alias.c (set_mem_alias_set): New function.
      	* rtl.h (set_mem_alias_set): Declare it.
      	* builtins.c (expand_builtin_return_addr): Call it instead of
      	using MEM_ALIAS_SET accessor.
      	(expand_builtin_setjmp_setup, expand_builtin_longjmp): Likewise.
      	(get_memory_rtx, expand_builtin_va_arg): Likewise.
      	(expand_builtin_va_copy):Likewise.
      	* caller-save.c (setup_save_areas): Likewise.
      	* calls.c (compute_argument_addresses): Likewise.
      	* explow.c (set_mem_attributes): Likewise.
      	* expr.c (emit_single_push_insn, emit_push_insn): Likewise.
      	(expand_assignment, store_constructor_field, store_field): Likewise.
      	(expand_expr_unaligned): Likewise.
      	* function.c (assign_stack_temp_for_type): Likewise.
      	(put_reg_into_stack, gen_mem_addressof): Likewise.
      	* ifcvt.c (noce_try_cmove_arith): Likewise.
      	* reload1.c (reload, alter_reg): Likewise.
      	* config/alpha/alpha.c (get_aligned_mem): Likewise.
      	(alpha_set_memflags_1, alpha_expand_unaligned_load): Likewise.
      	(alpha_expand_unaligned_store): Likewise
      	(alpha_expand_unaligned_load_words): Likewise.
      	(alpha_expand_unaligned_store_words): Likewise.
      	(alpha_expand_block_clear, alpha_expand_prologue): Likewise.
      	(alpha_expand_epilogue): Likewise.
      	* config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
      	* config/clipper/clipper.c (clipper_builtin_saveregs): Likewise.
      	* config/i386/i386.c (legitimize_pic_address): Likewise.
      	* config/i960/i960.c (setup_incoming_varargs): Likewise.
      	* config/ia64/ia64.c (spill_restore_mem): Likewise.
      	* config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
      	* config/m8k/m88k.c (m88k_builtin_saveregs): Likewise.
      	* config/mips/mips.c (mips_va_arg): Likewise.
      	* config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
      	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
      	(setup_incoming_varargs, rs6000_va_arg): Likewise.
      	(rs6000_emit_eh_toc_restore, rs6000_emit_prologue): Likewise.
      	(rs6000_emit_epilogue): Likewise.
      	* config/sh/sh.c (sh_builtin_saveregs): Likewise.
      	* config/sparc/sparc.c (sparc_va_arg): Likewise.
      	* config/v850/v850.c (v850_va_arg): Likewise.
      
      From-SVN: r43951
      Richard Kenner committed
  22. 14 Jun, 2001 1 commit
  23. 13 Jun, 2001 1 commit
  24. 11 Jun, 2001 1 commit
  25. 09 Jun, 2001 1 commit
    • predict.def: New file. · 4db384c9
      	* predict.def: New file.
      	* predict.h: New file.
      	* predict.c: Include predict.h.
      	(predictor_info): New structure and array.
      	(predict_edge, predict_insn): Rewrite; make global.
      	(predict_edge_def, predict_insn_def): New global functions.
      	(dump_prediction, combine_predictions_for_insns): New
      	static functions.
      	(estimate_probability): Change calls to predict_edge
      	to predict_edge_def and calls to predict_insn to predict_insn_def;
      	combine probabilities.
      	(expected_value_to_br_prob): Behave as predictor.
      	* rtl.h (REG_BR_PRED): Update coment.
      	(invert_br_probabilities): New.
      	* jump.c: Include predict.h
      	(duplicate_loop_exit_test): Drop branch prediction notes.
      	(invert_jump): Use invert_br_probabilities.
      	* Makefile.in: Add dependancy on predict.h for jump and predict pass.
      	* ifcvt.c (dead_or_predicable): Use invert_br_probabilities.
      	* combine.c (distribute_notes): Handle BR_PRED.
      
      From-SVN: r43115
      Jan Hubicka committed
  26. 10 May, 2001 1 commit
    • ifcvt.c (merge_if_block): Use any_uncondjump_p... · f926a256
              * ifcvt.c (merge_if_block): Use any_uncondjump_p, not simplejump_p
              to determine if a block has an unconditional jump at its end.
      
              * jump.c (jump_optimize_1): When converting a conditional jump
              to an unconditional jump, build the jump using gen_jump instead
              of just modify operands in-place.
      
      From-SVN: r41939
      Jeffrey A Law committed
  27. 11 Apr, 2001 1 commit
    • Makefile.in (ifcvt.o): Depend on toplev.h. · d6684bc8
      	* Makefile.in (ifcvt.o): Depend on toplev.h.
      
      	* c-semantics.c: Include expr.h.
      
      	* ifcvt.c: Include toplev.h.
      
      	* expr.h (rtx_equal_p): Delete prototype.
      
      	* rtl.h (exact_log2_wide, floor_log2_wide, permalloc,
      	protect_from_queue, gen_jump, gen_beq, gen_bge, gen_ble,
      	eliminate_constant_term, expand_complex_abs, find_single_use,
      	make_tree, init_expr_once, init_optabs, supports_one_only):
      	Likewise.
      
      	* tree.h (exact_log2_wide, floor_log2_wide, expand_null_return,
      	rest_of_type_compilation, emit_queue, do_pending_stack_adjust,
      	expand_assignment, store_expr, emit_line_note_after,
      	emit_line_note_force, split_specs_attrs, label_rtx): Likewise.
      
      	* toplev.h (exact_log2_wide, floor_log2_wide): Add prototype.
      
      cp:
      	* Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
      
      	* semantics.c: Include expr.h.
      
      java:
      	* Make-lang.in (java/boehm.o): Depend on toplev.h.
      
      	* boehm.c: Include toplev.h.
      
      From-SVN: r41256
      Kaveh R. Ghazi committed
  28. 03 Apr, 2001 1 commit
    • Use byte offsets in SUBREGs instead of words. · ddef6bc7
      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
      Jakub Jelinek committed
  29. 02 Apr, 2001 1 commit
    • ifcvt.c (noce_emit_move_insn): New. · 32ff70d2
      	* ifcvt.c (noce_emit_move_insn): New.
      	(noce_try_store_flag, noce_try_store_flag_constants,
      	noce_try_store_flag_inc, noce_try_store_flag_mask,
      	noce_try_cmove, noce_try_cmove_arith, noce_try_minmax,
      	noce_try_abs): Use it.
      	(noce_process_if_block): Likewise.
      	For STRICT_LOW_PART, take mode from its SUBREG.
      
      	* gcc.c-torture/compile/20010329-1.c: New test.
      
      From-SVN: r41001
      Jakub Jelinek committed
  30. 28 Mar, 2001 1 commit
  31. 21 Mar, 2001 1 commit
  32. 07 Mar, 2001 1 commit
  33. 02 Mar, 2001 1 commit
  34. 28 Feb, 2001 1 commit
  35. 25 Feb, 2001 1 commit
  36. 18 Feb, 2001 1 commit
  37. 27 Dec, 2000 1 commit
  38. 27 Nov, 2000 1 commit