llvm-project/clang/test/CodeGen/struct-init.c
Argyrios Kyrtzidis 0d349f9b8a When initializing struct members, the important thing is that the "initializing" expression is
compatible, not having the same type.

Fix rdar://8183908 in which compatible vector types weren't initialized properly leading to a crash.

llvm-svn: 124637
2011-02-01 00:52:10 +00:00

32 lines
645 B
C

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