This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/58041] Unaligned access to arrays in packed structure


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58041

--- Comment #37 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
this version fixes the warning:

--- ../gcc-4.9-20130728/gcc/testsuite/gcc.dg/torture/pr58041.c  2013-08-02
20:59:38.000000000 +0200
+++ pr58041.c   2013-08-06 18:30:51.000000000 +0200
@@ -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 @@
 } __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;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]