diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-02-18 23:39:28 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-02-18 18:39:28 -0500 |
commit | 3ec6f1a939c4a20b81a0eb04b3355b9db094dfe1 (patch) | |
tree | 485167bf51d20fe68e51b2e086db1aaa3e8688b4 /gcc | |
parent | 63c499dc554635235a4a2a7519f1fa0c2458913f (diff) | |
download | gcc-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/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 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) |