diff options
| author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-18 23:39:28 +0000 |
|---|---|---|
| committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-18 23:39:28 +0000 |
| commit | e4e07cc667cdc061da230689d3ae024b532d2acb (patch) | |
| tree | 485167bf51d20fe68e51b2e086db1aaa3e8688b4 | |
| parent | fe7a7aa01baec98426828ab514cbb3b355ecfde6 (diff) | |
| download | ppe42-gcc-e4e07cc667cdc061da230689d3ae024b532d2acb.tar.gz ppe42-gcc-e4e07cc667cdc061da230689d3ae024b532d2acb.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39854 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | 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 <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 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) |

