aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-02-18 23:39:28 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-02-18 18:39:28 -0500
commit3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1 (patch)
tree485167bf51d20fe68e51b2e086db1aaa3e8688b4 /gcc
parent63c499dc554635235a4a2a7519f1fa0c2458913f (diff)
downloadgcc-3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1.zip
gcc-3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1.tar.gz
gcc-3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1.tar.bz2
sparc.c (eligible_for_epilogue_delay): Don't put assignments from FP constants sonce 'Y' output code can't handle it.
* config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put assignments from FP constants sonce 'Y' output code can't handle it. (eligible_for_sibcall_delay): Likewise. From-SVN: r39854
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/sparc/sparc.c12
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a388b58..e35a5af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
Sun Feb 18 15:45:17 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+ * config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put
+ assignments from FP constants sonce 'Y' output code can't handle it.
+ (eligible_for_sibcall_delay): Likewise.
+
* flow.c (print_rtl_and_abort_fcn): Renamed from print_rtl_and_abort.
Call fancy_abort directly, passing args.
(print_rtl_and_abort): Now a macro, like fancy_abort.
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index a84b095..2072fec 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2414,7 +2414,8 @@ eligible_for_epilogue_delay (trial, slot)
src = SET_SRC (pat);
/* This matches "*return_[qhs]i" or even "*return_di" on TARGET_ARCH64. */
- if (arith_operand (src, GET_MODE (src)))
+ if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+ && arith_operand (src, GET_MODE (src)))
{
if (TARGET_ARCH64)
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
@@ -2423,7 +2424,8 @@ eligible_for_epilogue_delay (trial, slot)
}
/* This matches "*return_di". */
- else if (arith_double_operand (src, GET_MODE (src)))
+ else if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+ && arith_double_operand (src, GET_MODE (src)))
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
/* This matches "*return_sf_no_fpu". */
@@ -2520,7 +2522,8 @@ eligible_for_sibcall_delay (trial)
src = SET_SRC (pat);
- if (arith_operand (src, GET_MODE (src)))
+ if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+ && arith_operand (src, GET_MODE (src)))
{
if (TARGET_ARCH64)
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
@@ -2528,7 +2531,8 @@ eligible_for_sibcall_delay (trial)
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (SImode);
}
- else if (arith_double_operand (src, GET_MODE (src)))
+ else if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
+ && arith_double_operand (src, GET_MODE (src)))
return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
else if (! TARGET_FPU && restore_operand (SET_DEST (pat), SFmode)