union U { double d; __complex__ int c; }; double gd; extern double bar (union U); double foo (int b, double d, int c1, int c2) { union U u; double r; if (b) { u.d = d; r = u.d; } else { __real__ u.c = c1; __imag__ u.c = c2; r = bar (u); } return r; }