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
This commit is contained in:
Pedro F. Giffuni 2013-12-17 20:53:22 +00:00
parent 7c27d02398
commit 08fd2c8bd7
2 changed files with 16 additions and 2 deletions

View file

@ -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.

View file

@ -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;