Hi,

Bernd Edlinger reported that my new testcase for PR 58041 generates
warnings about ABI on i686.  The following fixes it so I am going to
commit it now to both trunk and the 4.8 branch so that as few people
as possible see new failures.

Sorry for the fuss and thanks Bernd for reporting and testing,

Martin


2013-08-06  Martin Jambor  <mjam...@suse.cz>
            Bernd Edlinger <bernd.edlin...@hotmail.de>

testsuite/
        * gcc.dg/torture/pr58041.c (foo): Accept z by reference.
        (a): Fix constructor.


diff --git a/gcc/testsuite/gcc.dg/torture/pr58041.c 
b/gcc/testsuite/gcc.dg/torture/pr58041.c
index e22ec3c..169a71a 100644
--- a/gcc/testsuite/gcc.dg/torture/pr58041.c
+++ b/gcc/testsuite/gcc.dg/torture/pr58041.c
@@ -3,8 +3,6 @@
 typedef long long V
   __attribute__ ((vector_size (2 * sizeof (long long)), may_alias));
 
-typedef struct S { V v; } P __attribute__((aligned (1)));
-
 struct s
 {
   char u;
@@ -12,24 +10,24 @@ struct s
 } __attribute__((packed,aligned(1)));
 
 __attribute__((noinline, noclone))
-long long foo(struct s *x, int y, V z)
+long long foo(struct s *x, int y, V *z)
 {
   V a = x->v[y];
-  x->v[y] = z;
+  x->v[y] = *z;
   return a[1];
 }
 
-struct s a = {0,{0,0}};
+struct s a = {0,{{0,0},{0,0}}};
 int main()
 {
   V v1 = {0,1};
   V v2 = {0,2};
 
-  if (foo(&a,0,v1) != 0)
+  if (foo(&a,0,&v1) != 0)
     __builtin_abort();
-  if (foo(&a,0,v2) != 1)
+  if (foo(&a,0,&v2) != 1)
     __builtin_abort();
-  if (foo(&a,1,v1) != 0)
+  if (foo(&a,1,&v1) != 0)
     __builtin_abort();
   return 0;
 }

Reply via email to