This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/58041] Unaligned access to arrays in packed structure
- From: "bernd.edlinger at hotmail dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 06 Aug 2013 16:36:37 +0000
- Subject: [Bug middle-end/58041] Unaligned access to arrays in packed structure
- Auto-submitted: auto-generated
- References: <bug-58041-4 at http dot gcc dot gnu dot org/bugzilla/>
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;
}