/* { dg-options "-Wno-psabi" } */
extern void abort (void);

typedef int V2SI __attribute__ ((vector_size (8)));
typedef unsigned int V2USI __attribute__ ((vector_size (8)));
typedef short V2HI __attribute__ ((vector_size (4)));
typedef unsigned int V2UHI __attribute__ ((vector_size (4)));

V2USI
test1 (V2SI x)
{
  return (V2USI) (V2SI) (long long) x;
}

long long
test2 (V2SI x)
{
  return (long long) (V2USI) (V2SI) (long long) x;
}

int
main (void)
{
  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
    return 0;

  union { V2SI x; int y[2]; V2USI z; long long l; } u;
  V2SI a = { -3, -3 };
  u.z = test1 (a);
  if (u.y[0] != -3 || u.y[1] != -3)
    abort ();

  u.l = test2 (a);
  if (u.y[0] != -3 || u.y[1] != -3)
    abort ();
  return 0;
}
