]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/57189 (Vector register is spilled for vector extract pattern)
authorVladimir Makarov <vmakarov@redhat.com>
Thu, 13 Mar 2014 15:52:50 +0000 (15:52 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 13 Mar 2014 15:52:50 +0000 (15:52 +0000)
2014-03-13  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/57189
* lra-constraints.c (process_alt_operands): Disfavor spilling
vector pseudos.

2014-03-13  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/57189
* gcc.target/i386/pr57189.c: New.

From-SVN: r208549

gcc/ChangeLog
gcc/lra-constraints.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr57189.c [new file with mode: 0644]

index a32702af42aaf226acc3ed6cf6937c6130091281..91b1e41559ef52c283038a643097ebd21cdb7e69 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-13  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/57189
+       * lra-constraints.c (process_alt_operands): Disfavor spilling
+       vector pseudos.
+
 2014-03-13  Cesar Philippidis  <cesar@codesourcery.com>
 
        * lto-wrapper.c (maybe_unlink_file): Suppress diagnostic
index a38b555b2ab00ac6da496103d2bc494b0b7f77fa..288e24b4fe15df3b23923ccd76dccda8ca51a2a7 100644 (file)
@@ -2302,9 +2302,20 @@ process_alt_operands (int only_alternative)
                  if (lra_dump_file != NULL)
                    fprintf
                      (lra_dump_file,
-                      "            %d Spill pseudo in memory: reject+=3\n",
+                      "            %d Spill pseudo into memory: reject+=3\n",
                       nop);
                  reject += 3;
+                 if (VECTOR_MODE_P (mode))
+                   {
+                     /* Spilling vectors into memory is usually more
+                        costly as they contain big values.  */
+                     if (lra_dump_file != NULL)
+                       fprintf
+                         (lra_dump_file,
+                          "            %d Spill vector pseudo: reject+=2\n",
+                          nop);
+                     reject += 2;
+                   }
                }
 
 #ifdef SECONDARY_MEMORY_NEEDED
index 9cdf30dad15a563141c882660df2a32f76c97fe5..fd7e9795a28953e2468fe17e7a5f8dff22bf042d 100644 (file)
@@ -1,3 +1,8 @@
+2014-03-13  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/57189
+       * gcc.target/i386/pr57189.c: New.
+
 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/60254
diff --git a/gcc/testsuite/gcc.target/i386/pr57189.c b/gcc/testsuite/gcc.target/i386/pr57189.c
new file mode 100644 (file)
index 0000000..389052c
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-final { scan-assembler-not "movaps" } } */
+
+typedef int __v4si __attribute__ ((__vector_size__ (16)));
+
+int test (__v4si __A)
+{
+  return __builtin_ia32_vec_ext_v4si (__A, 0);
+}