diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2003-08-07 19:35:52 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2003-08-07 20:35:52 +0100 |
commit | 97b3d0f016d4ce4b973cda213b0cd6835eca6b15 (patch) | |
tree | 0602721444e6f5481721d31159c40410647ac20a | |
parent | 3adee96c46c8f70fb52de86775c1524654f10f22 (diff) | |
download | gcc-97b3d0f016d4ce4b973cda213b0cd6835eca6b15.zip gcc-97b3d0f016d4ce4b973cda213b0cd6835eca6b15.tar.gz gcc-97b3d0f016d4ce4b973cda213b0cd6835eca6b15.tar.bz2 |
sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG.
* sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG.
* sh.c (calc_live_regs): Use sh_pr_n_sets to determine if pr
needs saving on SHmedia.
From-SVN: r70227
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 4 | ||||
-rw-r--r-- | gcc/config/sh/sh.h | 4 |
3 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d299f56..9568cca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-08-07 J"orn Rennecke <joern.rennecke@superh.com> + + * sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG. + * sh.c (calc_live_regs): Use sh_pr_n_sets to determine if pr + needs saving on SHmedia. + 2003-08-07 Ulrich Weigand <uweigand@de.ibm.com> * config/s390/s390.md: Replace all occurrences of \\t with \t. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 8128d47..d64d919 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -4848,7 +4848,7 @@ calc_live_regs (live_regs_mask) 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]; + pr_live = sh_pr_n_sets (); else { rtx pr_initial = has_hard_reg_initial_val (Pmode, PR_REG); @@ -4867,7 +4867,7 @@ calc_live_regs (live_regs_mask) has_call = TARGET_SHMEDIA ? ! leaf_function_p () : pr_live; for (count = 0, reg = FIRST_PSEUDO_REGISTER - 1; reg >= 0; reg--) { - if ((! TARGET_SHMEDIA && reg == PR_REG) + if (reg == (TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG) ? pr_live : (interrupt_handler && ! pragma_trapa) ? (/* Need to save all the regs ever live. */ diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index cc94be2..3ab2120 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -926,7 +926,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ Only the lower 32bits of R10-R14 are guaranteed to be preserved \ across SH5 function calls. */ \ 0, 0, 0, 0, 0, 0, 0, 1, \ - 1, 1, 0, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 0, 0, 0, 0, \ 0, 0, 0, 0, 1, 1, 1, 1, \ 1, 1, 1, 1, 0, 0, 0, 0, \ @@ -946,7 +946,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ /* XD registers. */ \ 1, 1, 1, 1, 1, 1, 0, 0, \ /*"gbr", "ap", "pr", "t", "mach", "macl", "fpul", "fpscr", */ \ - 1, 1, 0, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ /*"rap" */ \ 1, \ } |