// RUN: %clang_cc1 %s -emit-llvm-only

typedef struct _zend_ini_entry zend_ini_entry;
struct _zend_ini_entry {
  void *mh_arg1;
};

char a;

const zend_ini_entry ini_entries[] = {
  {  ((char*)&((zend_ini_entry*)0)->mh_arg1 - (char*)(void*)0)},
};

// PR7564
struct GLGENH {
  int : 27;
  int EMHJAA : 1;
};

struct GLGENH ABHFBF = {1};

typedef __attribute__(( ext_vector_type(2) )) unsigned int uint2;
typedef __attribute__(( __vector_size__(8) )) unsigned int __neon_uint32x2_t;

// rdar://8183908
typedef struct __simd64_uint32_t {
  __neon_uint32x2_t val;
} uint32x2_t;
void foo() {
    const uint32x2_t signBit = { (uint2) 0x80000000 };
}
