diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60d445505127..e42d80e9ecc5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-12-05 Joseph Myers + + * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for + TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500. + * config/rs6000/spe.md (e500_cr_ior_compare): Likewise. + 2008-12-05 Jakub Jelinek PR tree-optimization/37716 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 4fa690d80977..b1df32aa17ca 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -12215,7 +12215,7 @@ (define_insn "move_from_CR_gt_bit" [(set (match_operand:SI 0 "gpc_reg_operand" "=r") (unspec:SI [(match_operand 1 "cc_reg_operand" "y")] UNSPEC_MV_CR_GT))] - "TARGET_E500" + "TARGET_HARD_FLOAT && !TARGET_FPRS" "mfcr %0\;{rlinm|rlwinm} %0,%0,%D1,31,31" [(set_attr "type" "mfcr") (set_attr "length" "8")]) diff --git a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md index 96be255895b1..50736f1a6ba0 100644 --- a/gcc/config/rs6000/spe.md +++ b/gcc/config/rs6000/spe.md @@ -3135,7 +3135,7 @@ (unspec:CCFP [(match_operand 1 "cc_reg_operand" "y") (match_operand 2 "cc_reg_operand" "y")] E500_CR_IOR_COMPARE))] - "TARGET_E500" + "TARGET_HARD_FLOAT && !TARGET_FPRS" "cror 4*%0+gt,4*%1+gt,4*%2+gt" [(set_attr "type" "cr_logical")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 143eb235e0f4..d342035cc992 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-12-05 Joseph Myers + + * gcc.target/powerpc/20081204-1.c: New test. + 2008-12-05 Richard Guenther PR testsuite/38406 diff --git a/gcc/testsuite/gcc.target/powerpc/20081204-1.c b/gcc/testsuite/gcc.target/powerpc/20081204-1.c new file mode 100644 index 000000000000..ba4df8f3e299 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/20081204-1.c @@ -0,0 +1,7 @@ +/* Test for ICE arising from inconsistent use of TARGET_E500 versus + TARGET_HARD_FLOAT && !TARGET_FPRS. */ +/* { dg-do compile } */ +/* { dg-options "-mcpu=750 -mfloat-gprs=single" } */ +static int comp(const void *a,const void *b){ + return (*(float *)a<*(float *)b)-(*(float *)a>*(float *)b); +}