76 lines
1017 B
C
76 lines
1017 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O1" } */
|
|
/* Let gimple verifier check what SRA does to unions and single-field
|
|
strucutres . */
|
|
|
|
struct sim_struct
|
|
{
|
|
int x;
|
|
};
|
|
|
|
extern struct sim_struct get_x(void);
|
|
|
|
struct sim_struct foo (void)
|
|
{
|
|
struct sim_struct simple;
|
|
|
|
simple = get_x ();
|
|
if (simple.x % 2)
|
|
simple.x = 39;
|
|
else
|
|
simple.x -=8;
|
|
|
|
return simple;
|
|
}
|
|
|
|
struct sim_cmplx
|
|
{
|
|
_Complex double c;
|
|
};
|
|
|
|
extern struct sim_cmplx get_sc (void);
|
|
|
|
_Complex double foo_c (void)
|
|
{
|
|
struct sim_cmplx simple;
|
|
|
|
simple = get_sc ();
|
|
if (__real__ simple.c > 200.3)
|
|
__imag__ simple.c -= 2.4;
|
|
|
|
return simple.c;
|
|
}
|
|
|
|
|
|
union sim_union
|
|
{
|
|
int i;
|
|
float d;
|
|
};
|
|
|
|
extern union sim_union get_y (void);
|
|
|
|
union sim_union bar (void)
|
|
{
|
|
union sim_union simple;
|
|
|
|
simple = get_y ();
|
|
if (simple.d > 8.2)
|
|
simple.i = 300;
|
|
|
|
return simple;
|
|
}
|
|
|
|
extern int get_int (void);
|
|
|
|
int bar_i (void)
|
|
{
|
|
union sim_union simple;
|
|
|
|
simple = get_y ();
|
|
if (simple.d > 8.2)
|
|
simple.i = get_int ();
|
|
|
|
return simple.i;
|
|
}
|