aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@superh.com>2003-08-07 19:35:52 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2003-08-07 20:35:52 +0100
commit97b3d0f016d4ce4b973cda213b0cd6835eca6b15 (patch)
tree0602721444e6f5481721d31159c40410647ac20a
parent3adee96c46c8f70fb52de86775c1524654f10f22 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/sh/sh.c4
-rw-r--r--gcc/config/sh/sh.h4
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, \
}