/* PR target/39082 */ /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-options "-O2" } */ /* { dg-additional-options "-mabi=sysv" { target x86_64-*-mingw* } } */ union un { long double x; int i; }; extern int bar1 (union un); extern union un bar2 (int); int foo1 (union un u) /* { dg-message "note: the ABI of passing union with long double has changed in GCC 4.4" } */ { bar1 (u); return u.i; } int foo2 (void) { union un u; u.i = 1; return foo1 (u) + bar1 (u); } int foo3 (int x) { union un u = bar2 (x); return u.i; }