/* PR target/104612 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ /* { dg-additional-options "-msse2 -mfpmath=sse" { target i?86-*-* x86_64-*-* } } */ struct V { float x, y; }; struct V foo (struct V v) { struct V ret; ret.x = __builtin_copysignf (1.0e+0, v.x); ret.y = __builtin_copysignf (1.0e+0, v.y); return ret; } float bar (struct V v) { return __builtin_copysignf (v.x, v.y); } float baz (struct V v) { return v.x * __builtin_copysignf (1.0f, v.y); }