The subject testcase is failing on older powerpc64 hardware that doesn't support vector instructions because the prolog code is saving callee save vector registers used in the loop before the check_vect() call has even been performed. Following was tested on powerpc64-linux. Ok for trunk/4.9 branch?

-Pat


2015-02-26  Pat Haugen <pthau...@us.ibm.com>

gcc/testsuite:
* gcc.dg/vect/pr59354.c: Move vector producing code to separate function.


Index: gcc.dg/vect/pr59354.c
===================================================================
--- gcc.dg/vect/pr59354.c    (revision 221016)
+++ gcc.dg/vect/pr59354.c    (working copy)
@@ -8,12 +8,11 @@ void abort (void);
 unsigned int a[256];
 unsigned char b[256];

-int main()
+__attribute__ ((noinline)) void
+main1()
 {
   int i, z, x, y;

-  check_vect ();
-
   for(i = 0; i < 256; i++)
     {
       a[i] = i % 5;
@@ -27,6 +26,13 @@ int main()

   if (b[4] != 1)
     abort ();
+}
+
+int main (void)
+{
+  check_vect ();
+
+  main1 ();

   return 0;
 }

Reply via email to