1/* PR middle-end/36859 */ 2/* { dg-do run } */ 3/* { dg-options "-w" { target { lp64 } } } */ 4/* { dg-options "-w" { target { llp64 } } } */ 5/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */ 6/* { dg-require-effective-target sse2 } */ 7 8#include "sse2-check.h" 9#include <stdarg.h> 10#include <emmintrin.h> 11 12__m128 13__attribute__((noinline)) 14test (int a, ...) 15{ 16 __m128 x; 17 va_list va_arglist; 18 19 va_start (va_arglist, a); 20 x = va_arg (va_arglist, __m128); 21 va_end (va_arglist); 22 return x; 23} 24 25__m128 n1 = { -283.3, -23.3, 213.4, 1119.03 }; 26 27int 28__attribute__((noinline)) 29foo (void) 30{ 31 __m128 x = test (1, n1); 32 if (__builtin_memcmp (&x, &n1, sizeof (x)) != 0) 33 abort (); 34 return 0; 35} 36 37static void 38__attribute__((noinline)) 39sse2_test (void) 40{ 41 foo (); 42} 43