47 lines
629 B
C
47 lines
629 B
C
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
|
|
/* { dg-options "-O -fgcse -fno-split-wide-types" } */
|
|
|
|
extern void abort(void);
|
|
|
|
typedef unsigned short int uint16_t;
|
|
typedef unsigned int uint32_t;
|
|
typedef unsigned long long uint64_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t thread;
|
|
uint16_t phase;
|
|
} s32;
|
|
|
|
typedef union
|
|
{
|
|
uint32_t i;
|
|
s32 s;
|
|
} u32;
|
|
|
|
typedef union
|
|
{
|
|
uint64_t i;
|
|
u32 u;
|
|
} u64;
|
|
|
|
static __attribute__((noinline))
|
|
void foo(int val)
|
|
{
|
|
u64 data;
|
|
uint32_t thread;
|
|
|
|
data.u.i = 0x10000L;
|
|
thread = data.u.s.thread;
|
|
if (val)
|
|
abort ();
|
|
if (thread)
|
|
abort ();
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
foo (0);
|
|
return 0;
|
|
}
|