From 3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 18 Feb 2001 23:39:28 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/config/sparc/sparc.c | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a388b58daab..e35a5af6f55 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ Sun Feb 18 15:45:17 2001 Richard Kenner + * 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 a84b095cb7d..2072fec8932 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) -- 2.30.2