// RUN: clang-cc -emit-llvm < %s

int main(void)
{
  double _Complex a = 5;
  double _Complex b = 42;

  return a * b != b * a;
}

_Complex double bar(int);
void test(_Complex double*);
void takecomplex(_Complex double);

void test2(int c) {
  _Complex double X;
  X = bar(1);
  test(&X);
  takecomplex(X);
}

_Complex double g1, g2;
_Complex float cf;
double D;

void test3() {
  g1 = g1 + g2;
  g1 = g1 - g2;
  g1 = g1 * g2;
  g1 = +-~g1;

  double Gr = __real g1;

  cf += D;
  // FIXME: Currently unsupported!
  //D += cf;
  cf /= g1;
  g1 = g1 + D;
  g1 = D + g1;
}

void t1() {
  (__real__ cf) = 4.0;
}

void t2() {
  (__imag__ cf) = 4.0;
}

// PR1960
void t3() {
  __complex__ long long v = 2;
}

// PR3131
float _Complex t4();

void t5() {
  float _Complex x = t4();
}

