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; }