aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorPedro F. Giffuni <pfg@FreeBSD.org>2013-12-17 20:53:22 +0000
committerPedro F. Giffuni <pfg@FreeBSD.org>2013-12-17 20:53:22 +0000
commit08fd2c8bd777e5a0949b2586f13abb9304dcfb9b (patch)
tree0efc0b4c39fb5f2b3171b1e63d6f9ea19c1f27bb /contrib
parent7c27d02398c04cb2dad6336dc76d5141ea92ca3e (diff)
downloadsrc-08fd2c8bd777e5a0949b2586f13abb9304dcfb9b.tar.gz
src-08fd2c8bd777e5a0949b2586f13abb9304dcfb9b.zip
gcc: fix ICE in rs600 when using -fno-trapping-math.
Solves GCC-PR target/30485 Obtained from: gcc 4.3 (rev. 120902; GPLv2) MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=259525
Diffstat (limited to 'contrib')
-rw-r--r--contrib/gcc/ChangeLog.gcc436
-rw-r--r--contrib/gcc/config/rs6000/rs6000.c12
2 files changed, 16 insertions, 2 deletions
diff --git a/contrib/gcc/ChangeLog.gcc43 b/contrib/gcc/ChangeLog.gcc43
index 98b368d7f18b..3658d190f0d7 100644
--- a/contrib/gcc/ChangeLog.gcc43
+++ b/contrib/gcc/ChangeLog.gcc43
@@ -399,6 +399,12 @@
(override_options): Add PTA_CX16 flag. Set x86_cmpxchg16b
for CPUs that have PTA_CX16 set.
+2007-01-18 Josh Conner <jconner@apple.com> (r120902)
+
+ PR target/30485
+ * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
+ support for UNLE, UNLT, UNGE, and UNGT.
+
2007-01-17 Eric Christopher <echristo@apple.com> (r120846)
* config.gcc: Support core2 processor.
diff --git a/contrib/gcc/config/rs6000/rs6000.c b/contrib/gcc/config/rs6000/rs6000.c
index 287902f0b019..a4d2020c79ea 100644
--- a/contrib/gcc/config/rs6000/rs6000.c
+++ b/contrib/gcc/config/rs6000/rs6000.c
@@ -11738,10 +11738,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;