// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s

namespace test1 {
typedef double __m256d __attribute__((__vector_size__(32)));

class PR22753 {
public:
  __m256d data;
};

// CHECK: define <4 x double> @_ZN5test14testENS_7PR22753E(<4 x double>
PR22753 test(PR22753 x) {
  return x;
}
}

namespace test2 {
typedef double __m128d __attribute__((__vector_size__(16)));
typedef float __m128 __attribute__((__vector_size__(16)));
typedef double __m256d __attribute__((__vector_size__(32)));
typedef float __m256 __attribute__((__vector_size__(32)));

union U1 {
  __m128  v1;
  __m128d v2;
};

union UU1 {
  union U1;
  __m128d v3;
};

// CHECK: define <2 x double> @_ZN5test27PR23082ENS_3UU1E(<2 x double>
UU1 PR23082(UU1 x) {
  return x;
}

union U2 {
  __m256  v1;
  __m256d v2;
};

union UU2 {
  union U2;
  __m256d v3;
};

// CHECK: define <4 x double> @_ZN5test27PR23082ENS_3UU2E(<4 x double>
UU2 PR23082(UU2 x) {
  return x;
}
}

namespace test3 {
union U {
  __attribute__((__vector_size__(32))) float f1;
  int f2;
};
// CHECK: define i32 @_ZN5test31fENS_1UE({{.*}}* byval align 32
int f(U u) { return u.f2; }
}
