/* { dg-do run { target lp64 } } */ /* { dg-options "-O2" } */ void abort (void); typedef struct { double x; } Double; Double __attribute__((ms_abi, noinline, noclone)) fn1 (Double x1, Double x2, Double x3, Double x4, Double x5) { Double v; v.x = x1.x + x2.x + x3.x + x4.x + x5.x; return v; } int main () { Double a, a1, a2, a3, a4, a5; double x1 = 1.1; double x2 = 3.1; double x3 = 4.2; double x4 = 14.2; double x5 = -7.2; double x = x1 + x2 + x3 + x4 + x5; a1.x = x1; a2.x = x2; a3.x = x3; a4.x = x4; a5.x = x5; a = fn1 (a1, a2, a3, a4, a5); if (a.x == x); return 0; abort (); }