aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
AgeCommit message (Collapse)AuthorFilesLines
2004-01-17* rtl.h (emit_insn_before_sameloc, emit_jump_insn_before_sameloc)Daniel Jacobowitz1-12/+12
(emit_call_insn_before_sameloc, emit_insn_after_sameloc) (emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): New macros. * reload1.c (emit_reload_insns): Use them. * emit-rtl.c (emit_insn_before_sameloc, emit_insn_after_sameloc) (emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): Check for NULL PATTERN. From-SVN: r76062
2003-12-22reload1.c: Add reg_reloaded_call_part_clobbered.Dale Johannesen1-4/+28
2003-12-22 Dale Johannesen <dalej@apple.com> * reload1.c: Add reg_reloaded_call_part_clobbered. (reload_as_needed): Use it. (forget_old_reloads_1): Ditto. (emit_reload_insns): Ditto. From-SVN: r74936
2003-12-16flow.c (EXIT_IGNORE_STACK): Move to ...Kazu Hirata1-2/+0
* flow.c (EXIT_IGNORE_STACK): Move to ... * defaults.h (EXIT_IGNORE_STACK): ... here. * dojump.c (clear_pending_stack_adjust): Don't use #ifdef EXIT_IGNORE_STACK. * function.c (expand_function_end): Likewise. * global.c (global_alloc): Likewise. * ra.c (init_ra): Likewise. * reload1.c (init_elim_table): Likewise. * reorg.c (fill_simple_delay_slots): Likewise. * resource.c (init_resource_info): Likewise. * doc/tm.texi (EXIT_IGNORE_STACK): Document that the default is 0. From-SVN: r74654
2003-12-11basic-block.h (BLOCK_HEAD, BLOCK_END): Remove.Steven Bosscher1-4/+5
2003-12-11 Steven Bosscher <steven@gcc.gnu.org> * basic-block.h (BLOCK_HEAD, BLOCK_END): Remove. (BLOCK_HEAD_TREE, BLOCK_END_TREE): Remove. (basic_block_def): Rename `head' to `head_' and `end' to `end_'. (BB_HEAD, BB_END): New accessor macros for the `head_' and `end_' fields of a basic block. * bb-reorder.c, bt-load.c, caller-save.c, cfg.c, cfganal.c, cfgbuild.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgloopanal.c, cfgloopmanip.c, cfgrtl.c, combine.c, conflict.c, df.c, emit-rtl.c, final.c, flow.c, function.c, gcse.c, global.c, graph.c, haifa-sched.c, ifcvt.c, lcm.c, local-alloc.c, loop-unswitch.c, loop.c, postreload.c, predict.c, profile.c, ra-build.c, ra-debug.c, ra-rewrite.c, ra.c, recog.c, reg-stack.c, regclass.c, regmove.c, regrename.c, reload1.c, resource.c, sched-ebb.c, sched-rgn.c, sibcall.c, tracer.c, config/frv/frv.c, config/i386/i386.c, config/ia64/ia64.c: Use the BB_HEAD and BB_END macros instead of accessing the `head' and `end' fields of a basic block directly. * gengtype.c: Add missing piece from earlier patch. Dunno what I was thinking... From-SVN: r74520
2003-12-09defaults.h (LOCAL_REGNO): Give the default definition.Kazu Hirata1-4/+0
* defaults.h (LOCAL_REGNO): Give the default definition. * flow.c (LOCAL_REGNO): Remove. * reload1.c (LOCAL_REGNO): Likewise. From-SVN: r74456
2003-11-29Make NON_SAVING_SETJMP usable again.James E Wilson1-0/+11
* final.c (final_start_function): Delete code for NON_SAVING_SETJMP. * reload1.c (reload): Re-add it here. From-SVN: r74052
2003-11-27re PR rtl-optimization/13041 (linux-2.6/sound/core/oss/rate.c miscompiled)Eric Botcazou1-0/+8
PR optimization/13041 * final.c (frame_pointer_needed): Fix comment. * reload1.c (reload): Decrease alignment of the frame pointer if it was used for register allocation. From-SVN: r73978
2003-11-20re PR c/13133 (Extraneous register-saves triggered by setjmp())James E Wilson1-9/+1
PR c/13133 * reload1.c (reload): Delete special handling for setjmp. From-SVN: r73791
2003-11-19reload1.c (reload): Revert 2 previous checkins.Eric Christopher1-8/+2
2003-11-19 Eric Christopher <echristo@redhat.com> * reload1.c (reload): Revert 2 previous checkins. From-SVN: r73742
2003-11-18reload1.c (reload): Fix previous change.Eric Christopher1-3/+3
2003-11-17 Eric Christopher <echristo@redhat.com> * reload1.c (reload): Fix previous change. From-SVN: r73687
2003-11-14reload1.c (reload): Revert previous patch.Eric Christopher1-8/+8
2003-11-14 Eric Christopher <echristo@redhat.com> * reload1.c (reload): Revert previous patch. Make check for assignment into reg_equiv_address stricter. From-SVN: r73595
2003-11-12reload1.c (reload): Verify that addresses for reg_equiv_* are valid for the ↵Eric Christopher1-0/+6
architecture. 2003-11-11 Eric Christopher <echristo@redhat.com> * reload1.c (reload): Verify that addresses for reg_equiv_* are valid for the architecture. From-SVN: r73487
2003-10-27reload1.c (struct elim_table): Change offset, initial_offset and ↵Jakub Jelinek1-8/+8
previous_offset fields to HOST_WIDE_INT. * reload1.c (struct elim_table): Change offset, initial_offset and previous_offset fields to HOST_WIDE_INT. (offsets_at): Change from int to HOST_WIDE_INT. (reload): Adjust offsets_at initialization. (eliminate_regs_in_insn): Change type of offset to HOST_WIDE_INT. (verify_initial_elim_offsets): Change type of t to HOST_WIDE_INT. * config/i386/i386.c (ix86_compute_frame_layout): Change offset type to HOST_WIDE_INT. Don't save regs using mov for huge frame sizes if TARGET_64BIT. (pro_epilogue_adjust_stack): New function. (ix86_expand_prologue, ix86_expand_epilogue): Use it. * config/i386/i386.md (pro_epilogue_adjust_stack): Remove. (pro_epilogue_adjust_stack_1): Remove * in front of name. (pro_epilogue_adjust_stack_rex64): Handle -2147483648 properly. (pro_epilogue_adjust_stack_rex64_2): New insn. * config/i386/i386.c (ix86_expand_epilogue): Fix comment typo. * config/i386/i386.c (ix86_expand_call): Replace 40 with FIRST_REX_INT_REG + 3 /* R11 */. * gcc.c-torture/compile/20031023-1.c: New test. * gcc.c-torture/compile/20031023-2.c: New test. * gcc.c-torture/compile/20031023-3.c: New test. * gcc.c-torture/compile/20031023-4.c: New test. Co-Authored-By: Jan Hubicka <jh@suse.cz> From-SVN: r72975
2003-10-18rtl.h (rtl_size): Declare.Richard Sandiford1-7/+2
* rtl.h (rtl_size): Declare. (rtunion): Remove rtwint. (rtx_def): Replace 'fld' with a union of an rtunion or a HOST_WIDE_INT. (RTX_HDR_SIZE, RTX_SIZE): New macros. (RTL_CHECK1): Adjust for new rtx_def layout. (RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2): Likewise. (XWINT, XCWINT): Likewise. Access the rtx structure directly. (X0WINT): Remove. (X0ANY): New macro. * rtl.def: Adjust comments for new rtx_def layout. * ggc.h (ggc_alloc_rtx): Take the rtx code as argument, not the number of slots. * rtl.c (rtx_size): New array. (rtx_alloc): Adjust call to ggc_alloc_rtx. Use RTX_HDR_SIZE. (copy_rtx): Use RTX_HDR_SIZE. Adjust for new rtx_def layout. (shallow_copy_rtx): Adjust call to ggc_alloc_rtx. Use RTX_SIZE. * integrate.c (copy_rtx_and_substitute): Use X0ANY to copy '0' fields. * emit-rtl.c (copy_most_rtx): Likewise. (copy_rtx_if_shared): Use RTX_SIZE. (copy_insn_1): Use RTX_HDR_SIZE. Adjust for new rtx_def layout. * gengenrtl.c (gendef): Adjust ggc_alloc_rtx call. Use RTX_HDR_SIZE. * gengtype.c (write_rtx_next): Use RTX_HDR_SIZE. (adjust_field_rtx_def): Expect "rtx_def" to be a union rather than an array. Adjust output for new rtx_def layout. * ggc-page.c (RTL_SIZE): Use RTX_HDR_SIZE. * reload1.c (eliminate_regs): Use RTX_SIZE. * rtlanal.c (loc_mentioned_in_p): Adjust for new rtx_def layout. * gdbinit.in (pi): Likewise. From-SVN: r72647
2003-07-19alias.c [...]: Remove unnecessary casts.Kaveh R. Ghazi1-34/+27
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c gcse.c genattr.c genattrtab.c genautomata.c genconditions.c genemit.c genextract.c genoutput.c genrecog.c gensupport.c ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c postreload.c prefix.c print-tree.c protoize.c ra-build.c ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c regmove.c regrename.c reload.c reload1.c reorg.c resource.c sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary casts. From-SVN: r69587
2003-07-10ggc.h, [...]: Use `rtx' instead of `struct rtx_def *'...Steven Bosscher1-6/+0
2003-07-10 Steven Bosscher <steven@gcc.gnu.org> * ggc.h, integrate.h, langhooks.h, real.h, toplev.h: Use `rtx' instead of `struct rtx_def *', `rtvec' instead of `struct rtvec_dev *' and `tree' instead of `union tree_node *' in function prototypes. * varray.h (const_equiv_data): Likewise for fields. (varray_data_tag): Likewise. * output.h: Likewise, and don't forward declare union tree_node. * emit_rtl.c (const_int_htab_hash): Cast to `rtx' instead of `struct rtxvec *'. * print-tree.c (print_node): Likewise. * reload1.c: Don't redeclare current_function_decl, tree.h is included in this file. From-SVN: r69183
2003-07-06jump.c: Convert prototypes to ISO C90.Andreas Jaeger1-263/+143
* jump.c: Convert prototypes to ISO C90. * langhooks-def.h: Likewise. Add extern to prototypes. * langhooks.c: Likewise. * langhooks.h: Likewise. * lcm.c: Likewise. * local-alloc.c: Likewise. * loop-init.c: Likewise. * loop-unroll.c: Likewise. * loop-unswitch.c: Likewise. * loop.c: Likewise. * loop.h: Likewise. Add extern to prototypes. * machmode.h: Likewise. * main.c: Likewise. * mbchar.c: Likewise. * mbchar.h: Likewise. * mkdeps.c: Likewise. * mkdeps.h: Likewise. * optabs.c: Likewise. * optabs.h: Likewise. * output.h: Likewise. * gccspec.c: Likwise. * postreload.c: Likewise. * prefix.c: Likewise. * prefix.h: Likewise. * print-rtl.c: Likewise. * print-tree.c: Likewise. * profile.c: Likewise. * read-rtl.c: Likewise. * real.c: Likewise. * real.h: Likewise. * recog.c: Likewise. * recog.h: Likewise. * reg-stack.c: Likewise. * regclass.c: Likewise. * regmove.c: Likewise. * regrename.c: Likewise. * regs.h: Likewise. * reload.c: Likewise. * reload.h: Likewise. * reload1.c: Likewise. * reorg.c: Likewise. * resource.c: Likewise. * resource.h: Likewise. * rtl-error.c: Likewise. * rtl.c: Likewise. * rtl.h: Likewise. * rtlanal.c: Likewise. From-SVN: r68998
2003-06-29reload.c (find_reloads): Change push_reloads to push_reload in comment.James E Wilson1-3/+2
* reload.c (find_reloads): Change push_reloads to push_reload in comment. * reload1.c (eliminate_regs): Likewise. (dump_needs): Delete prototype for deleted function. From-SVN: r68691
2003-06-27defaults.h (REGISTER_MOVE_COST): Define default here.Hans-Peter Nilsson1-4/+0
* defaults.h (REGISTER_MOVE_COST): Define default here. * regclass.c: Don't define default REGISTER_MOVE_COST here. * reload.c, reload1.c: Ditto. From-SVN: r68567
2003-06-27rtl.h (emit_note): Remove FILE parameter.Nathan Sidwell1-1/+1
* rtl.h (emit_note): Remove FILE parameter. * emit-rtl.c (emit_line_note): Adjust emit_note call. (emit_note): Remove FILE parameter. Adjust. * builtins.c (expand_builtin_expect): Adjust emit_note call. * c-semantics.c (genrtl_scope_stmt): Likewise. (expand_stmt): Likewise. * cfglayout.c (reemit_insn_block_notes): Likewise. (duplicate_insn_chain): Likewise. * except.c (expand_eh_region_start, expand_eh_region_end, sjlj_emit_function_enter): Likewise. * explow.c (probe_stack_range): Likewise. * expr.c (emit_block_move_via_loop): Likewise. * function.c (init_function_start, expand_function_start, expand_function_end, thread_prologue_and_epilogue_insns): Likewise. * integrate.c (expand_inline_function, copy_insn_list): Likewise. * reg-stack.c (compensate_edge): Likewise. * reload1.c (reload): Likewise. * rtlanal.c (hoist_insn_to_edge): Likewise. * stmt.c (expand_fixup, expand_start_loop, expand_start_null_loop, expand_loop_continue_here, expand_end_loop, expand_continue_loop, expand_exit_loop_top_cond, expand_value_return, expand_start_bindings_and_block, expand_end_bindings, expand_decl_cleanup, expand_start_case): Likewise. * unroll.c (copy_loop_body * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise. * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise. * config/rs6000/rs6000.c (rs6000_emit_eh_toc_restore, rs6000_emit_allocate_stack, rs6000_output_function_prologue, rs6000_output_function_epilogue, rs6000_output_mi_thunk): Likewise. * config/sh/sh.c (sh_output_mi_thunk): Likewise. * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise. * ada/misc.c (record_code_position): Likewise. From-SVN: r68561
2003-06-26Makefile.in (OBJS): Add postreload.o.Kazu Hirata1-1472/+0
* Makefile.in (OBJS): Add postreload.o. Remove cselib.h from the dependency list for reload1.o. Add a dependency list for postreload.o. * reload.h: Change the comment for the prototype of reload_cse_regs. * reload1.c: Don't include cselib.h. (reload_cse_regs): Move to postreload.c (reload_cse_regs_1): Likewise. (reload_cse_noop_set_p): Likewise. (reload_cse_simplify_set): Likewise. (reload_cse_simplify_operands): Likewise. (RELOAD_COMBINE_MAX_USES): Likewise. (reload_combine_ruid): Likewise. (LABEL_LIVE): Likewise. (reload_combine): Likewise. (reload_combine_note_use): Likewise. (reload_combine_note_store): Likewise. (reg_set_luid): Likewise. (reg_offset): Likewise. (reg_base_reg): Likewise. (reg_mode): Likewise. (move2add_luid): Likewise. (move2add_last_label_luid): Likewise. (MODES_OK_FOR_MOVE2ADD): Likewise. (reload_cse_move2add): Likewise. (move2add_note_store): Likewise. (reload_cse_simplify): Likewise. * postreload.c: New. From-SVN: r68532
2003-06-16decl.c, [...]: Don't use the PTR macro.Kaveh R. Ghazi1-3/+3
cp: * cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR macro. gcc: * bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c, config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c, dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c, function.c, gcc.c, genoutput.c, gensupport.c, global.c, haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c, loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c, read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c, stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use the PTR macro. From-SVN: r68043
2003-06-16tracer.c: Remove duplication declaration.Andreas Jaeger1-3/+0
* tracer.c: Remove duplication declaration. * toplev.c: Remove extra declaration of decode_d_option. * ssa.c: Remove duplicate declaration. * sreal.c: Remove extra declaration of dump_sreal. * reload1.c: Remove duplicate declarations. * integrate.c: Remove extra declaration of set_decl_abstract_flags. * flow.c: Remove extra declaration of dump_flow_info. * alias.c: Remove extra declaration of get_addr. From-SVN: r68006
2003-06-12gcse.c (fis_get_condition): Make it a global function.Kazu Hirata1-0/+24
* gcse.c (fis_get_condition): Make it a global function. * reload1.c (reload_cse_move2add): Detect implicit sets. * rtl.h: Add a prototype for fis_get_condition. From-SVN: r67814
2003-06-10re PR rtl-optimization/8812 ([avr] Registers allocated for two uses at once)James E Wilson1-5/+18
PR target/8812 * reload1.c (choose_reload_regs): For equiv reg, add loop over all hard regs for reload_reg_used_at_all and reg_class_contents checks. From-SVN: r67751
2003-06-06re PR inline-asm/10890 (ICE in merge_assigned_reloads building Linux 2.4.2x ↵James E Wilson1-3/+5
sched.c) PR inline-asm/10890 * reload1.c (merge_assigned_reloads): Abort only if two reloads have different in fields. From-SVN: r67577
2003-05-11reload1.c (reload_cse_move2add): Revert part of my 2003-05-09's patch.Alexandre Oliva1-9/+3
* reload1.c (reload_cse_move2add): Revert part of my 2003-05-09's patch. From-SVN: r66677
2003-05-09reload1.c (reload_cse_move2add): Don't turn an implicit truncation into a ↵Alexandre Oliva1-4/+17
self-set in the narrow mode. * reload1.c (reload_cse_move2add): Don't turn an implicit truncation into a self-set in the narrow mode. From-SVN: r66638
2003-05-03emit-rtl.c (last_call_insn, [...]): New functions.Olivier Hainque1-11/+15
* emit-rtl.c (last_call_insn, add_function_usage_to): New functions. * rtl.h (last_call_insn, add_function_usage_to): New prototypes. * builtins.c (expand_builtin_apply): Use the new emit-rtl functions. * calls.c (emit_call_1): Likewise. (expand_call): For calls initializing constant memory, replace emission of standalone mem /u clobber with function usage entry. * expr.c (emit_block_move_via_libcall): Likewise. * cse.c (count_reg_usage, case EXPR_LIST): New case. * flow.c (propagate_one_insn): Pass entire operand of CALL_INSN_FUNCTION_USAGE to mark_used_regs. * integrate.c (try_constants): For CALL_INSNs, substitute constants within the FUNCTION_USAGE also. * loop.c (prescan_loop): Note clobbers of const mem mentioned in FUNCTION_USAGE lists. * reload1.c (replace_pseudos_in): Renamed. (reload): Use it for clobbers surviving until the end of the reload. From-SVN: r66429
2003-04-27* reload1.c (reg_set_luid): Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r66137
2003-04-18* reload1.c: Revert my previous patch on 2002-04-17.Kazu Hirata1-34/+0
From-SVN: r65790
2003-04-17reload1.c (move2add_last_cc0): New.Kazu Hirata1-0/+34
* reload1.c (move2add_last_cc0): New. (reload_cse_move2add): Detect implicit sets. (move2add_note_store): Notice a store into cc0. From-SVN: r65754
2003-04-17reload1.c (reload_cse_noop_set_p): Return false if mode of SET_DEST is not ↵Alexandre Oliva1-0/+3
the same as that returned by... * reload1.c (reload_cse_noop_set_p): Return false if mode of SET_DEST is not the same as that returned by... * cselib.h (cselib_reg_set_mode): ... new function. * cselib.c (cselib_reg_set_mode): Define it. (REG_VALUES): Document semantics of first element as set mode. (cselib_subst_to_values): Skip first element if ELT is NULL. (cselib_lookup): Likewise. Insert past the first element. (cselib_invalidate_regno): NULLify first element. (cselib_record_set): Set first element. From-SVN: r65713
2003-04-09optabs.c: Comment that gen_add2_insn and others may actually return emitted ↵Alexandre Oliva1-5/+19
insns... * optabs.c: Comment that gen_add2_insn and others may actually return emitted insns, if the gen functions turn out to return emitted insns. * reload1.c (reload_cse_move2add): Cope with emitted insns from gen_add2_insn. From-SVN: r65400
2003-03-30* reload1.c (reload_cse_move2add): Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r65041
2003-03-29reload1.c (reload_as_needed): Allow a USE in asm reloads.Alan Modra1-0/+1
* reload1.c (reload_as_needed): Allow a USE in asm reloads. * loop.c: (find_mem_in_note_1, find_mem_in_note): Comment. From-SVN: r64991
2003-03-15reload1.c (choose_reload_regs): Use && instead of || with ↵Glen Nakamura1-1/+1
REG_CANNOT_CHANGE_MODE_P condition. 2003-03-15 Glen Nakamura <glen@imodulo.com> * reload1.c (choose_reload_regs): Use && instead of || with REG_CANNOT_CHANGE_MODE_P condition. From-SVN: r64399
2003-03-04reload.c (reload_adjust_reg_for_mode): New function.Alexandre Oliva1-5/+5
* reload.c (reload_adjust_reg_for_mode): New function. (subst_reloads): Call it. (operands_match_p): Adjust registers using HARD_REGNO_NREGS. * reload.h (reload_adjust_reg_for_mode): Declare. * reload1.c (emit_input_reload_insns, emit_output_reload_insns): Call it. From-SVN: r63766
2003-03-03* reload1.c (reload_cse_move2add): Remove variable success.Kazu Hirata1-7/+5
From-SVN: r63717
2003-02-28reload1.c (sext_for_mode): Remove.Kazu Hirata1-35/+17
* reload1.c (sext_for_mode): Remove. (reload_cse_move2add): Use trunc_int_for_mode instead of sext_for_mode. (move2add_note_store): Likewise. Reset register information if we see a set in non-integer mode. From-SVN: r63540
2003-02-25reload1.c (reload_cse_move2add): Use STRICT_LOW_PART if PLUS does not reduce ↵Kazu Hirata1-1/+36
the cost of SET. * reload1.c (reload_cse_move2add): Use STRICT_LOW_PART if PLUS does not reduce the cost of SET. From-SVN: r63426
2003-02-14re PR rtl-optimization/7702 (gcc-3.2 optimization problem on a DEC alpha ↵Falk Hueffner1-1/+7
under OSF1) PR optimization/7702 * reload1.c (reload_cse_simplify_set): Honor CANNOT_CHANGE_MODE_CLASS. From-SVN: r62921
2003-02-11reload1.c (first_label_num): New.John David Anglin1-27/+23
* reload1.c (first_label_num): New. (reload): Index offsets_known_at and offsets_at using difference of label number and first label number. Don't use offset pointers. (set_label_offsets, set_initial_label_offsets): Likewise. From-SVN: r62672
2003-02-09cfgrtl.c (verify_flow_info): Use control_flow_insn_p.Jan Hubicka1-0/+8
* cfgrtl.c (verify_flow_info): Use control_flow_insn_p. * reload1.c (fixup_abnormal_edges): Split basic blocks when EH edges possibly got duplicated. From-SVN: r62599
2003-02-01[multiple changes]Richard Henderson1-0/+8
2003-02-01 Richard Henderson <rth@redhat.com> * optabs.c (expand_unop): Use word_mode for outmode of bit scaners. * libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change return type to Wtype. * libgcc-std.ver (GCC_3.4): Fix inheritance. * config/i386/i386.md (ffssi2): Use nonimmediate_operand for expander input constraint. 2003-02-01 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and OTI_parity. (clz_optab, ctz_optab, popcount_optab, parity_optab): New. * optabs.c (widen_clz, expand_parity): New. (expand_unop): Handle clz and parity. Hardcode SImode as outmode for libcalls to clz, ctz, popcount, and parity. (init_optabs): Init clz_optab, ctz_optab, popcount_optab and parity_optab, and set up libfunc handlers. * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2, __popcount_tab): New. * libgcc2.h: Declare them. * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c. * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab and parity_optab. * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New. * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT, BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL, BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL, BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL, BUILT_IN_PARITYLL): New. * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs and add optab argument. (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*. * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New. * expr.c (expand_expr): Handle them. * fold-const.c (tree_expr_nonnegative_p): Likewise. * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New. * reload1.c (eliminate_regs): Handle them. (elimination_effects): Likewise. * function.c (instantiate_virtual_regs_1): Likewise * genattrtab.c (check_attr_value): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR. * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY. (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY. * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New. * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to __builtin_arm_clz. * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move... * mklibgcc.in (lib2funcs): ...here and merge. Add new members. * doc/extend.texi (Other Builtins): Add new builtins. * doc/md.texi (Standard Names): Add new patterns. From-SVN: r62252
2003-01-24emit-rtl.c (reg_attrs_htab): New static variable.Jan Hubicka1-3/+4
* emit-rtl.c (reg_attrs_htab): New static variable. (reg_attrs_htab_hash, reg_attrs_htab_eq, get_reg_attrs): New static functions. (reg_rtx): Do not maintain regno_decl. (gen_rtx_REG_offset, set_reg_attrs_from_mem, set_delc_rtx, set_mem_attrs_from_reg): New global function. (init_emit): Do not initialize regno_decl. (init_emit_once): initialize reg_attrs_htab. * final.c (alter_subreg): Do not replace REG by SUBREG. (gen_mem_expr_from_op): Improve output. (output_asm_operands): Likewise. * function.c (assign_params): Do not set REGNO_DECL. * function.h (struct function): Kill regno_decl. (REGNO_DECL): Kill. * gengtype.c (adjust_field_rtx_def): Handle new field of reg. * print_rtl.c (print_rtx): Output REG information. * regclass.c (reg_scan_mark_refs): Update attrs. * reload1.c (alter_reg): Likewise. * simplify_rtx.c (simplify_subreg): Likewise. * stmt.c (expand_decl): Likewise. * rtl.def (REG): Add new field. * rtl.h (struct reg_attrs): New. (rtunion_def): At rtreg. (X0MEMATTR): Add checking. (X0REGATTR, REG_ATTRS, REG_EXPR, REG_OFFSET): New macro. (set_reg_attrs_from_mem, set_mem_attrs_from_reg, gen_rtx_REG_offset): Declare. * tree.h (SET_DECL_RTL): Call set_decl_rtl. From-SVN: r61741
2003-01-16Make-lang.in (f/target.o): Depend on toplev.h.Kaveh R. Ghazi1-1/+1
f: * Make-lang.in (f/target.o): Depend on toplev.h. * target.c: Include toplev.h. java: * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H). * jcf-parse.c: Include tm_p.h. gcc: * ra-colorize.c (colorize_one_web): Initialize variable. * regmove.c (fixup_match_1): Likewise. * reload1.c (reload_as_needed): Likewise. * sdbout.c (SET_KNOWN_TYPE_TAG): Add cast. From-SVN: r61394
2003-01-16arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned warning.Kaveh R. Ghazi1-3/+3
* arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned warning. * emit-rtl.c (gen_rtx_REG, set_mem_attributes_minus_bitpos, init_emit_once): Likewise. * flow.c (mark_regs_live_at_end, calculate_global_regs_live): Likewise. * function.c (assign_stack_temp_for_type): Likewise. * loop.c (loop_invariant_p): Likewise. * recog.c (push_operand): Likewise. * regclass.c (init_reg_sets_1): Likewise. * reload.c (update_auto_inc_notes): Likewise. * reload1.c (reload_as_needed, emit_input_reload_insns): Likewise. * stmt.c (expand_asm_operands): Likewise. * stor-layout.c (start_record_layout): Likewise. cp: * class.c (layout_virtual_bases): Avoid signed/unsigned warning. java: * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned warning. From-SVN: r61389
2003-01-13Add 2003 copyright notices for constraints string patch, also 2002 noticeJoern Rennecke1-1/+1
for genoutput.c . From-SVN: r61258
2003-01-09defaults.h (EXTRA_MEMORY_CONSTRAINT): Add STR argument.J"orn Rennecke1-5/+10
* defaults.h (EXTRA_MEMORY_CONSTRAINT): Add STR argument. (EXTRA_ADDRESS_CONSTRAINT): Likewise. (CONSTRAINT_LEN): Provide default definition. (CONST_OK_FOR_CONSTRAINT_P): Likewise. (CONST_DOUBLE_OK_FOR_CONSTRAINT_P): Likewise. (EXTRA_CONSTRAINT_STR): Likewise. (REG_CLASS_FROM_CONSTRAINT): Define. * genoutput.c (check_constraint_len, constraint_len): New functions. (validate_insn_alternatives): Check CONSTRAINT_LEN for each constraint / modifier. (gen_insn): Call check_constraint_len. * local-alloc.c (block_alloc): Update to use new macros / pass second argument to EXTRA_{MEMORY,ADDRESS}_CONSTRAINT. * ra-build.c (handle_asm_insn): Likewise. * recog.c (asm_operand_ok, preprocess_constraints): Likewise. (constrain_operands, peep2_find_free_register): Likewise. * regclass.c (record_operand_costs, record_reg_classes): Likewise. * regmove.c (find_matches): Likewise. * reload.c (push_secondary_reload, find_reloads): Likewise. (alternative_allows_memconst): Likewise. * reload1.c (maybe_fix_stack_asms): Likewise. (reload_cse_simplify_operands): Likewise. * stmt.c (parse_output_constraint, parse_input_constraint): Likewise. * doc/tm.texi (CONSTRAINT_LEN, REG_CLASS_FROM_CONSTRAINT): Document. (CONST_OK_FOR_CONSTRAINT_P): Likewise. (CONST_DOUBLE_OK_FOR_CONSTRAINT_P, EXTRA_CONSTRAINT_STR): Likewise. (EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT): Add STR argument. * config/s390/s390.h (EXTRA_MEMORY_CONSTRAINT): Likewise. From-SVN: r61119