/* PR target/25293 */
/* { dg-do compile } */
/* { dg-options "-mpreferred-stack-boundary=2 -mtune=i586 -O2 -fomit-frame-pointer -g" } */
/* { dg-require-effective-target ilp32 } */

struct T { unsigned short t1, t2, t3, t4, t5, t6, t7; };
struct S { struct T s1; unsigned short s2, s3; };
unsigned short v1;
int f1 (void);
int f2 (struct T);
int f3 (const char *);

int
foo (struct S *x, struct T y)
{
  unsigned short a, b, c;
  unsigned long d, e;
  int f = 0;
  y.t6 = 6;
  a = y.t7;
  b = y.t6;
  c = y.t7;
  switch (a)
    {
    case 8:
    case 7:
      c = 9;
      break;
    case 1:
    case 6:
    case 3:
      b = 16;
      c = 9;
      break;
    }
  if ((f = f1 ()))
    goto error;
  if ((f = f2 (y)))
    goto error;
  d = (long) &y;
  e = (long) &x->s1;
  __asm __volatile ("" : "+D" (e), "+S" (d) :: "memory");
  x->s2 = b;
  x->s3 = c;
  f3 ("foo");
  return 0;
error:
  if (v1 >= 1)
    f3 ("bar");
  return f;
}
