Fix PR 58041 testcase failuers on i686

Submitted by Martin Jambor on Aug. 6, 2013, 5:33 p.m.

Details

Message ID 20130806173315.GG3166@virgil.suse
State New
Headers show

Commit Message

Martin Jambor Aug. 6, 2013, 5:33 p.m.
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  <mjambor@suse.cz>
	    Bernd Edlinger <bernd.edlinger@hotmail.de>

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

Patch hide | download patch | download mbox

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