This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
i386 output_fp_conditional_move patch
- To: egcs-patches at cygnus dot com
- Subject: i386 output_fp_conditional_move patch
- From: john at feith dot com (John Wehle)
- Date: Sat, 20 Jun 1998 18:56:27 -0400
This patch removes the (cc_prev_status.flags && CC_NO_OVERFLOW) handling
since the INSN patterns prevent this from occuring because the processor
can't handle FP conditional moves based on signed integer comparsons.
ChangeLog:
Sat Jun 20 18:05:56 EDT 1998 John Wehle (john@feith.com)
* i386.c (output_fp_conditional_move): Don't bother handling
(cc_prev_status.flags && CC_NO_OVERFLOW) since the INSN patterns
prevent this from happening.
Enjoy!
-- John Wehle
------------------8<------------------------8<------------------------
*** gcc/config/i386/i386.c.ORIGINAL Sat Jun 20 16:51:26 1998
--- gcc/config/i386/i386.c Sat Jun 20 18:03:08 1998
***************
*** 5159,5184 ****
int which_alternative;
rtx operands[];
{
- int code = GET_CODE (operands[1]);
-
- /* This is very tricky. We have to do it right. For a code segement
- like:
-
- int foo;
- double bar;
- ....
- foo = foo - x;
- if (foo >= 0)
- bar = y;
-
- final_scan_insn () may delete the insn which sets CC. We have to
- tell final_scan_insn () if it should be reinserted. When CODE is
- GT or LE, we have to check the CC_NO_OVERFLOW bit and return
- NULL_PTR to tell final to reinsert the test insn because the
- conditional move cannot be handled properly without it. */
- if ((code == GT || code == LE)
- && (cc_prev_status.flags & CC_NO_OVERFLOW))
- return NULL_PTR;
switch (which_alternative)
{
--- 5159,5164 ----
-------------------------------------------------------------------------
| Feith Systems | Voice: 1-215-646-8000 | Email: john@feith.com |
| John Wehle | Fax: 1-215-540-5495 | |
-------------------------------------------------------------------------