diff mbox

[i386] : fix PR 68084, Inverted conditions generated for x86 inline assembly

Message ID CAFULd4Yu+W_b3k65sz6YkV+=iRsFsOJe9M6PmF8_okKdyHXsEw@mail.gmail.com
State New
Headers show

Commit Message

Uros Bizjak Oct. 25, 2015, 1:23 p.m. UTC
Hello!

Inverted condition is generated with =@ccae.

2015-10-25  Uros Bizjak  <ubizjak@gmail.com>

    PR target/68084
    * config/i386/i386.c (ix86_md_asm_adjust) [case 'a']: Use NE code
    for =@ccae.

testsuite/ChangeLog:

2015-10-25  Uros Bizjak  <ubizjak@gmail.com>

    PR target/68084
    * gcc.target/i386/pr68084.c: New test.

Bootstrapped and regression tested on x86_64-linux {,-m32}, committed
to mainline SVN.

Uros.
diff mbox

Patch

Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c	(revision 229293)
+++ config/i386/i386.c	(working copy)
@@ -46934,7 +46934,7 @@  ix86_md_asm_adjust (vec<rtx> &outputs, vec<rtx> &/
 	  if (con[1] == 0)
 	    mode = CCAmode, code = EQ;
 	  else if (con[1] == 'e' && con[2] == 0)
-	    mode = CCCmode, code = EQ;
+	    mode = CCCmode, code = NE;
 	  break;
 	case 'b':
 	  if (con[1] == 0)
Index: testsuite/gcc.target/i386/pr68084.c
===================================================================
--- testsuite/gcc.target/i386/pr68084.c	(revision 0)
+++ testsuite/gcc.target/i386/pr68084.c	(working copy)
@@ -0,0 +1,16 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+int x;
+
+void foo (void)
+{
+  char r;
+
+  asm ("" : "=@ccae"(r));
+
+  if (!r)
+    x = 0;
+}
+
+/* { dg-final { scan-assembler "jnc" } } */