1  /* { dg-do compile { target *-*-mingw* *-*-cygwin* } } */
       2  /* { dg-require-effective-target ia32 } */
       3  /* { dg-options "-msse -O" } */
       4  
       5  extern void abort (void);
       6  
       7  typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
       8  
       9  static __m128
      10  load_m128 (float *e)
      11  {
      12    return * (__m128 *) e;
      13  }
      14  
      15  typedef union
      16  {
      17    __m128  x;
      18    float a[4];
      19  } union128;
      20  
      21  void test (void)
      22  {
      23    union128 u;
      24    float e[4] __attribute__ ((aligned (16)))
      25      = {2134.3343, 1234.635654, 1.2234, 876.8976};
      26    int i;
      27  
      28    u.x = load_m128 (e);
      29  
      30    for (i = 0; i < 4; i++)
      31      if (u.a[i] != e[i])
      32        abort ();
      33  }
      34  
      35  /* { dg-final { scan-assembler "andl\\t\\$-16, %esp" } } */