aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2006-11-04 08:36:45 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2006-11-04 08:36:45 +0000
commita52b023a5f0316a63cd52c45cd4cfd11794d40ca (patch)
treeba024c11cf4d0fba9de80471ac1eedc16e891dca /gcc/passes.c
parentc7cc12b01d5c608fb214cb7a69e7f40a35ac8fe8 (diff)
downloadgcc-a52b023a5f0316a63cd52c45cd4cfd11794d40ca.zip
gcc-a52b023a5f0316a63cd52c45cd4cfd11794d40ca.tar.gz
gcc-a52b023a5f0316a63cd52c45cd4cfd11794d40ca.tar.bz2
fwprop.c: New file.
2006-11-03 Paolo Bonzini <bonzini@gnu.org> Steven Bosscher <stevenb.gcc@gmail.com> * fwprop.c: New file. * Makefile.in: Add fwprop.o. * tree-pass.h (pass_rtl_fwprop, pass_rtl_fwprop_with_addr): New. * passes.c (init_optimization_passes): Schedule forward propagation. * rtlanal.c (loc_mentioned_in_p): Support NULL value of the second parameter. * timevar.def (TV_FWPROP): New. * common.opt (-fforward-propagate): New. * opts.c (decode_options): Enable forward propagation at -O2. * gcse.c (one_cprop_pass): Do not run local cprop unless touching jumps. * cse.c (fold_rtx_subreg, fold_rtx_mem, fold_rtx_mem_1, find_best_addr, canon_for_address, table_size): Remove. (new_basic_block, insert, remove_from_table): Remove references to table_size. (fold_rtx): Process SUBREGs and MEMs with equiv_constant, make simplification loop more straightforward by not calling fold_rtx recursively. (equiv_constant): Move here a small part of fold_rtx_subreg, do not call fold_rtx. Call avoid_constant_pool_reference to process MEMs. * recog.c (canonicalize_change_group): New. * recog.h (canonicalize_change_group): New. * doc/invoke.texi (Optimization Options): Document fwprop. * doc/passes.texi (RTL passes): Document fwprop. Co-Authored-By: Steven Bosscher <stevenb.gcc@gmail.com> From-SVN: r118475
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index 46e4756..9d585d3 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -635,6 +635,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_instantiate_virtual_regs);
NEXT_PASS (pass_jump2);
NEXT_PASS (pass_cse);
+ NEXT_PASS (pass_rtl_fwprop);
NEXT_PASS (pass_gcse);
NEXT_PASS (pass_jump_bypass);
NEXT_PASS (pass_rtl_ifcvt);
@@ -645,6 +646,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_loop2);
NEXT_PASS (pass_web);
NEXT_PASS (pass_cse2);
+ NEXT_PASS (pass_rtl_fwprop_addr);
NEXT_PASS (pass_life);
NEXT_PASS (pass_combine);
NEXT_PASS (pass_if_after_combine);