diff mbox

patch to fix PR65407

Message ID 55156EA9.1030206@redhat.com
State New
Headers show

Commit Message

Vladimir Makarov March 27, 2015, 2:52 p.m. UTC
The following patch fixes

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65407

The patch was bootstrapped and tested on x86/x86-64, ppc64, aarch64.

Committed as rev. 221734.

2015-03-27  Vladimir Makarov  <vmakarov@redhat.com>

         PR target/65407
         * ira-costs.c (record_reg_classes): Process all constraint string
         containing 0-9.

2015-03-27  Vladimir Makarov  <vmakarov@redhat.com>

         PR target/65407
         * gcc.target/i386/avx512f-kandnw-1.c: Add scanning kmovw.
diff mbox

Patch

Index: ira-costs.c
===================================================================
--- ira-costs.c	(revision 221669)
+++ ira-costs.c	(working copy)
@@ -589,7 +589,7 @@  record_reg_classes (int n_alts, int n_op
 	  while (*p == '%' || *p == '=' || *p == '+' || *p == '&')
 	    p++;
 
-	  if (p[0] >= '0' && p[0] <= '0' + i && (p[1] == ',' || p[1] == 0))
+	  if (p[0] >= '0' && p[0] <= '0' + i)
 	    {
 	      /* Copy class and whether memory is allowed from the
 		 matching alternative.  Then perform any needed cost
@@ -754,14 +754,7 @@  record_reg_classes (int n_alts, int n_op
 		      && ! find_reg_note (insn, REG_DEAD, op))
 		    alt_cost += 2;
 
-		  /* This is in place of ordinary cost computation for
-		     this operand, so skip to the end of the
-		     alternative (should be just one character).  */
-		  while (*p && *p++ != ',')
-		    ;
-
-		  constraints[i] = p;
-		  continue;
+		  p++;
 		}
 	    }
 
Index: testsuite/gcc.target/i386/avx512f-kandnw-1.c
===================================================================
--- testsuite/gcc.target/i386/avx512f-kandnw-1.c	(revision 221669)
+++ testsuite/gcc.target/i386/avx512f-kandnw-1.c	(working copy)
@@ -1,6 +1,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-mavx512f -O2" } */
 /* { dg-final { scan-assembler-times "kandnw\[ \\t\]+\[^\{\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
+/* { dg-final { scan-assembler-times "kmovw" 2 } } */
 
 #include <immintrin.h>