aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-03-13 14:47:54 -0700
committerJeff Law <law@gcc.gnu.org>1993-03-13 14:47:54 -0700
commit45586a95c2454499681930fd87a5e7d3db6bbc34 (patch)
tree4143e034ccec7f43cec9c385845464c542565142 /gcc
parentfabf77509211dabd11f2f06b39115c7f4e4db735 (diff)
downloadgcc-45586a95c2454499681930fd87a5e7d3db6bbc34.zip
gcc-45586a95c2454499681930fd87a5e7d3db6bbc34.tar.gz
gcc-45586a95c2454499681930fd87a5e7d3db6bbc34.tar.bz2
pa.c (eligible_for_epilogue_delay): Insns which access %r2 can not be used to...
* pa.c eligible_for_epilogue_delay): Insns which access %r2 can not be used to fill the epilogue's delay slot. From-SVN: r3727
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 2928b89..84d1e50 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -2066,6 +2066,13 @@ eligible_for_epilogue_delay (trial, slot)
return 0;
if (get_attr_length (trial) != 1)
return 0;
+
+ /* The epilogue clobbers whatever value is in %r2 before the
+ delay slot executes, so insns which use %r2 can not be
+ used to fill the epilogue's delay slot. */
+ if (refers_to_regno_p (2, 3, PATTERN (trial), NULL_PTR))
+ return 0;
+
return (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_TRUE);
}