diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-28 16:19:16 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-28 16:19:16 +0000 |
commit | 8871112a2a60eb5642b22b8120df5e5ddfe6222a (patch) | |
tree | 5a65dfb2686e80f00ce9875d6bf3f7024961fc6c /gcc/jump.c | |
parent | 863d101a582a4944d9a07301bb80b98760d3cc5c (diff) | |
download | gcc-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.c | 12 |
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 |