// RUN: %clang_cc1 -fexperimental-new-constant-interpreter -verify=expected,both -Wno-unused-value %s
// RUN: %clang_cc1 -verify=ref,both -Wno-unused-value %s

void blah() {
  __complex__ unsigned xx;
  __complex__ signed yy;
  __complex__ int result;

  /// The following line calls into the constant interpreter.
  result = xx * yy;
}


_Static_assert((0.0 + 0.0j) == (0.0 + 0.0j), "");
_Static_assert((0.0 + 0.0j) != (0.0 + 0.0j), ""); // both-error {{static assertion}} \
                                                  // both-note {{evaluates to}}

const _Complex float FC = {0.0f, 0.0f};
_Static_assert(!FC, "");
const _Complex float FI = {0, 0};
_Static_assert(!FI, "");


/// Make sure we're stripping the _Atomic part from the
/// complex type.
void testComplexFloat(_Atomic(_Complex float) *fp) {
  _Atomic(_Complex float) x = 2.0f;
  _Complex float f = *fp;
  *fp = f;
}
