aboutsummaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2002-11-10 19:59:26 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2002-11-10 19:59:26 +0000
commit04989d158cc39ebcaf4fe5d3bb66500ab31fde1d (patch)
tree16d43ad70bb84e479c47f08124ac9ecff0a91304 /gcc/reg-stack.c
parentd898608275e56af65bf6b6ec6cba9a03a1a095df (diff)
downloadgcc-04989d158cc39ebcaf4fe5d3bb66500ab31fde1d.zip
gcc-04989d158cc39ebcaf4fe5d3bb66500ab31fde1d.tar.gz
gcc-04989d158cc39ebcaf4fe5d3bb66500ab31fde1d.tar.bz2
FOrgot to commit the file itself. Changelog entry is already at:
* reg-stack.c (compensate_edge): Fix sanity check. From-SVN: r58988
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 4d37cec..18bfeca 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2553,7 +2553,11 @@ compensate_edge (e, file)
abort ();
eh1:
+ /* We are sure that there is st(0) live, otherwise we won't compensate.
+ For complex return values, we may have st(1) live as well. */
SET_HARD_REG_BIT (tmp, FIRST_STACK_REG);
+ if (TEST_HARD_REG_BIT (regstack.reg_set, FIRST_STACK_REG + 1))
+ SET_HARD_REG_BIT (tmp, FIRST_STACK_REG + 1);
GO_IF_HARD_REG_EQUAL (regstack.reg_set, tmp, eh2);
abort ();
eh2: