aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJosh Conner <jconner@apple.com>2007-01-18 16:44:03 +0000
committerJosh Conner <jconner@gcc.gnu.org>2007-01-18 16:44:03 +0000
commit370df7db150b3cebad6c88751dcd215bb6d93456 (patch)
treec320ff436eb619c92c0c99371431b1fa7abcb567 /gcc
parent1b4aced688f1f445a48871a2fe1f426c5470b823 (diff)
downloadgcc-370df7db150b3cebad6c88751dcd215bb6d93456.zip
gcc-370df7db150b3cebad6c88751dcd215bb6d93456.tar.gz
gcc-370df7db150b3cebad6c88751dcd215bb6d93456.tar.bz2
re PR target/30485 (ICE in rs6000_emit_vector_compare when building with -fno-trapping-math)
2007-01-18 Josh Conner <jconner@apple.com> PR target/30485 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add support for UNLE, UNLT, UNGE, and UNGT. From-SVN: r120902
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c12
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4fae499..af089fe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-18 Josh Conner <jconner@apple.com>
+
+ PR target/30485
+ * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
+ support for UNLE, UNLT, UNGE, and UNGT.
+
2007-01-18 Jan Hubicka <jh@suse.cz>
* tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index ce17814..592cfdd 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -11890,10 +11890,18 @@ rs6000_emit_vector_compare (enum rtx_code rcode,
try_again = true;
break;
case NE:
- /* Treat A != B as ~(A==B). */
+ case UNLE:
+ case UNLT:
+ case UNGE:
+ case UNGT:
+ /* Invert condition and try again.
+ e.g., A != B becomes ~(A==B). */
{
+ enum rtx_code rev_code;
enum insn_code nor_code;
- rtx eq_rtx = rs6000_emit_vector_compare (EQ, op0, op1,
+
+ rev_code = reverse_condition_maybe_unordered (rcode);
+ rtx eq_rtx = rs6000_emit_vector_compare (rev_code, op0, op1,
dest_mode);
nor_code = one_cmpl_optab->handlers[(int)dest_mode].insn_code;