/* 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 } */
}
