diff options
author | Richard Henderson <rth@redhat.com> | 2001-12-12 14:50:05 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-12-12 14:50:05 -0800 |
commit | 8582c27b18b4b930dc202ee851528377e2234348 (patch) | |
tree | bbc23bebdd972d2b44a70bb56df71f814ddfbac5 /gcc/toplev.c | |
parent | de76a39c6e0550ed9cfc87a5e9d112f7f8dbefd7 (diff) | |
download | gcc-8582c27b18b4b930dc202ee851528377e2234348.zip gcc-8582c27b18b4b930dc202ee851528377e2234348.tar.gz gcc-8582c27b18b4b930dc202ee851528377e2234348.tar.bz2 |
regrename.c (copyprop_hardreg_forward): New optimization.
* regrename.c (copyprop_hardreg_forward): New optimization.
(kill_value_regno, kill_value, init_value_data, kill_clobbered_value,
kill_set_value, kill_autoinc_value, copy_value, find_oldest_value_reg,
replace_oldest_value_reg, replace_oldest_value_addr,
replace_oldest_value_mem, copyprop_hardreg_forward_1,
debug_value_data, validate_value_data): New.
* rtl.h (copyprop_hardreg_forward): Declare.
* toplev.c (flag_cprop_registers): New.
(f_options): Add -fcprop-registers
(rest_of_compilation): Invoke it.
(parse_options_and_default_flags): Set it at -O1.
* doc/invoke.texi: Document it.
From-SVN: r47951
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index 6661500..d2c7ca0 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -427,6 +427,7 @@ int flag_reorder_blocks = 0; /* Nonzero if registers should be renamed. */ int flag_rename_registers = 0; +int flag_cprop_registers = 0; /* Nonzero for -pedantic switch: warn about anything that standard spec forbids. */ @@ -1083,6 +1084,8 @@ lang_independent_options f_options[] = N_("Reorder basic blocks to improve code placement") }, {"rename-registers", &flag_rename_registers, 1, N_("Do the register renaming optimization pass") }, + {"cprop-registers", &flag_cprop_registers, 1, + N_("Do the register copy-propagation optimization pass") }, {"common", &flag_no_common, 0, N_("Do not put uninitialized globals in the common section") }, {"inhibit-size-directive", &flag_inhibit_size_directive, 1, @@ -3280,12 +3283,15 @@ rest_of_compilation (decl) } #endif - if (optimize > 0 && flag_rename_registers) + if (flag_rename_registers || flag_cprop_registers) { timevar_push (TV_RENAME_REGISTERS); open_dump_file (DFI_rnreg, decl); - regrename_optimize (); + if (flag_rename_registers) + regrename_optimize (); + if (flag_cprop_registers) + copyprop_hardreg_forward (); close_dump_file (DFI_rnreg, print_rtl_with_bb, insns); timevar_pop (TV_RENAME_REGISTERS); @@ -4620,6 +4626,7 @@ parse_options_and_default_flags (argc, argv) flag_omit_frame_pointer = 1; #endif flag_guess_branch_prob = 1; + flag_cprop_registers = 1; } if (optimize >= 2) |