diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2006-11-04 08:36:45 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2006-11-04 08:36:45 +0000 |
commit | a52b023a5f0316a63cd52c45cd4cfd11794d40ca (patch) | |
tree | ba024c11cf4d0fba9de80471ac1eedc16e891dca /gcc/rtlanal.c | |
parent | c7cc12b01d5c608fb214cb7a69e7f40a35ac8fe8 (diff) | |
download | gcc-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/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index b0a8161..8a7c914 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2837,10 +2837,15 @@ auto_inc_p (rtx x) int loc_mentioned_in_p (rtx *loc, rtx in) { - enum rtx_code code = GET_CODE (in); - const char *fmt = GET_RTX_FORMAT (code); + enum rtx_code code; + const char *fmt; int i, j; + if (!in) + return 0; + + code = GET_CODE (in); + fmt = GET_RTX_FORMAT (code); for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) { if (loc == &in->u.fld[i].rt_rtx) |