// RUN: %clang_cc1 -emit-llvm-only %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; D += cf; cf /= g1; g1 = g1 + D; g1 = D + g1; } __complex__ int ci1, ci2; __complex__ short cs; int i; void test3int() { ci1 = ci1 + ci2; ci1 = ci1 - ci2; ci1 = ci1 * ci2; ci1 = +-~ci1; i = __real ci1; cs += i; D += cf; cs /= ci1; ci1 = ci1 + i; ci1 = i + ci1; } 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(); } void t6() { g1++; g1--; ++g1; --g1; ci1++; ci1--; ++ci1; --ci1; } // <rdar://problem/7958272> double t7(double _Complex c) { return __builtin_fabs(__real__(c)); } void t8() { __complex__ int *x = &(__complex__ int){1}; } const _Complex double test9const = 0; _Complex double test9func() { return test9const; } // D6217 void t91() { // Check for proper type promotion of conditional expression char c[(int)(sizeof(typeof((0 ? 2.0f : (_Complex double) 2.0f))) - sizeof(_Complex double))]; // Check for proper codegen (0 ? 2.0f : (_Complex double) 2.0f); } void t92() { // Check for proper type promotion of conditional expression char c[(int)(sizeof(typeof((0 ? (_Complex double) 2.0f : 2.0f))) - sizeof(_Complex double))]; // Check for proper codegen (0 ? (_Complex double) 2.0f : 2.0f); }