diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2002-06-13 21:31:58 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2002-06-13 22:31:58 +0100 |
commit | 9d7ed8065dfc4e1d9c73872dc5af076bbb932ea1 (patch) | |
tree | 25a2eb6c231af3625be5d5fed4dd5fc41144cdf0 /gcc | |
parent | b66377c173ecd444f4fb4f9737ee10a97084ad9a (diff) | |
download | gcc-9d7ed8065dfc4e1d9c73872dc5af076bbb932ea1.zip gcc-9d7ed8065dfc4e1d9c73872dc5af076bbb932ea1.tar.gz gcc-9d7ed8065dfc4e1d9c73872dc5af076bbb932ea1.tar.bz2 |
sh.c (calc_live_regs): Don't use initial_value optimization for PR_MEDIA_REG.
* config/sh/sh.c (calc_live_regs): Don't use initial_value
optimization for PR_MEDIA_REG.
From-SVN: r54600
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 19 |
2 files changed, 17 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5270c8..05b3a05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 13 22:29:40 2002 J"orn Rennecke <joern.rennecke@superh.com> + + * config/sh/sh.c (calc_live_regs): Don't use initial_value + optimization for PR_MEDIA_REG. + 2002-06-13 Neil Booth <neil@daikokuya.demon.co.uk> * cpphash.h (_cpp_lex_identifier_trad): Remove. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index edd4c49..a9c2e82 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -4362,7 +4362,6 @@ calc_live_regs (count_ptr, live_regs_mask) int reg; int count; int interrupt_handler; - rtx pr_initial; int pr_live; if ((lookup_attribute @@ -4385,12 +4384,18 @@ calc_live_regs (count_ptr, live_regs_mask) target_flags &= ~FPU_SINGLE_BIT; break; } - pr_initial = has_hard_reg_initial_val (Pmode, - TARGET_SHMEDIA - ? PR_MEDIA_REG : PR_REG); - pr_live = (pr_initial - ? REGNO (pr_initial) != (TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG) - : regs_ever_live[TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG]); + /* PR_MEDIA_REG is a general purpose register, thus global_alloc already + knows how to use it. That means the pseudo originally allocated for + the initial value can become the PR_MEDIA_REG hard register, as seen for + execute/20010122-1.c:test9. */ + if (TARGET_SHMEDIA) + pr_live = regs_ever_live[PR_MEDIA_REG]; + else + { + rtx pr_initial = has_hard_reg_initial_val (Pmode, PR_REG); + pr_live = (pr_initial + ? REGNO (pr_initial) != (PR_REG) : regs_ever_live[PR_REG]); + } /* Force PR to be live if the prologue has to call the SHmedia argument decoder or register saver. */ if (TARGET_SHCOMPACT |