/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -msse2" } */
/* { dg-require-effective-target sse2_runtime } */

#include <xmmintrin.h>

extern "C" void abort ();

typedef double double_a __attribute__((__may_alias__));

struct V
{
  __m128d data;
};

int
main()
{
  V a;
  __m128d b;

  b = _mm_set_pd (1., 0.);
  a.data = _mm_set_pd (1., 0.);
  a.data = _mm_add_pd (a.data,
		       _mm_and_pd (_mm_cmpeq_pd (a.data, _mm_set1_pd (0.)),
				   _mm_set1_pd (2.)));
  reinterpret_cast<double_a *>(&a.data)[1] += 1.;
  b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (0.)),
				 _mm_set1_pd (1.)));
  b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (1.)),
				 _mm_set1_pd (1.)));
  if (_mm_movemask_pd (_mm_cmpeq_pd (a.data, b)) != 0x3)
    abort();

  return 0;
}
