summaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-28 16:19:16 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-28 16:19:16 +0000
commit8871112a2a60eb5642b22b8120df5e5ddfe6222a (patch)
tree5a65dfb2686e80f00ce9875d6bf3f7024961fc6c /gcc/jump.c
parent863d101a582a4944d9a07301bb80b98760d3cc5c (diff)
downloadgcc-8871112a2a60eb5642b22b8120df5e5ddfe6222a.tar.gz
* jump.c (reversed_comparison_code_parts): Allow reversal of
unordered compares in -ffast-math mode; reverse ordered compares for FP even w/o -ffast-math. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40118 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jump.c')
-rw-r--r--gcc/jump.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index 5ff808ad0e3..bda1c6b270d 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -1782,7 +1782,11 @@ reversed_comparison_code_parts (code, arg0, arg1, insn)
case UNLE:
case UNGT:
case UNGE:
- /* We don't have safe way to reverse these yet. */
+ /* We don't have safe way to reverse these yet - we would need
+ ordered compares that may not trap. */
+ if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
+ || flag_fast_math)
+ return reverse_condition_maybe_unordered (code);
return UNKNOWN;
default:
break;
@@ -1841,6 +1845,12 @@ reversed_comparison_code_parts (code, arg0, arg1, insn)
}
}
+ /* In case of floating point modes, we may reverse here, since
+ we will be always converting an ordered compare to unordered.
+ The unsafe code has been caught earlier. */
+ if (FLOAT_MODE_P (mode))
+ return reverse_condition_maybe_unordered (code);
+
/* An integer condition. */
if (GET_CODE (arg0) == CONST_INT
|| (GET_MODE (arg0) != VOIDmode