summaryrefslogtreecommitdiffstats
path: root/gcc/loop.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Avoid GNU C extensioncrux1999-11-261-1/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30671 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (loop_optimize): Always find_loop_tree_blocks andmmitchel1999-11-241-6/+8
| | | | | | | unroll_block_trees when generating debuggable code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30647 138bc75d-0d04-0410-961f-82ee72b054a4
* Copy propagation for hoisted mems in loop.c.crux1999-11-231-3/+111
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30638 138bc75d-0d04-0410-961f-82ee72b054a4
* Reformat load_mems slightly.crux1999-11-221-137/+136
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30618 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix yet another gcc2 merge problem, this one broke linux kernel compileswilson1999-11-121-0/+6
| | | | | | | * loop.c (invariant_p, case MEM): Put MEM_VOLATILE_P check back. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30496 138bc75d-0d04-0410-961f-82ee72b054a4
* * cse.c (delete_trivially_dead_insns): Replace alloca withmmitchel1999-11-081-14/+20
| | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30445 138bc75d-0d04-0410-961f-82ee72b054a4
* * bitmap.h (BITMAP_XMALLOC): New macro.mmitchel1999-11-011-25/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | * flow.c (CLEAN_ALLOCA): Remove. (delete_unreachable_blocks): Use xmalloc/xcalloc instead of alloca. (life_analysis): Likewise. (update_life_info): Don't use CLEAN_ALLOCA. (life_analysis_1): Use xmalloc/xcalloc instead of alloca. (calculate_global_regs_live): Likewise. (print_rtl_with_bb): Likewise. (verify_flow_info): Likewise. * global.c (global_alloc): Likewise. (global_conflicts): Likewise. * integrate.c (save_for_inline_nocopy): Likewise. (expand_inline_function): Likewise. * jump.c (jump_optimize_1): Likewise. (duplicate_loop_exit_test): Likewise. (thread_jumps): Likewise. * loop.c (loop_optimize): Likewise. (combine_givs): Likewise. (recombine_givs): Likewise. * reorg.c (dbr_schedule): Likewise. * unroll.c (unroll_loop): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30333 138bc75d-0d04-0410-961f-82ee72b054a4
* Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>kenner1999-11-011-21/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30299 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (note_stores): Add additional paramter.mmitchel1999-10-271-15/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30221 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (basic_induction_var): A non-integer variable which islaw1999-10-261-0/+2
| | | | | | | being set by a paradoxical subreg is probably not a biv. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30181 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (note_set_pseudo_multiple_uses_retval): New variable.law1999-10-251-4/+50
| | | | | | | | | (note_set_pseudo_multiple_uses): New function. (check_dbra_loop): Use not_set_pseudo_multiple_uses to determine if a pseudo set in the loop exit is used elsewhere. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30155 138bc75d-0d04-0410-961f-82ee72b054a4
* Don't put things between tablejumps and jump tables in loop.ccrux1999-10-101-1/+15
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29887 138bc75d-0d04-0410-961f-82ee72b054a4
* * collect2.c (scan_prog_file, scan_libraries): Prototype functionghazi1999-10-061-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pointers and casts for `int_handler' and `quit_handler'. * flow.c (verify_flow_info, split_hard_reg_notes, find_insn_with_note, sets_reg_or_subreg_1, prepend_reg_notes, remove_edge, remove_fake_successors): Add static prototypes. (verify_flow_info): Wrap with macro ENABLE_CHECKING. (mark_set_1): Initialize variable `regno'. (unlink_insn_chain): Likewise for variable `curr'. (remove_fake_edges): Remove unused variables `e', `tmp' and `last'. * loop.c (strength_reduce): Initialize variable `unrolled_insn_copies'. (cmp_combine_givs_stats, cmp_recombine_givs_stats): Add static prototypes. Change these functions to take const PTR parameters to avoid prototype conflict when used as the comparson argument for qsort. (check_dbra_loop): Initialize variable `comparison_val'. * reload.c (debug_reload_to_stream, debug_reload): Add prototypes. (get_secondary_mem): Mark parameter `x' with ATTRIBUTE_UNUSED. (find_valid_class): Initialize variable `best_class'. (find_reloads): Call memcpy, not bcopy. * reload1.c (gen_mode_int, dump_needs): Add prototypes. (hard_reg_use_compare): Don't needlessly cast away const. (reload_reg_class_lower): Likewise. (choose_reload_regs): Initialize variable `regno'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29840 138bc75d-0d04-0410-961f-82ee72b054a4
* Make it possible to prototype port-specific functions (and convert i386 to ↵crux1999-09-201-0/+1
| | | | | | use this) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29514 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (insns_safe_to_move_p): New function.mmitchel1999-09-191-4/+11
| | | | | | | | * loop.c (find_and_verify_loops): Use it. * rtlanal.c (insns_safe_to_move_p): Define it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29509 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Don't call reg_used_between_p if thelaw1999-09-141-5/+5
| | | | | | | insn from BL2 is after the insn from BL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29393 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix typo in comment.law1999-09-141-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29392 138bc75d-0d04-0410-961f-82ee72b054a4
* Replace insn_foo with insn_data.foo.rth1999-09-121-6/+8
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29358 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (basic_induction_var): Typo NULL_RTX -> NULL.rth1999-09-101-2/+4
| | | | | | | | | | | | | | (strength_reduce): Release the varrays from the no-bivs early exit. * reload1.c (order_regs_for_reload): Init hard_reg_n_uses before the loop over the registers. * tree.c (save_tree_status): Set maybepermanent_firstobj NULL for a new obstack. (restore_tree_status): Check that instead when freeing the obstack. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29270 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (SUBST): Break out to a real function do_SUBST.rth1999-09-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (SUBST_INT): Likewise. * gcse.c (free_pre_mem): Free `temp_bitmap'. (pre_insert): Free `inserted'. * loop.c (basic_induction_var): Always set `location'. * function.c (expand_function_end): Add initial_trampoline as a root. * rtl.h (init_varasm_once): Declare. * toplev.c (compile_file): Call it. * ggc-simple.c (ggc_mark_string_ptr): New. (ggc_add_string_root): New. (ggc_collect): Disable collection avoidance temporarily. * ggc.h (ggc_add_string_root): Declare. * except.c (create_rethrow_ref): Use ggc_alloc_string. * optabs.c (init_libfuncs): Likewise. * varasm.c (named_section): Use ggc_alloc_string. (make_function_rtl): Likewise. (make_decl_rtl): Likewise. (assemble_static_space): Likewise. (assemble_trampoline_template): Likewise. (output_constant_def): Likewise. (force_const_mem): Likewise. (mark_const_hash_entry): New. (mark_pool_sym_hash_table): New. (mark_varasm_state): Use it. (init_varasm_once): New. * expr.h (init_one_libfunc): Declare. * optabs.c (init_one_libfunc): New. (init_optabs): Use it. * config/gofast.h: Likewise. * config/sparc/sol2.h (INIT_SUBTARGET_OPTABS): Likewise. * config/sparc/sparc.h (INIT_TARGET_OPTABS): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29226 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge in gcc2-ss-010999law1999-09-071-46/+105
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29150 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>zack1999-08-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29008 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (this_loop_info): New variable.law1999-08-291-91/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (loop_has_call, loop_has_volatile, loop_has_tablejump, loop_continue, loops_enclosed): Replace with fields in this_loop_info. All uses updated. (prescan_loop, strength_reduce): New argument loop_info. All callers updated. (scan_loop): New variable loop_info, initialise to address of this_loop_info. (prescan_loop): Set loop_info->vtop if find NOTE_INSN_LOOP_VTOP. Delete variable loop_has_multiple_exit targets and replace with field in this_loop_info. (find_and_verify_loops): Rename this_loop to this_loop_num. (strength_reduce): Delete loop_iteration_info. Replace variable loop_info with function argument of same name. (insert_bct): Rework test for loop being completely unrolled. * loop.h (struct loop_info): New fields num, loops_enclosed, has_call, has_volatile, has_tablejump, has_multiple_exit_targets, has_indirect_jump, and cont. Redefine use of unroll_number. (loop_unroll_number): Delete. * unroll.c (unroll_loop): Store loop unroll count in unroll_number field of loop_info. (loop_iterations): Delete variable vtop and instead use loop_info->vtop computed in prescan_loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28961 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (express_from): Try harder to unify (* c N) and (* c M)rth1999-08-251-0/+24
| | | | | | | where N and M are constant and N is an integer multiple of M. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28868 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi1999-08-251-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28860 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix minor oops in last change.law1999-08-251-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28848 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Automatically unroll loops if thelaw1999-08-251-3/+33
| | | | | | | unrolled loop size is smaller than the rolled loop size. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28841 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (insert_bct): Replace use of sdiv_optab with asr_optablaw1999-08-251-13/+4
| | | | | | | and delete comment that code should be rewritten. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28839 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (rtx_format): Constify a char*.ghazi1999-08-201-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28784 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (recombine_givs): Set ix field after sorting.amylaar1999-08-181-8/+10
| | | | | | | (recombine_givs): Remove bogus index / giv lockstep looping. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28757 138bc75d-0d04-0410-961f-82ee72b054a4
* Include function.h in most files. Remove most of the global variablescrux1999-08-091-0/+1
| | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28626 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): When doing biv->giv conversion, updateamylaar1999-08-021-2/+8
| | | | | | | reg note of NEXT->insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28423 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): When doing biv->giv conversion, fix upamylaar1999-08-021-1/+8
| | | | | | | reg_biv_class. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28413 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): When reversing a loop, delete allcrux1999-07-091-0/+34
| | | | | | | | REG_EQUAL notes referencing the reversed biv except those which are for a giv based on it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28043 138bc75d-0d04-0410-961f-82ee72b054a4
* hlaw1999-06-251-4/+11
| | | | | | | | * loop.c (verify_dominator): Properly handle ADDR_VEC and ADDR_DIFF_VEC insns that appear inside loops. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27760 138bc75d-0d04-0410-961f-82ee72b054a4
* Revert these two patches:mmitchel1999-06-241-20/+5
| | | | | | | | | | | | | Thu Jun 17 21:34:24 1999 J"orn Rennecke <amylaar@cygnus.co.uk> * loop.c (strength_reduce): When doing biv->giv conversion, update reg note of NEXT->insn. Thu Jun 17 17:22:07 1999 J"orn Rennecke <amylaar@cygnus.co.uk> * loop.c (strength_reduce): When doing biv->giv conversion, fix up reg_biv_class. (recombine_givs): Set ix field after sorting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27727 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): When doing biv->giv conversion, updateamylaar1999-06-171-2/+8
| | | | | | | reg note of NEXT->insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27574 138bc75d-0d04-0410-961f-82ee72b054a4
* law1999-06-171-1/+8
| | | | | | | | | * loop.c (move_movables): Note issues with replacing REGs with SUBREGs. * mips.h (GO_IF_LEGITIMATE_ADDRESS): Handle SUBREGs properly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27573 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): When doing biv->giv conversion, fix upamylaar1999-06-171-3/+12
| | | | | | | | reg_biv_class. (recombine_givs): Set ix field after sorting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27565 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Insert sets of derived givs at everyamylaar1999-06-161-14/+22
| | | | | | | biv increment, even if it's the only one. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27549 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (loop_insn_first_p): Don't compare LUIDs when Pamylaar1999-06-091-3/+8
| | | | | | | | is a note; use <= for the compare; advance P while it is a NOTE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27454 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-06-04 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>law1999-06-041-1/+1
| | | | | | | * loop.c (check_dbra_loop): Fix change of Jan 19. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27345 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Don't do biv->giv conversion on constants.law1999-05-271-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27194 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Do not clear NOT_EVERY_ITERATION at thelaw1999-05-241-3/+20
| | | | | | | | last CODE_LABEL in a loop if we have previously passed a jump to the top of the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27125 138bc75d-0d04-0410-961f-82ee72b054a4
* Sun May 23 20:31:16 1999 Jeffrey A Law (law@cygnus.com)law1999-05-231-0/+1
| | | | | | | | | | | | * loop.c (strength_reduce): Grow reg_single_usage as needed. Sun May 23 10:13:20 1999 David O'Brien <obrien@FreeBSD.org> * i386/freebsd-elf.h (LINK_SPEC): Change -static to -Bstatic. Also remove a useless comment. Sun May 23 10:05:23 1999 Jerry Quinn <jquinn@nortelnetworks.com> * pa.md (negdf2,negsf2): Use fneg instead of fsub on pa 2.0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27111 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (maybe_eliminate_biv): Check regno againstlaw1999-05-131-1/+2
| | | | | | | max_reg_before_loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26918 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Re-enable Joern's loop improvements.law1999-04-081-5/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26299 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (maybe_eliminate_biv): For libcalls that set a giv, skip toamylaar1999-03-291-0/+20
| | | | | | | end of libcall. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26056 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (combine_givs): Fix index into can_combine when doingamylaar1999-03-261-1/+1
| | | | | | | benefit adjustment for remaining givs when having combined a giv. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25998 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Correct a comment.law1999-03-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25983 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud