summaryrefslogtreecommitdiffstats
path: root/gcc/loop.c
Commit message (Collapse)AuthorAgeFilesLines
...
* * loop.h (struct loop_info): Define new structure.m.hayes1998-11-251-41/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (precondition_loop_p): Added prototype. (unroll_loop): Added new argument loop_info to prototype. (final_biv_value, final_giv_value): Added new argument n_iterations to prototype. * loop.c (strength_reduce): Declare new structure loop_iteration_info and new pointer loop_info. (loop_n_iterations): Replace global variable by element in loop_info structure. (check_final_value): New argument n_iterations. (insert_bct): New argument loop_info. (loop_unroll_factor): Replace global array by element in loop_info structure. (loop_optimize): Remove code to allocate and initialise loop_unroll_factor_array. * unroll.c (precondition_loop_p): No longer static since used by branch on count optimization. (precondition_loop_p, unroll_loop): New argument loop_info. (final_biv_value, final_giv_value, find_splittable_regs): New argument n_iterations. (loop_iteration_var, loop_initial_value, loop_increment, loop_final_value, loop_comparison_code, loop_unroll_factor): Replaced global variables by loop_info structure. (loop_unroll_factor): Replace global array by element in loop_info structure. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23884 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Update JUMP_LABEL field of jump insnm.hayes1998-11-251-6/+8
| | | | | | | | | when loop reversed. * unroll.c (precondition_loop_p): Return loop_initial_value for initial_value instead of loop_iteration_var. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23881 138bc75d-0d04-0410-961f-82ee72b054a4
* * cse.c (fold_rtx): Make autoincrement addressing mode tests belaw1998-11-241-6/+10
| | | | | | | | | | | | | | | | | | | runtime selectable. * expr.c (move_by_pieces): Similarly. (move_by_pieces_1, clear_by_pieces, clear_by_pieces_1): Similarly. * flow.c (find_auto_inc): Similarly. (try_pre_increment): Similarly. * loop.c (strength_reduce): Similarly. * regclass.c (auto_inc_dec_reg_p): Similarly. * regmove.c (try_auto_increment): Similarly. (fixup_match_1): Similarly. * rtl.h (HAVE_PRE_INCREMENT): Define if not already defined. (HAVE_PRE_DECREMENT): Similarly. (HAVE_POST_INCREMENT, HAVE_POST_DECREMENT): Similarly. sponding changes to all target header files. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23837 138bc75d-0d04-0410-961f-82ee72b054a4
* law1998-11-211-4/+8
| | | | | | | * loop.c (check_dbra_loop): Avoid using gen_add2_insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23745 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (move_movables): Start of libcall might be new loop start.amylaar1998-11-201-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23738 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (loop_has_tablejump): New variable.dje1998-10-231-17/+21
| | | | | | | | | | | | (prescan_loop): Scan for it. (insert_bct): Replace explicit scan with use of it. * regclass.c (regclass): Restore loop variable j. (record_reg_classes): Deterine op_types modifiers and initialize classes[i] before matching constraints. Handle matching constraints 5-9. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23263 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (express_from): Make sure that when generating a PLUS oflaw1998-10-221-1/+12
| | | | | | | a PLUS, any constant expression appears on the outermost PLUS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23226 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix dumb thinko.law1998-10-191-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23181 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (scan_loop): Be more selective about what invariants arelaw1998-10-191-15/+6
| | | | | | | moved out of a loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23178 138bc75d-0d04-0410-961f-82ee72b054a4
* - recommit bct_p ATTRIBUTE_UNUSED change which somehow failed.dje1998-10-151-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23116 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (strength_reduce): Undo Oct 14 change marking bct_pdje1998-10-151-1/+1
| | | | | | | ATTRIBUTE_UNUSED. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23107 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi1998-10-141-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (sched.o): Depend on recog.h. * alias.c (REG_BASE_VALUE): Cast the result of REGNO() macro to (unsigned) when comparing against one. (find_base_value): Likewise. (record_base_value): Cast variable `regno' to (unsigned) when comparing against one. Cast the result of REGNO() macro to (unsigned) when comparing against one. (memrefs_conflict_p): Change type of variables `r_x' and `r_y' to unsigned. (init_alias_analysis): Add unsigned variable `ui'. Use it as loop variable where an unsigned index is needed. * caller-save.c (init_caller_save): Cast `-1' to (enum insn_code) before comparing against one. * collect2.c: Add prototypes for functions `error', `fatal' and `fatal_perror'. Make these functions take variable arguments instead of faking it with a fixed number of args. (write_c_file_stat): Cast the argument of ctype macro to (unsigned char). * combine.c (can_combine_p): Mark parameter `pred' with ATTRIBUTE_UNUSED. (find_split_point): Cast variable `src' to (unsigned HOST_WIDE_INT) when comparing against one. HOST_WIDE_INT) when comparing against one. (simplify_rtx): Cast 1 to (unsigned HOST_WIDE_INT) in shift. (simplify_logical): Likewise. (force_to_mode): Cast result of INTVAL() macro to (unsigned HOST_WIDE_INT) when comparing against one. Cast 1 to (unsigned HOST_WIDE_INT) in shift. (simplify_and_const_int): Cast result of INTVAL() macro to `unsigned HOST_WIDE_INT' when comparing against one. (merge_outer_ops): Cast variable const0 to `unsigned HOST_WIDE_INT' when comparing against the result of GET_MODE_MASK() macro. (simplify_comparison): Likewise for variable `c0'. Cast variable `const_op' to `unsigned HOST_WIDE_INT' when comparing against one. Cast `1' to `unsigned HOST_WIDE_INT' in shift. Cast the result of `GET_MODE_MASK()/2' to `HOST_WIDE_INT' when comparing against one. Cast `1' to `unsigned HOST_WIDE_INT' in shift. Cast result of INTVAL() macro to `unsigned HOST_WIDE_INT' when comparing against one. (distribute_notes): Wrap variable `cc0_setter' in macro `HAVE_cc0'. config/mips/mips.c (gen_int_relational): Cast result of INTVAL() macro to `unsigned HOST_WIDE_INT' when comparing against one. (output_block_move): Cast `sizeof' expression to (int) when comparing against one. (function_arg): Cast BITS_PER_WORD to `unsigned' when comparing against one. (save_restore_insns): Cast `base_offset' to `long' to match format specifier in fprintf. * config/mips/mips.h (Pmode): Cast the result of `Pmode' macro to `enum machine_mode'. * flow.c (life_analysis_1): Remove unused variable `insn'. * gcc.c (translate_options): Move variables `j' and `k' into the scope in which they are used. Change their types to `size_t'. (set_spec): Cast the argument of ctype macro to `unsigned char'. (read_specs): Likewise. (process_command): Cast `sizeof' to (int) when comparing against one. (do_spec_1): Cast the argument of ctype macro to `unsigned char'. (handle_braces): Cast both sides of `==' expression to `long' to ensure sign matching. (main): Cast variable `i' to `int' when comparing against one. * gcov-io.h (__fetch_long): Change type of parameter `bytes' from int to size_t. Cast variable `i' to size_t when comparing against one. * genattrtab.c (convert_set_attr_alternative): Remove unused parameter `insn_code'. All callers changed. (convert_set_attr): Likewise. * genrecog.c (add_to_sequence): Cast result of XVECLEN() macro to size_t when comparing against one. Likewise for variable `len'. * global.c (global_alloc): Cast variable `max_regno' to size_t when comparing against one. Likewise for variable `max_allocno'. * jump.c (sets_cc0_p): Mark parameter `x' with ATTRIBUTE_UNUSED. * local-alloc.c (validate_equiv_mem_from_store): Mark parameter `set' with ATTRIBUTE_UNUSED. (find_free_reg): Cast `sizeof' expression to (int) when comparing against one. * loop.c (count_loop_regs_set): Remove unused variable `dest'. (strength_reduce): Mark parameter `bct_p' with ATTRIBUTE_UNUSED. (get_condition): Cast variable `const_val' to `unsigned HOST_WIDE_INT' when comparing against one. Cast unsigned expression to HOST_WIDE_INT when comparing against one. (insert_loop_mem): Mark parameter `data' with ATTRIBUTE_UNUSED. (load_mems_and_recount_loop_regs_set): Cast variable `nregs' to `unsigned' when comparing against one. * protoize.c (is_id_char): Change type of parameter `ch' to unsigned char. (munge_compile_params): Cast argument of ctype macro to (const unsigned char). (process_aux_info_file): Cast variable `aux_info_size' to int when comparing against one. (forward_to_next_token_char): Cast argument of ctype macro to `const unsigned char'. (edit_formals_lists): Likewise. (find_rightmost_formals_list): Likewise. (add_local_decl): Likewise. (add_global_decls): Likewise. (edit_fn_definition): Likewise. (do_cleaning): Likewise. (scan_for_missed_items): Likewise. (edit_file): Cast variable `orig_size' to (int) when comparing against one. (main): Cast argument of ctype macro to `const unsigned char'. * recog.c (const_int_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED. * regclass.c (record_reg_classes): Change type of variable `c' to `unsigned char'. Cast `char' array index to `unsigned char'. * reload.c (push_secondary_reload): Cast argument to REG_CLASS_FROM_LETTER() macro to `unsigned char'. * reload1.c (calculate_needs): Cast `char' array index to `unsigned char'. (set_label_offsets): Change type of variable `i' to unsigned int. Cast result of XVECLEN() macro to unsigned when comparing against one. (mark_not_eliminable): Change type of variable `i' to unsigned. (order_regs_for_reload): Likewise. Cast `max_regno' to unsigned when comparing against one. (reload_as_needed): Cast macro NUM_ELIMINABLE_REGS to (int) when comparing against one. (choose_reload_regs): Hide unused label `fail'. (reload_cse_simplify_operands): Cast `char' array index to `unsigned char'. (reload_combine_note_store): Mark parameter `set' with ATTRIBUTE_UNUSED. Cast UNITS_PER_WORD to unsigned when comparing against one. (reload_cse_move2add): Remove unused variable `src2'. * sched.c: Include recog.h. (sched_note_set): Remove unused parameter `b'. All callers changed. (split_hard_reg_notes): Likewise for parameter `orig_insn'. (blockage_range): Cast result of UNIT_BLOCKED() macro to (int) when comparing against one. * stupid.c (stupid_find_reg): Mark parameter `changes_size' with ATTRIBUTE_UNUSED. Cast `sizeof' expression to (int) when comparing against one. * unroll.c (precondition_loop_p): Remove unused parameter `loop_end'. All callers changed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23079 138bc75d-0d04-0410-961f-82ee72b054a4
* Fri Oct 9 16:03:19 1998 Graham <grahams@rcp.co.uk>rth1998-10-091-2/+2
| | | | | | | | | | | | | | | | | | * flow.c (print_rtl_with_bb): Changed type of in_bb_p to match use. * gcc.c (add_preprocessor_option): Correct typo when allocating memory, sizeof() argument had one too many `*'. (add_assembler_option): Likewise. (add_linker_option): Likewise. * gcov.c (output_data): Likewise. * local-alloc.c (memref_used_between_p): Likewise. (update_equiv_regs): Likewise. * loop.c (strength_reduce): Likewise. * reg-stack.c (record_asm_reg_life): Likewise. (subst_asm_stack_reg): Likewise. * reorg.c (dbr_schedule): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22964 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (insert_bct): Ensure loop_iteration_var non-zero before use.dje1998-10-091-2/+11
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22955 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix for powerpc/c4x problem with missed loop optimizations.wilson1998-10-081-5/+15
| | | | | | | | * loop.c (get_condition): Allow combine when either compare is VOIDmode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22922 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (count_one_set): Add prototype.law1998-10-071-0/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22886 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (count_one_set): New static function, broken out oflaw1998-10-061-64/+48
| | | | | | | | | | | | | | | count_loop_regs_set (count_loop_regs_set): Call it. * global.c (mark_reg_store): Handle clobbers here by not calling set_preference. (mark_reg_clobber): Just call mark_reg_store after ensuring SETTER is in fact a clobber. * integrate.c (process_reg_param): New function, broken out of expand_inline_function. (expand_inline_function): Call it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22875 138bc75d-0d04-0410-961f-82ee72b054a4
* * unroll.c (loop_iteration_var, loop_initial_value, loop_incrementdje1998-10-051-504/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | loop_final_value, loop_comparison_code): No longer static. (unroll_loop): Delete loop_start_value update. * loop.h (loop_iteration_var, loop_initial_value, loop_increment, loop_final_value, loop_comparison_code): Extern. (loop_start_value): Delete extern. * loop.c (loop_can_insert_bct, loop_increment, loop_start_value, loop_comparison_value, loop_comparison_code): Delete. (loop_optimize): Remove initialization for deleted variables. (strength_reduce): Delete analyze_loop_iterations call. Only call insert_bct if flag_branch_count_on_reg set. (analyze_loop_iterations): Delete. (insert_bct): Remove iteration count calculation. Move checks for viable BCT optimization to here. Obtain iteration count from loop_iterations and correct for unrolling. Check for enough iteration to be beneficial. Comment out runtime iteration count case. (insert_bct): Print iteration count in dump file. Remove loop_var_mode and use word_mode directly. * rs6000.h (processor_type): Add PROCESSOR_PPC604e. * rs6000.c (rs6000_override_options): Use it. (optimization_options): Enable use of flag_branch_on_count_reg. * rs6000.md (define_function_unit): Describe 604e. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22852 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (move_movables): Corrected threshold calculation forlaw1998-10-051-8/+4
| | | | | | | moved_once registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22847 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (combine_givs_p): Fix test for identical givs.law1998-10-051-5/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22845 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Use a vanilla loop reversal if the biv islaw1998-09-301-3/+9
| | | | | | | used to compute a giv or as some other non-counting use. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22684 138bc75d-0d04-0410-961f-82ee72b054a4
* * function.c (gen_mem_addressof): If the address REG ismmitchel1998-09-301-13/+25
| | | | | | | | | REG_USERVAR_P make the new REG be so also. * loop.c (scan_loop): Apply DeMorgan's laws and add documentation in an attempt to clarify slightly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22667 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix typo that disabled loop unrolling for many targets.wilson1998-09-291-2/+2
| | | | | | | * loop.c (get_condition): Fix typo in May 9 change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22650 138bc75d-0d04-0410-961f-82ee72b054a4
* * toplev.c (rest_of_compilation): Set bct_p on second call todje1998-09-181-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | loop_optimize. * loop.c (loop_optimize, scan_loop, strength_reduce): New argument bct_p. (strength_reduce): Only call analyze_loop_iterations and insert_bct if bct_p set. (check_dbra_loop): Fix typo. (insert_bct): Use word_mode instead of SImode. (instrument_loop_bct): Likewise. Do not delete iteration count condition code generation insn. Initialize iteration count before loop start. * rtl.h (loop_optimize): Update prototype. * ginclude/va-ppc.h (va_arg): longlong types in overflow area are not doubleword aligned. * rs6000.c (optimization_options): New function. (secondary_reload_class): Only call true_regnum for PSEUDO_REGs. * rs6000.h (OPTIMIZATION_OPTIONS): Define. (REG_ALLOC_ORDER): Allocate highest numbered condition regsiters first; cr1 can be used for FP record condition insns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22471 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (move_movables): While removing insn sequences, preservedavem1998-09-131-3/+20
| | | | | | | | the next pointer of the most recently deleted insn when we skip over a NOTE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22402 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (load_mems): Copy rtx for output mem.rth1998-09-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22357 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix irix6 -g -O3 -funroll-all-loops bootstrap failure.wilson1998-09-041-1/+12
| | | | | | | * loop.c (load_mems): Fix JUMP_LABEL field after for_each_rtx call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22232 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Pass COMPARISON_VALUE, notbrendan1998-08-281-1/+1
| | | | | | | COMPARISON_VAL, into invariant_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22054 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Fix calculation of FINAL_VALUE whenamylaar1998-08-281-3/+9
| | | | | | | COMPARISON_VAL was normalized. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22051 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): The loop ending comparison valuelaw1998-08-281-0/+9
| | | | | | | must be an invariant or we can not reverse the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22045 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (scan_loop): Count down from max_reg_num - 1 tolaw1998-08-271-1/+1
| | | | | | | | | | FIRST_PSEUDO_REGISTER to avoid calling max_reg_num each iteration of the loop. (load_mems_and_recount_loop_regs_set): Likewise. Forgot second AVOID_CCMODE_COPIES loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22044 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (scan_loop): Count down from max_reg_num - 1 tolaw1998-08-271-1/+1
| | | | | | | | FIRST_PSEUDO_REGISTER to avoid calilng max_reg_num each iteration of the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22043 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Enable code for reversalamylaar1998-08-271-5/+4
| | | | | | | of some loops without a known constant loop end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22019 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Add some code that would allow reversalamylaar1998-08-261-64/+202
| | | | | | | of some loops without a known constant loop end if it were enabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22000 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (n_times_set, n_times_used, may_not_optimize,mmitchel1998-08-251-97/+127
| | | | | | | | | | | reg_single_usage): Convert to varrays. All uses changed. (insert_loop_mem): Return a value. (scan_loop): Tweak AVOID_CC_MODE_COPIES code. (load_mems_and_recount_loop_regs_set): Likewise. Grow the arrays, if necessary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21986 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (scan_loop): Allocate some slop to handle pseudosdavem1998-08-251-2/+10
| | | | | | | | | generated by move_movables. (load_mems_and_recount_loop_regs_set): Honor AVOID_CC_MODE_COPIES here too. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21955 138bc75d-0d04-0410-961f-82ee72b054a4
* Opps.law1998-08-241-1/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21936 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (scan_loop): Honor AVOID_CC_MODE_COPIES.law1998-08-241-0/+10
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21935 138bc75d-0d04-0410-961f-82ee72b054a4
* law1998-08-221-2/+6
| | | | | | | * loop.c (load_mems): Fix initializers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21907 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (rtx_function): New type.law1998-08-191-70/+567
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (for_each_rtx): New function. * rtlanal.c (for_each_rtx): Define it. * recog.c (change_t): New type. (change_objects, change_old_codes, change_locs, change_olds): Replace with ... (changes): New variable. (validate_change): Dynamically allocate room for more changes, if necessary. Uses changes array instead of change_objects, etc. (apply_change_group): Use changes array instead of change_objects, etc. * loop.c (loop_mem_info): New type. (loop_mems): New variable. (loop_mems_idx): Likewise. (looop_mems_allocated): Likewise. (scan_loop): Remove nregs parameter. (next_insn_in_loop): New function. (load_mems_and_recount_loop_regs_set): Likewise. (load_mems): Likewise. (insert_loop_mem): Likewise. (replace_loop_mem): Likewise. (replace_label): Likewise. (INSN_IN_RANGE_P): New macro. (loop_optimize): Don't pass max_reg_num() to scan_loop. (scan_loop): Remove nregs parameter, compute it after any new registers are created by load_mems. Use INSN_IN_RANGE_P and next_insn_in_loop rather than expanding them inline. Call load_mems to load memory into pseudos, if appropriate. (prescan_loop): Figure out whether or not there are jumps from the loop to targets other than the label immediately following the loop. Call insert_loop_mem to notice all the MEMs used in the loop, if it could be safe to pull MEMs into REGs for the duration of the loop. (strength_reduce): Use next_insn_in_loop. Tweak comments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21845 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (cplus-dep.o): Use cplus-dem.c from libiberty.law1998-08-171-3/+3
| | | | | | | | | | | | | * cplus-dem.c: Delete. * Makefile.in (fold-const.o): depend on $(RTL_H). * fold-const.c: Include rtl.h to get the prototype for `set_identifier_local_value'. * loop.c (express_from_1): Remove unused variable `tmp'. (combine_givs): cast the first argument of bzero to char *. * toplev.c (display_help): Remove unused variable `looking_for_start'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21785 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (add_label_notes): Do not ignore references to labelslaw1998-08-151-16/+9
| | | | | | | | before dispatch tables. Mirrors Apr 8 change to mark_jump_label. * gcse.c (add_label_notes): Similarly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21744 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.h (struct induction): Add no_const_addval.rth1998-07-171-189/+607
| | | | | | | | | | | | | | | | | | | | | | | | | | | * loop.c (the_movables, reg_address_cost): New variables. (init_loop): Init reg_address_cost. (loop_optimize): Call end_alias_analysis. (scan_loop): Init the_movables. (record_giv): Init induction->no_const_addval. (basic_induction_var) [PLUS]: Use rtx_equal_p instead of ==. [REG]: Rearrange loop search test to catch more cases. (general_induction_var): Return success not benefit; take an extra argument for that. Change all callers. (simplify_giv_expr) [PLUS]: Always combine invariants. Use sge_plus. [MULT]: Use rtx_equal_p instead of ==. Combine simple invariants. [default]: Search the_movables for additional combinations. (sge_plus_constant, sge_plus): New functions. (express_from_1): New function. (express_from): Always define. Rewrite using express_from_1. (combine_givs_p): Handle more cases. Ignore address cost. (cmp_combine_givs_stats): New function. (combine_givs_used_once, combine_givs_benefit_from): New functions. (combine_givs): Rewrite to do best-fit combination. * fold-const.c (operand_equal_p): Handle RTL_EXPR. (fold): Do a complete (A*C)+(B*C) association check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21263 138bc75d-0d04-0410-961f-82ee72b054a4
* 8law1998-07-161-1/+17
| | | | | | | | * loop.c (emit_iv_add_mult): Scan the entire insn list generated for the sequence, recording base values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21208 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (oballoc): Remove declaration.law1998-06-211-3/+1
| | | | | | | (replace_call_address): Add prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20639 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c: Include toplev.hlaw1998-06-191-0/+1
| | | | | | | | | | | | | | | | | * caller-save.c: Include toplev.h * combine.c: Include toplev.h * flow.c Include toplev.h * global.c: Include toplev.h * jump.c: Include toplev.h * local-alloc.c: Include toplev.h * loop.c: Include toplev.h * regmove.c: Include toplev.h * stupid.c: Include toplev.h * unroll.c: Include toplev.h * Makefile.in: Add toplev.h dependencies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20623 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (check_dbra_loop): Initialise final_value beforelaw1998-06-041-1/+1
| | | | | | | normalizing the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20213 138bc75d-0d04-0410-961f-82ee72b054a4
* * m68k.h: Declare more functions used in macros.law1998-05-231-0/+2
| | | | | | | | | | | | | | | | | | | (REG_CLASS_CONTENTS): Completely embrace initializer. * m68k.md (adddi3, subdi3): Add abort call to avoid warning about returning no value. * cse.c (find_best_addr): Declare p and found_better only if needed. * dbxout.c (dbxout_continue): Define only if DBX_CONTIN_LENGTH > 0. * dwarfout.c (string_length_attribute): #if 0 away. * function.c (expand_function_end): Define varible blktramp only if needed. * jump.c (find_insert_position): Define only if !HAVE_cc0. * loop.c (combine_givs_p): Define variable tem only if needed. * real.c: Comment out unused functions eabs, eround, e{24,53,64,113}toasc and eiinfin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19998 138bc75d-0d04-0410-961f-82ee72b054a4
* * Global CSE and constant/copy propagation.law1998-05-201-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (OBJS): Add gcse.o (STAGESTUFF): Add *.gcse. (gcse.o): Add dependencies. (mostlyclean): Remove *.gcse and */*.gcse. * gcse.c: New file. * loop.c (loop_optimize): Move call to init_alias_analysis. * recog.c (validate_replace_src): New function. * toplev.c (gcse_dump): New global variable. (flag_gcse, gcse_time): Likewise. (compile_file): Initialize gcse_time and clean out the gcse dump file if necessary. (rest_of_compilation): Call gcse_main as requested. Dump RTL after gcse if requested. (main): Enable gcse for -O2 and above. Handle -dG. Enable gcse dumps for -da. * gcc.texi: Add gcse related internal documentation. * invoke.texi: Note new command line options for gcse. * tm.texi: Document AVOID_CCMODE_COPIES. * mips.h (AVOID_CCMODE_COPIES): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19901 138bc75d-0d04-0410-961f-82ee72b054a4
* Patch from Bill Moyer.wilson1998-05-151-1/+6
| | | | | | | | * loop.c (basic_induction_var): Added test preventing CCmode parameter passed to convert_modes(). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19779 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud