gcc/gcc/testsuite/c-c++-common/pr51628-9.c
Dimitar Dimitrov 6741411b03 testsuite: Filter unaligned pointer value warning
Targets which pack structures by default will not get warnings about
unaligned access to structure members.

gcc/testsuite/ChangeLog:

	* c-c++-common/Waddress-of-packed-member-1.c: Filter dg-warning
	for targets who pack by default.
	* c-c++-common/Waddress-of-packed-member-2.c: Ditto.
	* c-c++-common/pr51628-13.c: Ditto.
	* c-c++-common/pr51628-15.c: Ditto.
	* c-c++-common/pr51628-16.c: Ditto.
	* c-c++-common/pr51628-26.c: Ditto.
	* c-c++-common/pr51628-27.c: Ditto.
	* c-c++-common/pr51628-28.c: Ditto.
	* c-c++-common/pr51628-29.c: Ditto.
	* c-c++-common/pr51628-3.c: Ditto.
	* c-c++-common/pr51628-30.c: Ditto.
	* c-c++-common/pr51628-31.c: Ditto.
	* c-c++-common/pr51628-32.c: Ditto.
	* c-c++-common/pr51628-33.c: Ditto.
	* c-c++-common/pr51628-35.c: Ditto.
	* c-c++-common/pr51628-4.c: Ditto.
	* c-c++-common/pr51628-5.c: Ditto.
	* c-c++-common/pr51628-6.c: Ditto.
	* c-c++-common/pr51628-8.c: Ditto.
	* c-c++-common/pr51628-9.c: Ditto.
	* c-c++-common/pr88664-2.c: Ditto.
	* gcc.dg/pr51628-17.c: Ditto.
	* gcc.dg/pr51628-19.c: Ditto.
	* gcc.dg/pr51628-20.c: Ditto.
	* gcc.dg/pr51628-21.c: Ditto.
	* gcc.dg/pr51628-22.c: Ditto.
	* gcc.dg/pr51628-24.c: Ditto.
	* gcc.dg/pr51628-25.c: Ditto.
	* gcc.dg/pr51628-34.c: Ditto.
	* gcc.dg/pr88928.c: Ditto.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
2020-07-21 18:35:44 +03:00

36 lines
1.1 KiB
C

/* PR c/51628. */
/* { dg-do compile } */
/* { dg-options "-O" } */
struct pair_t
{
int x;
int i[4];
} __attribute__ ((packed));
extern struct pair_t p;
extern int *x;
extern void bar (int *);
int *addr = p.i;
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
int *
foo (struct pair_t *p)
{
int *p0, *p1;
p0 = p->i;
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
bar (p0);
p1 = &p->i[1];
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
bar (p1);
bar (p->i);
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
bar (&p->i[2]);
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
x = p->i;
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
return &p->i[3];
/* { dg-warning "may result in an unaligned pointer value" "" { target { ! default_packed } } .-1 } */
}