summaryrefslogtreecommitdiff
path: root/gcc/gcse.c
Commit message (Collapse)AuthorAgeFilesLines
* * gcse.c (expr_equiv_p): Replace expressions that are known tokazu2003-06-271-4/+2
| | | | | | | be 0 with 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68601 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (store_killed_in_insn): Fix.rakdver2003-06-191-2/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68230 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (fis_get_condition): Make it a global function.kazu2003-06-121-2/+1
| | | | | | | | * reload1.c (reload_cse_move2add): Detect implicit sets. * rtl.h: Add a prototype for fis_get_condition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67814 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (cprop_jump): Make use of REG_EQUAL notes on bothsayle2003-05-211-15/+49
| | | | | | | | | | | | | | | setcc and jump, if they exist. If substituted instruction fails to validate, store current effort in a REG_EQUAL note. (cprop_insn): Don't attempt further substitutions if the current instruction has been deleted. (local_cprop_pass): Likewise. * jump.c (redirect_jump): Also update REG_EQUAL note, if one is attached to the jump instruction. (invert_jump): Delete REG_EQUAL note on jump, if one exists. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67054 138bc75d-0d04-0410-961f-82ee72b054a4
* PR opt/8705danglin2003-04-251-0/+9
| | | | | | | | | | * gcse.c (try_replace_reg): On a successful substitution of a constant into a single set, try to simplify the source of the set. * loop.c (scan_loop): Don't try to optimize a MODE_CC set with a constant source. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66060 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (compute_ld_motion_mems): For MEM destinations, onlyhp2003-04-181-10/+15
| | | | | | | | | | consider those to be movable where the source matches want_to_gcse_p. (update_ld_motion_stores): In comment, refer to compute_ld_motion_mems for validity of replacement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65766 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (replace_store_insn): Use single_set.amylaar2003-04-071-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65339 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c (find_base_term): Export.rakdver2003-04-051-16/+14
| | | | | | | | | | * rtl.h (find_base_term): Declare. * gcse.c (find_moveable_store): Test for flag_non_call_exceptions instead of flag_exceptions. Move test for parameter passing ... (store_killed_in_insn): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65272 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/10157ebotcazou2003-04-031-28/+28
| | | | | | | | | | | | | | | | * gcse.c (can_copy_p): Rename it to can_copy. (can_copy_init_p): Remove. (compute_can_copy): Use can_copy instead of can_copy_p. (can_copy_p): New exported function. Call compute_can_copy. (hash_scan_set): Use it. (gcse_main): Don't call compute_can_copy. (bypass_jumps): Don't call compute_can_copy. * rtl.h (can_copy_p): Declare. * loop.c (scan_loop): Don't move the source and add a reg-to-reg copy if the mode doesn't support copy operations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65210 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/9974sayle2003-04-011-4/+50
| | | | | | | | | | | | * gcse.c (reg_killed_on_egde): New function to test whether the given reg is overwritten by any instruction queued on an edge. (bypass_block): Ignore substitutions killed on incoming edges. Don't bypass outgoing edges that have queued instructions. * gcc.c-torture/execute/20030401-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65148 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (struct ls_expr): Added pattern_regs field.rakdver2003-04-011-204/+383
| | | | | | | | | | | | | | | | | | | | | | | | | | | (ldst_entry): Initialize it. (extract_mentioned_regs, extract_mentioned_regs_helper): New. (store_ops_ok): Use regs precomputed by them. (find_loads, store_killed_in_insn, load_kills_store): Change return type to bool. (store_killed_before, store_killed_after): Take position of register set in account. (reg_set_info): Store position of the setter. (gcse_main): Enable store motion. (mems_conflict_for_gcse_p): Enable load motion of non-symbol mems. (pre_insert_copy_insn, update_ld_motion_stores, insert_store): Prevent rtl sharing. (simple_mem): Enable store motion of non-symbol mems. (regvec): Type changed. (LAST_AVAIL_CHECK_FAILURE): New. (compute_store_table_current_insn): New. (build_store_vectors): Computation of availability and anticipatability moved ... (compute_store_table, find_moveable_store): ... here. (delete_store): Remove senseless comment. (store_motion): Reorganize. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65141 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (simple_mem): Return false for floating-point accessesrsandifo2003-03-311-0/+3
| | | | | | | if flag_float_store is true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65076 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (gcse_constant_p): New function to identify constantssayle2003-03-311-9/+27
| | | | | | | | | | | | | | suitable for constant propagation, including COMPARE with two integer constant arguments. (hash_scan_set): Use gcse_constant_p. (find_avail_set): Likewise. (cprop_insn): Likewise. (do_local_cprop): Likewise. (find_implicit_sets): Likewise. (find_bypass_set): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65075 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (bypass_block, bypass_conditional_jumps): Do not createrakdver2003-03-081-0/+17
| | | | | | | | | | irreducible loops. * loop-unroll.c (unroll_loop_runtime_iterations): Update irreducible loops info correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63980 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (cprop_jump): Revert the 2003-02-23 change.kazu2003-02-251-20/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63420 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (cprop_jump): Use the REG_EQUAL note if available.kazu2003-02-231-6/+20
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63332 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (bypass_block): Use BLOCK_FOR_INSN for resolving LABEL_REFs.rth2003-02-151-3/+6
| | | | | | | (bypass_conditional_jumps): Accept computed_jump_p insns as well. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62945 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (lookup_set): Remove unused argument PAT. Updaterth2003-02-121-18/+8
| | | | | | | both callers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62759 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (local_cprop_find_used_regs): New.rth2003-02-071-2/+50
| | | | | | | (local_cprop_pass): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62555 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (implicit_sets): New.rth2003-02-071-1/+131
| | | | | | | | | | (compute_hash_table_work): Include them in hash table. (find_implicit_sets, fis_get_condition): New. (one_cprop_pass): Allocate and free implicit_sets; call find_implicit_sets before building hash table. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62533 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (constprop_register): Check NEXT_INSN (insn) != NULL.zlomek2003-01-271-0/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61884 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (bypass_last_basic_block): New global variable.sayle2003-01-251-5/+22
| | | | | | | | | | (bypass_block): Use redirect_edge_and_branch_force to redirect fall-through edges. Use bypass_last_basic_block to determine which blocks have valid PRE information. (bypass_conditional_jumps): Initialize bypass_last_basic_block. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61800 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (local_cprop_pass): Update reg_sets table when needed.hubicka2003-01-251-1/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61799 138bc75d-0d04-0410-961f-82ee72b054a4
* PR opt/8492hubicka2003-01-251-1/+11
| | | | | | | * gcse.c (one_cprop_pass): Delete unreachable blocks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61798 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/8423sayle2003-01-231-2/+5
| | | | | | | | | | | | | | | | | | | | * cse.c (fold_rtx): Only eliminate a CONSTANT_P_RTX to 1 when its argument is constant, or 0 if !flag_gcse. * simplify-rtx.c (simplify_rtx): Convert CONSTANT_P_RTX to 1 if it's argument is constant. * gcse.c (want_to_gcse_p): Ignore CONSTANT_P_RTX nodes. (hash_scan_set): Don't record CONSTANT_P_RTX expressions. (do_local_cprop): Don't propagate CONSTANT_P_RTX constants. * builtins.c (purge_builtin_constant_p): New function to force instantiation of any remaining CONSTANT_P_RTX nodes. * rtl.h (purge_builtin_constant_p): Prototype here. * toplev.c (rest_of_compilation): Invoke purge_builtin_constant_p pass after GCSE and before loop. (flag_gcse): No longer static. * flags.h (flag_gcse): Prototype here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61642 138bc75d-0d04-0410-961f-82ee72b054a4
* * et-forest.c: Fix comment typos.kazu2003-01-171-14/+14
| | | | | | | | | | | | | | | | | | | * et-forest.h: Likewise. * except.c: Likewise. * expr.c: Likewise. * flags.h: Likewise. * flow.c: Likewise. * gcc.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * genautomata.c: Likewise. * gengtype.c: Likewise. * genrecog.c: Likewise. * global.c: Likewise. * gthr-rtems.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61443 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (one_cprop_pass): Change function arguments to take bothsayle2003-01-161-11/+118
| | | | | | | | | | | | | | | | cprop_jumps and bypass_jumps flags instead of just alter_jumps. (gcse_main): Update calls to one_cprop_pass, disabling bypassing. (bypass_jumps): New function to perform separate jump bypassing pass. * rtl.h (bypass_jumps): Add function prototype. * timevar.def (TV_BYPASS): New timing variable. * toplev.c (enum dump_file_index): Add new entry DFI_bypass. (dump_file): New entry for the bypass RTL dump file. (rest_of_compilation): Insert new jump bypassing optimization pass after loop. * doc/passes.texi: Document new pass. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61374 138bc75d-0d04-0410-961f-82ee72b054a4
* * cselib.c (cselib_current_insn_in_libcall): New static variable.hubicka2003-01-071-0/+3
| | | | | | | | | | | (new_elt_loc_list, cselib_process_insn, cselib_init): Keep track on whether we are inside libcall. * cselib.h (elt_loc_list): Add in_libcall. * gcse.c (do_local_cprop): Do not copy propagate using insns in libcalls. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61023 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge basic-improvements-branch to trunkzack2002-12-161-6/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60174 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (gcse_emit_move_after): Correct typo in REG_EQUAL note.sayle2002-11-191-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59271 138bc75d-0d04-0410-961f-82ee72b054a4
* PR opt/8165rth2002-10-141-10/+4
| | | | | | | | * gcse.c (adjust_libcall_notes): Revert last change. * simplify-rtx.c (simplify_replace_rtx): Handle LO_SUM. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58130 138bc75d-0d04-0410-961f-82ee72b054a4
* PR opt/8165rth2002-10-111-6/+15
| | | | | | | | * gcse.c (adjust_libcall_notes): Also adjust notes for INSN. * gcc.c-torture/execute/20021011-1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58071 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__.hubicka2002-09-301-2/+9
| | | | | | | | | * gcse.c (cprop_jump): Check that the register has not been modified (cprop_jump): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57648 138bc75d-0d04-0410-961f-82ee72b054a4
* * dbxout.c: Follow spelling conventions.kazu2002-09-221-31/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * defaults.h: Likewise. * df.c: Likewise. * diagnostic.h: Likewise. * doloop.c: Likewise. * dwarf2out.c: Likewise. * dwarfout.c: Likewise. * emit-rtl.c: Likewise. * except.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * flags.h: Likewise. * flow.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * genconfig.c: Likewise. * genrecog.c: Likewise. * ggc-page.c: Likewise. * ggc.h: Likewise. * global.c: Likewise. * gthr-win32.h: Likewise. * integrate.c: Likewise. * jump.c: Likewise. * langhooks.c: Likewise. * langhooks.h: Likewise. * line-map.h: Likewise. * local-alloc.c: Likewise. * longlong.h: Likewise. * loop.c: Likewise. * loop.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57406 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (adjust_libcall_notes): New function.amylaar2002-08-131-6/+72
| | | | | | | (do_local_cprop): Use it. Add fourth parameter. Changed caller. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56252 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (expr_hash_table_size, n_exprs, set_hash_table_size,rakdver2002-08-011-234/+191
| | | | | | | | | | | | | | | | | | | | | | | | | n_sets): Removed. (expr_hash_table, set_hash_table): Type changed to ... (struct hash_table): New type. (hash_scan_insn, hash_scan_set, hash_scan_clobber, hash_scan_call, insert_expr_in_table, insert_set_in_table, compute_hash_table, dump_hash_table, lookup_expr, lookup_set, compute_local_properties, compute_ae_gen, compute_ae_kill): Modified to pass the table explicitly. (alloc_set_hash_table, alloc_expr_hash_table): Merged to ... (alloc_hash_table): New. (free_set_hash_table, free_expr_hash_table): Merged to ... (free_hash_table): New. (compute_set_hash_table, compute_expr_hash_table): Merged to ... (compute_hash_table_work): New. (classic_gcse, one_classic_gcse_pass, compute_cprop_data, find_avail_set, one_cprop_pass, find_bypass_set, compute_pre_data, pre_edge_insert, pre_insert_copies, pre_delete, pre_gcse, one_pre_gcse_pass, compute_transpout, compute_code_hoist_vbeinout, hoist_code, one_code_hoisting_pass, trim_ld_motion_mems): Altered due to changed type of hash tables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55940 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c: Fix comment typos.kazu2002-07-301-1/+1
| | | | | | | | * gcse.c: Likewise. * reload1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55876 138bc75d-0d04-0410-961f-82ee72b054a4
* * collect2.c (SYMBOL__MAIN): Remove.neil2002-07-251-7/+2
| | | | | | | | * gcse.c (obstack_chunk_alloc): Remove. (gcse_alloc): Fix to count allocated bytes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55755 138bc75d-0d04-0410-961f-82ee72b054a4
* * genautomata.c (VLA_HWINT_SHORTEN, VLA_HWINT_LAST): Remove.neil2002-07-231-5/+0
| | | | | | | | | | | | | | * df.c (HANDLE_SUBREG, FOR_EACH_BB_IN_BITMAP_REV, FOR_EACH_BB_IN_SBITMAP): Remove. * gcse.c (NEVER_SET, FOLLOW_BACK_EDGES): Remove. * haifa-sched.c (DONE_PRIORITY, MAX_PRIORITY, TAIL_PRIORITY, LAUNCH_PRIORITY, DONE_PRIORITY_P, LOW_PRIORITY_P): Remove. * loop.c (PREFETCH_BLOACK_IN_LOOP_MIN, PREFETCH_LIMIT_TO_SIMULTANEOUS): Remove. * regrename.c (REGNO_MODE_OK_FOR_BASE_P): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55685 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-07-23 Jan Hubicka <jh@suse.cz>gerald2002-07-231-4/+3
| | | | | | | | | | | | * gcse.c (try_replace_reg): Use num_changes_pending. * recog.c (num_changes_pending): New function. (validate_replace_src): Use validate_repalce_src_group. (validate_replace_src_group): New. * recog.h (validate_repalce_src_group): New. (num_changes_pending): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55677 138bc75d-0d04-0410-961f-82ee72b054a4
* * defaults.h (obstack_chunk_alloc, obstack_chunk_free):neil2002-07-231-1/+3
| | | | | | | | | | | | | | | Default definition. * gcse.c: Don't define obstack_chunk_free. * collect2.c, conflict.c, df.c, diagnostic.c, fix-header.c, flow.c, gcc.c, genattrtab.c, genautomata.c, genflags.c, gensupport.c, integrate.c, loop.c, ra.c, read-rtl.c, regrename.c, reload1.c, reorg.c, tlink.c, tree.c, config/arm/arm.c, objc/objc-act.c: Don't define obstack macros. cp: * class.c, method.c, pt.c, search.c: Similarly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55665 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (do_local_cprop): Do not extend lifetimes of registers set byhubicka2002-07-211-1/+10
| | | | | | | do_local_cprop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55626 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c: Include cselib.hhubicka2002-07-201-46/+140
| | | | | | | | | | (constptop_register): Break out from ... (cprop_insn): ... here; kill basic_block argument. (do_local_cprop, local_cprop_pass): New functions. (one_cprop_pass): Call local_cprop_pass. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55615 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (hoist_expr_reaches_here_p): Stop once expr_bb is reached.hubicka2002-07-181-10/+15
| | | | | | | * gcse.c (try_replace_reg): Do not return false positives. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55553 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (gcse_emit_move_after): Use gen_move_insn to produce the move.law2002-06-281-7/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55087 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (hoist_code): Rewrite to only get list of dominatedlaw2002-06-271-10/+16
| | | | | | | | blocks once per BB. Also fix reversed test (by removing need for the test at all). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55031 138bc75d-0d04-0410-961f-82ee72b054a4
* Mon Jun 10 20:42:34 CEST 2002 Jan Hubicka <jh@suse.cz>hubicka2002-06-201-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * basic-block.h: Do not include et-forest.h (dominance_info): Declare as struct dominance-info. * cfglayout.c (cleanup_unconditional_jumps): Remove the edge before deleting block. * dominance.c (struct dominance_info): Define. (BB_NODE, SET_BB_NODE): New macros. (bb_hash_func, bb_eq_func): Kill. (calculate_dominace_info, free_dominacne_info, set_immediate_dominator, nearest_common_dominator, dominated_by_p, recount_dominator, add_to_dominance_info, delete_from_dominance_info): update for new representation. (get_dominated_by, redirect_immediate_dominators): Rewrite using enumerate_sons. * ifcvt.c (process_double_test_block, merge_if_block, find_cond_trap, find_if_case_1, find_if_case_2): Remove killed blocks from dominance structure. * et-forest.h: Update copyright; revamp all function to operate on nodes (et_forest_value): Kill. (et_forest_enumerate_sons, et_forest_node_value): New. * et-forest.c: Update copyright. * et-forest.h: Update copyright; revamp all function to operate on nodes (et_forest_value): Kill. (et_forest_enumerate_sons, et_forest_node_value): New. Thu Jun 6 22:43:43 CEST 2002 Jan Hubicka <jh@suse.cz> * basic-block.h: Inlude et-forest.h (basic_block_def): Kill dominator. (dominance_info): New type. (loops): Use dominace_info. (dominace handling functions): Take dominace_info as argument instead of bitmaps. (create_preheader): Likewise. * cfg.c (entry_exit_blocks): Kill dominator. (dump_flow_info): Do not dump dominators. * cfglayout.c (cleanup_unconditonal_jumps): Delete deleted block from dominators. * cfgloop.c (flow_pre_header_find): Use dominacne_info. (flow_loops_pre_header_scan, make_forwarder_block, canonicale_loop_headers, flow_loops_find): Likewise. * dominance.c: Include error.h (idoms_to_doms): Kill. (bb_hash_func, bb_eq_func): New static functions. (debug_dominace_info): New global function. (calculate_dominance_info): Use new et forest structure. (free_dominace_info, get_immediate_dominator, set_immediate_dominator, get_dominated_by, redirect_immediate_dominators, nearest_common_dominator, dominated_by_p, verify_dominators, recount_dominator, iterate_fix_dominators, add_to_dominace_info, delete_from_dominance_info): New global functions. * gcse.c (domnators): CHange to dominance_info. (alloc_hoist_mem): Do not alloc dominators (free_code_hoist_mem): Use free_dominance_info. (compute_code_hoist_data): Use dominance_info. (hoist_code): Likewise. * ifcvt.c (post_dominators): Likewise. (find_if_case_2, if_convert): Likewise. * predict.c (process_note_predictions, process_note_prediction, estimate-probability): Likewise. * sched-rgn.c (find_rgns, init_regions): Likewise. * ssa-dce.c (find_all_control_dependences, fint_control_depemndence, find_pdom, delete_insn_bb, ssa_eliminate_dead_code): Likewise. * ssa.c (compute_dominance_frontiers_1, rename_block, rename_registers, find_evaluations, convert_to_ssa): Likewise. * ssa.h (compute_dominance_frontiers): Likewise. Thu Jun 6 22:57:34 CEST 2002 Pavel Nejedly <bim@atrey.karlin.mff.cuni.cz> * Makefile.in (et-forest.c): Add. * et-forest.c: New file. * at-forest.h: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54843 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (delete_null_pointer_checks_1): Inform caller if anylaw2002-06-141-7/+16
| | | | | | | | | | | | | null pointer checks were eliminated. Update prototype. (delete_null_pointer_checks): Similarly. * rtl.h (delete_null_pointer_checks): Update prototype. * toplev.c (rest_of_compilation): Only run cleanup_cfg if delete_null_pointer_checks deletes one or more null pointer checks. Do not run cleanup_cfg before gcse, the CFG is accurate and optimized at that point.. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54617 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.c (x86_promote_QImode): Set for Athlonhubicka2002-06-111-0/+5
| | | | | | | | | | | | | | (x86_fast_prefix): New global variable. (x86_arch_always_fancy_math_387): Fix formating. * i386.h (x86_fast_prefix): Declare (TARGET_FAST_PREFIX): define. * i386.md (and to strict_low_part, HI to SI promoting splitter): Use new macro. * i386.h (RTX_COSTS): float_extend is not for free for SSE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54521 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-06-05 David S. Miller <davem@redhat.com>davem2002-06-111-20/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Delete SEQUENCE rtl usage outside of reorg and ssa passes. * rtl.h (gen_sequence, emit_insns, emit_insns_before, emit_insns_before_scope, emit_insns_after, emit_insns_after_scope): Delete declaration. * ada/misc.c (insert_code_for): Use emit_insn* instead of emit_insns_foo. * config/alpha/alpha.c (alpha_set_memflags_1): Abort on SEQUENCE. (alpha_set_memflags): Fix comment. (set_frame_related_p): Use get_insns instead of gen_sequence. * config/alpha/alpha.md (setjmp receiver splitter): Avoid emitting no insns. * config/arm/arm.c (arm_finalize_pic): Use get_insns instead of gen_sequence. (arm_gen_load_multiple, arm_gen_store_multiple): Likewise. * config/fr30/fr30.c (fr30_move_double): Likewise. * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_movstr): Likewise. * config/ia64/ia64.c (spill_restore_mem): Likewise. * config/ia64/ia64.md (conditional move spliiter): Avoid emitting no insns. * config/m32r/m32r.c (gen_split_move_double): Use get_insns instead of gen_sequence. * config/mips/mips.c (embedded_pic_fnaddr_reg): Likewise. (mips_expand_prologue, mips16_gp_pseudo_reg): Likewise. * config/sh/sh.c (sh_need_epilogue): Likewise. * config/sparc/sparc.md (current_function_calls_alloca, flat): New attributes. (setjmp pattern and split): Use them to avoid splitter which emits no RTL. * genattrtab.c (main): Emit include of function.h * config/stormy16/stormy16.c (xstormy16_split_cbranch): Use get_insns instead of gen_sequence. * config/cris/cris.c (cris_split_movdx): Likewise. * emit-rtl.c (emit_insns*): Kill. (try_split): Expect insn list instead of SEQUENCE. (make_jump_insn_raw, make_call_insn_raw): Fix comments. (emit_*insn*): Reimplement to work with INSN lists and PATTERNs. Make them abort if a SEQUENCE is given and RTL checking is enabled. (emit_*_scope): Don't forget to set scope on final insn. (gen_sequence): Move from here... * ssa.c (gen_sequence): To here as private function. * builtins.c (expand_builtin_apply_args): Use emit_insn_foo, fix comments. (expand_builtin_return, expand_builtin_mathfn): Likewise. (expand_builtin_strlen): Use get_insns instead of gen_sequence. (expand_builtin_saveregs): Use emit_insn_foo, fix comments. (expand_builtin_expect_jump): Use get_insns and fix comments. * calls.c (try_to_integrate): Use emit_insn_foo. (expand_call, emit_library_call_value_1): Likewise. * expr.c (emit_queue): Handle insn lists instead of SEQUENCE. (emit_move_insn_1): Use get_insns instead of gen_sequence. (expand_expr): Use emit_insn_foo. * cfgrtl.c (commit_one_edge_insertion): Use emit_insn_foo. * except.c (build_post_landing_pads): Likewise. * flow.c (attempt_auto_inc): Likewise. * stmt.c (expand_fixup, fixup_gotos, expand_nl_handler_label, expand_nl_goto_receivers, expand_decl_cleanup): Likewise. * function.c (fixup_var_refs_insn): Use get_insns instead of gen_sequence. (fixup_var_refs_1): Likewise and expect insn list from gen_foo. (fixup_memory_subreg): Use get_insns instead of gen_sequence. (fixup_stack_1, purge_addressof_1, expand_main_function, get_arg_pointer_save_area): Likewise. (optimize_bit_field, instantiate_virtual_regs_1, assign_parms, expand_function_end): Use emit_insn_foo. (record_insns, keep_stack_depressed): Work with insn list instead of SEQUENCE, fix comments. * ifcvt.c (noce_emit_store_flag, noce_try_store_flag, noce_try_store_flag_constants, noce_try_store_flag_inc, noce_try_store_flag_mask, noce_emit_cmove, noce_try_cmove_arith, noce_try_minmax, noce_try_abs): Use emit_insn_foo. (noce_process_if_block): Use get_insns instead of gen_sequence. * optabs.c (add_equal_note): Work with insn list, fix comments. (expand_binop): Expect insn list from GEN_FCN(), use emit_insn_foo. (expand_unop, expand_complex_abs, expand_unop_insn, expand_no_conflict_block): Likewise. (gen_move_insn): Use get_insns instead of gen_sequence. (gen_cond_trap): Likewise. * integrate.c (copy_rtx_and_substitute): Likewise. (emit_initial_value_sets): Use emit_insn_foo. * reload1.c (emit_output_reload_insns, emit_reload_insns): Likewise. (fixup_abnormal_edges): Avoid losing REG_NOTES more intelligently now that RTL generators give insn lists. * sibcall.c (replace_call_placeholder): Use emit_insn_foo. * doloop.c (doloop_modify, doloop_modify_runtime): Use get_insns instead of gen_sequence. (doloop_optimize): Work with insn lists instead of SEQUENCE rtl. * explow.c (emit_stack_save, emit_stack_restore): Use get_insns instead of gen_sequence. * loop.c (move_movables, emit_prefetch_instructions, gen_add_mult, check_dbra_loop, gen_load_of_final_value): Likewise. (loop_regs_update): Work with insn list instead of SEQUENCE rtl. (product_cheap_p): Likewise, and add commentary about RTL wastage here. * lcm.c (optimize_mode_switching): Use get_insns instead of gen_sequence. * profile.c (gen_edge_profiler): Likewise. * regmove.c (copy_src_to_dest): Likewise. * reg-stack.c (compensate_edge): Likewise and fix comment. * gcse.c (process_insert_insn): Likewise. (insert_insn_end_bb): Work with insn list instead of SEQUENCE rtl. * jump.c (delete_prior_computation): Update comment. * genemit.c (gen_expand, gen_split, main): Use get_insns instead of gen_sequence, update comments to match. * recog.c (peephole2_optimize): Work with insn lists instead of SEQUENCE rtl. * sched-vis.c (print_pattern): Abort on SEQUENCE. * unroll.c (unroll_loop, find_splittable_givs, final_giv_value): Use get_insns instead of gen_sequence. (copy_loop_body): Likewise and don't emit dummy NOTE. * genrecog.c: Don't mention SEQUENCE rtl in comments. * combine.c (try_combine): Expect insn lists from split generator. * reorg.c (relax_delay_slots): Emit SEQUENCE into insn list by hand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54497 138bc75d-0d04-0410-961f-82ee72b054a4