summaryrefslogtreecommitdiff
path: root/gcc/cprop.c
Commit message (Collapse)AuthorAgeFilesLines
* 2012-04-02 Richard Guenther <rguenther@suse.de>rguenth2012-04-021-1/+1
| | | | | | | | | PR rtl-optimization/52800 * cprop.c (execute_rtl_cprop): Call cleanup_cfg with CLEANUP_CFG_CHANGED. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186081 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-03-28 Richard Guenther <rguenther@suse.de>rguenth2012-03-281-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * loop-init.c (loop_optimizer_init): If loops are preserved perform incremental initialization of required loop features. (loop_optimizer_finalize): If loops are to be preserved only clean up optional loop features. (rtl_loop_done): Forcefully free loops here. * cgraph.c (cgraph_release_function_body): Forcefully free loops. * cfgexpand.c (expand_gimple_cond): Properly add new basic-blocks to existing loops. (construct_init_block): Likewise. (construct_exit_block): Likewise. (gimple_expand_cfg): Clear LOOP_CLOSED_SSA loop state. Cleanup the CFG after expanding. * cfgloop.c (verify_loop_structure): Calculate or verify dominators. If we needed to calculate them, free them afterwards. * tree-pass.h (PROP_loops): New define. * tree-ssa-loop.c (pass_tree_loop_init): Provide PROP_loops. * basic-block.h (CLEANUP_CFG_CHANGED): New. * cfgcleanup.c (merge_blocks_move): Protect loop latches. (cleanup_cfg): If we did something and have loops around, fix them up. * cse.c (rest_of_handle_cse_after_global_opts): Call cleanup_cfg with CLEANUP_CFG_CHANGED. * cfghooks.c (merge_blocks): If we merge a loop header into its predecessor, update the loop structure. (duplicate_block): If we copy a loop latch, adjust loop state to note we may have multiple latches. (delete_basic_block): Mark loops for fixup if we remove a loop. * cfganal.c (forwarder_block_p): Protect loop latches, headers and preheaders. * cfgrtl.c (rtl_can_merge_blocks): Protect loop latches. (cfg_layout_can_merge_blocks_p): Likewise. * cprop.c (bypass_block): If we create a loop with multiple entries, mark it for removal. * except.c (emit_to_new_bb_before): Add the new basic-block to existing loops. * tree-eh.c (lower_resx): Likewise. * omp-low.c (finalize_task_copyfn): Do not copy PROP_loops. (expand_omp_taskreg): Likewise. * tree-inline.c (initialize_cfun): Likewise. * tree-mudflap.c (add_bb_to_loop): Prototype. (mf_build_check_statement_for): Properly add new basic-blocks to existing loops. * tree-ssa-threadupdate.c (thread_block): Mark loops for fixup if we remove a loop. (thread_through_loop_header): Likewise. * trans-mem.c (tm_log_emit_save_or_restores): Properly add new basic-blocks to existing loops. (expand_transaction): Likewise. * Makefile.in (except.o): Add $(CFGLOOP_H). (expr.o): Likewise. (cgraph.o): Likewise. (cprop.o): Likewise. (cfgexpand.o): Likewise. (cfganal.o): Likewise. (trans-mem.o): Likewise. (tree-eh.o): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185913 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/50663ebotcazou2011-11-171-8/+48
| | | | | | | | | | | | | | | * cprop.c (implicit_set_indexes): New global variable. (insert_set_in_table): Add additional parameter and record implicit set information. (hash_scan_set): Add additional parameter and pass it to above. (hash_scan_insn): Pass false to hash_scan_set. (compute_hash_table_work): Pass true to hash_scan_set. (compute_cprop_data): Add implicit set to AVIN of block which the implicit set is recorded for. (one_cprop_pass): Handle implicit_set_indexes array. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181446 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c: Adjust outdated comments throughout.ebotcazou2011-11-111-74/+68
| | | | | | | | | | | | | | | | | | | | | | (hash_scan_set): Rename PAT parameter into SET. (cprop_pavloc): Rename into... (cprop_avloc): ...this. (cprop_absaltered): Rename into... (cprop_kill): ...this. (alloc_cprop_mem): Adjust for above renaming. (free_cprop_mem): Likewise. (compute_cprop_data): Likewise. (compute_local_properties): Rename TRANSP parameter into KILL and adjust throughout. Rework comments. (try_replace_reg): Fix long line. (cprop_jump): Likewise. (constprop_register): Fix prototype and take INSN last. (cprop_insn): Adjust calls to above function. Fix long lines. (bypass_block): Likewise. (one_cprop_pass): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181289 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/50448gjl2011-11-051-2/+14
| | | | | | | | | * cprop.c (try_replace_reg): Also try to replace uses of FROM that appear in SET_DEST. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181011 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-07-12 Andrew Pinski <pinskia@gmail.com>pinskia2011-07-121-1/+1
| | | | | | | | | | | | | | | PR rtl-opt/49474 * cprop.c (find_implicit_sets): Correct the condition. 2011-07-12 Andrew Pinski <pinskia@gmail.com> PR rtl-opt/49474 * gcc.c-torture/compile/pr49474.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176213 138bc75d-0d04-0410-961f-82ee72b054a4
* dumping cleanup phase 1 -- Removing TODO_dump_funcdavidxl2011-06-141-2/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175051 138bc75d-0d04-0410-961f-82ee72b054a4
* Revert r174848,174849davidxl2011-06-091-5/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174864 138bc75d-0d04-0410-961f-82ee72b054a4
* Gator cleanupdavidxl2011-06-091-4/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174848 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c (local_cprop_pass): Don't set changed for debug insns.aoliva2011-06-061-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174700 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c (struct reg_use): Remove.steven2011-04-051-27/+31
| | | | | | | | | | | (reg_use_table): Make an array of RTX. (find_used_regs, constprop_register, local_cprop_pass, bypass_block): Simplify users of reg_use_table. (cprop_insn): Likewise. Iterate if copy propagation succeeded on one of the uses found by find_used_regs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171999 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/48441steven2011-04-051-2/+2
| | | | | | | * cprop.c (one_cprop_pass): Do not mark_oprs_set of deleted insns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171994 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c (struct expr): Split 'expr' field in 'dest' and 'src'.steven2011-04-041-161/+72
| | | | | | | | | | | | | | | | | | | (expr_equiv_p): Remove. (insert_set_in_table): Look at <dest, src> pair instead of expr. (hash_scan_set): Update call to insert_set_in_table. (dump_hash_table): Dump <dest, src> pair. (lookup_set): Simplify. Lookup <dest, src> pair. (compute_transp): Remove, fold heavily simplified code into... (compute_local_properties): ...here. Expect COMP and TRANSP unconditionally. (find_avail_set): Take set directly from struct expr. (find_bypass-set): Likewise. (bypass_block): Likewise. (cprop_insn): Likewise. Remove redundant INSN_P test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171947 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c (implicit_set_cond_p): Assume nothing about COND, movesteven2011-04-041-48/+94
| | | | | | | | | | | | | checks on form of COND from find_implicit_sets to here. (find_implicit_sets): Cleanup control flow. Split critical edges if it exposes implicit sets. Allocate/resize implicit_sets as necessary. (one_cprop_pass): Only delete unreachable blocks if local_cprop_pass changed something. Run df_analyze after find_implicit_sets if any edges were split. Do not allocate implicit_sets here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171946 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.steven2011-04-041-52/+28
| | | | | | | | | | | | | | | | | (gcse_obstack): Renamed to cprop_obstack. (GNEW, GNEWVEC, GNEWVAR): Remove. (gmalloc): Remove. (alloc_hash_table): Use XNEWVAR instead of GNEWVAR. (GOBNEW, GOBNEWVAR): Adjust for gcse_obstack renaming. (gcse_alloc): Likewise, and rename to cprop_alloc. (alloc_gcse_men, free_gcse_mem): Remove. (gcse_constant_p): Rename to cprop_constant_p, and adjust all callers. (compute_hash_table_work): Allocate and free reg_set_bitmap here. (one_cprop_pass): Likewise. Adjust for gcse_obstack renaming. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171945 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c (oprs_not_set_p): Remove.steven2011-04-041-104/+12
| | | | | | | | | | | | (mark_set, mark_clobber): Remove. (mark_oprs_set): Rewrite using DF_INSN_INFO_DEFS cache. (reg_not_set_p): New function. (find_avail_set): Use reg_not_set_p instead of oprs_not_set_p. (cprop_insn): Likewise. (cprop_jump): Use FOR_EACH_EDGE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171944 138bc75d-0d04-0410-961f-82ee72b054a4
* * cprop.c: Clean up hash table building.steven2011-03-311-175/+46
| | | | | | | | | | | | | | | | | | (reg_avail_info): Remove. (oprs_available_p): Remove. (record_last_reg_set_info): Remove. (record_last_set_info): Remove. (reg_available_p): New function. (gcse_constant_p): Do not treat unfolded conditions as constants. (make_set_regs_unavailable): New function. (hash_scan_set): Simplify with new reg_available_p. (compute_hash_table_work): Traverse insns stream only once. Do not compute reg_avail_info. Traverse insns in reverse order. Record implicit sets after recording explicit sets from the block. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171794 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in: New rule for cprop.o.steven2011-03-281-0/+2168
* gcse.c: Move constant/copy propagation to cprop.c. (compute_local_properties): Only handle expression tables. (hash_scan_set, compute_hash_table_work, alloc_hash_table,): Likewise. (one_pre_gcse_pass, one_code_hoisting_pass): Likewise. (hash_set, insert_set_in_table, gcse_constant_p, lookup_set, next_set, reset_opr_set_tables, oprs_not_set_p, mark_call, mark_set, mark_clobber, mark_oprs_set, alloc_cprop_mem, free_cprop_mem, compute_cprop_data, find_used_regs, try_replace_reg, find_avail_set, cprop_jump, constprop_register, cprop_insn, local_cprop_find_used_regs, do_local_cprop, local_cprop_pass, fis_get_condition, implicit_set_cond_p, find_implicit_sets, find_bypass_set, reg_killed_on_edge, bypass_block, bypass_conditional_jumps, one_cprop_pass, gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): Move to... * cprop.c: ...here. New file, constant/copy propagation for RTL moved from gcse.c to here with minor cleanups in duplicated code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171627 138bc75d-0d04-0410-961f-82ee72b054a4