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