]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/63947 (Wrong fcmov suffix)
authorUros Bizjak <ubizjak@gmail.com>
Wed, 19 Nov 2014 23:29:51 +0000 (00:29 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 19 Nov 2014 23:29:51 +0000 (00:29 +0100)
PR target/63947
* config/i386/i386.c (put_condition_code) <case LTU, case GEU>:
Output "b" and "nb" suffix for FP mode.

testsuite/ChangeLog:

PR target/63947
* gcc.target/i386/pr63947.c: New test.

From-SVN: r217819

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr63947.c [new file with mode: 0644]

index 6545ecee992b726aed7feecc289b5f7ff7540f6f..8aac0ff85b0a81b153532c90683b682e11a2252d 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-19  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/63947
+       * config/i386/i386.c (put_condition_code) <case LTU, case GEU>:
+       Output "b" and "nb" suffix for FP mode.
+
 2014-11-19  Tom de Vries  <tom@codesourcery.com>
 
        Backport from mainline
index 568e574f0d4741649beb95308a9950a5f6ceca8c..9b24efce9c2f4b368e6cfd66db3948f45888d47a 100644 (file)
@@ -13800,7 +13800,7 @@ put_condition_code (enum rtx_code code, enum machine_mode mode, bool reverse,
       if (mode == CCmode)
        suffix = "b";
       else if (mode == CCCmode)
-       suffix = "c";
+       suffix = fp ? "b" : "c";
       else
        gcc_unreachable ();
       break;
@@ -13823,9 +13823,9 @@ put_condition_code (enum rtx_code code, enum machine_mode mode, bool reverse,
       break;
     case GEU:
       if (mode == CCmode)
-       suffix = fp ? "nb" : "ae";
+       suffix = "nb";
       else if (mode == CCCmode)
-       suffix = "nc";
+       suffix = fp ? "nb" : "nc";
       else
        gcc_unreachable ();
       break;
index 978c74bb90584be4cebc740625ae7f91d4c6c23a..df6a22dc426972d93f5e0c7d85ae86a5a1654388 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-19  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/63947
+       * gcc.target/i386/pr63947.c: New test.
+
 2014-11-19  Tom de Vries  <tom@codesourcery.com>
 
        Backport from mainline
diff --git a/gcc/testsuite/gcc.target/i386/pr63947.c b/gcc/testsuite/gcc.target/i386/pr63947.c
new file mode 100644 (file)
index 0000000..3c0a67a
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR target/63947 */
+/* { dg-do assemble } */
+/* { dg-options "-Os" } */
+/* { dg-additional-options "-march=i686" { target ia32 } } */
+
+long double foo (unsigned a, unsigned b)
+{
+  return a + b < a;
+}