diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-09-07 08:14:10 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-09-07 08:14:10 +0000 |
commit | 8d1d0deea09d3c4ae0c3953ac4a4cb142d712e22 (patch) | |
tree | 13b5209c9e95d149333eff4bc29b4557accb0f57 /gcc | |
parent | 704aab3e3fa5514458136706d50e6a67e534364b (diff) | |
download | gcc-8d1d0deea09d3c4ae0c3953ac4a4cb142d712e22.zip gcc-8d1d0deea09d3c4ae0c3953ac4a4cb142d712e22.tar.gz gcc-8d1d0deea09d3c4ae0c3953ac4a4cb142d712e22.tar.bz2 |
mips.c (mips_base_move_loop_invariants): New variable.
gcc/
* config/mips/mips.c (mips_base_move_loop_invariants): New variable.
(mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
to 0 for MIPS16.
(override_options): Set mips_base_move_loop_invariants.
From-SVN: r128232
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 12 |
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ab560c4..5d527d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2007-09-07 Richard Sandiford <richard@codesourcery.com> + * config/mips/mips.c (mips_base_move_loop_invariants): New variable. + (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set + to 0 for MIPS16. + (override_options): Set mips_base_move_loop_invariants. + +2007-09-07 Richard Sandiford <richard@codesourcery.com> + * config/mips/mips.opt (mcode-readable=): Move to keep list alphabetical. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 3655618..a4771f7 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -626,6 +626,7 @@ static bool mips_base_mips16; /* Similar copies of option settings. */ static int mips_base_schedule_insns; /* flag_schedule_insns */ static int mips_base_reorder_blocks_and_partition; /* flag_reorder... */ +static int mips_base_move_loop_invariants; /* flag_move_loop_invariants */ static int mips_base_align_loops; /* align_loops */ static int mips_base_align_jumps; /* align_jumps */ static int mips_base_align_functions; /* align_functions */ @@ -5273,6 +5274,7 @@ mips_set_mips16_mode (int mips16_p) align_functions = mips_base_align_functions; flag_schedule_insns = mips_base_schedule_insns; flag_reorder_blocks_and_partition = mips_base_reorder_blocks_and_partition; + flag_move_loop_invariants = mips_base_move_loop_invariants; flag_delayed_branch = mips_flag_delayed_branch; if (mips16_p) @@ -5285,9 +5287,16 @@ mips_set_mips16_mode (int mips16_p) flag_schedule_insns = 0; /* Don't do hot/cold partitioning. The constant layout code expects - the whole function to be in a single section. */ + the whole function to be in a single section. */ flag_reorder_blocks_and_partition = 0; + /* Don't move loop invariants, because it tends to increase + register pressure. It also introduces an extra move in cases + where the constant is the first operand in a two-operand binary + instruction, or when it forms a register argument to a functon + call. */ + flag_move_loop_invariants = 0; + /* Silently disable -mexplicit-relocs since it doesn't apply to mips16 code. Even so, it would overly pedantic to warn about "-mips16 -mexplicit-relocs", especially given that @@ -5804,6 +5813,7 @@ override_options (void) mips_base_target_flags = target_flags; mips_base_schedule_insns = flag_schedule_insns; mips_base_reorder_blocks_and_partition = flag_reorder_blocks_and_partition; + mips_base_move_loop_invariants = flag_move_loop_invariants; mips_base_align_loops = align_loops; mips_base_align_jumps = align_jumps; mips_base_align_functions = align_functions; |