/* { dg-do run } */ /* { dg-options "-O2 -fwhole-program" } */ float val2 = 1.710780f; float val3; volatile float vf; int __attribute__((noipa)) get_bool (void) { return 1; } int __attribute__((noinline)) wrong (float *pos) { _Complex float a; __real__ a = *pos; __imag__ a = *pos; _Complex float b = 0 + 0i; b = b + a; if (b == 0.0f) return 1; vf = __imag__ b; return 0; } int main(int argc, char **argv) { float val = get_bool () == 1 ? val2 : val3; if ((wrong(&val), wrong(&val))) __builtin_abort (); return 0; }