blob: 6a0d3d628c549e9ca34a623b15ce2360195e4d8c [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -emit-llvm < %s
Gabor Greifbacfa022007-07-13 22:15:44 +00002
Gabor Greifb02d4b42007-07-13 23:40:27 +00003int main(void)
Gabor Greifbacfa022007-07-13 22:15:44 +00004{
5 double _Complex a = 5;
6 double _Complex b = 42;
7
Gabor Greifb02d4b42007-07-13 23:40:27 +00008 return a * b != b * a;
Gabor Greifbacfa022007-07-13 22:15:44 +00009}
Chris Lattner12b2be22007-08-10 17:02:59 +000010
11_Complex double bar(int);
12void test(_Complex double*);
Chris Lattnerfd90ac02007-08-23 23:49:47 +000013void takecomplex(_Complex double);
Chris Lattner12b2be22007-08-10 17:02:59 +000014
15void test2(int c) {
16 _Complex double X;
17 X = bar(1);
18 test(&X);
Chris Lattnerfd90ac02007-08-23 23:49:47 +000019 takecomplex(X);
Chris Lattner12b2be22007-08-10 17:02:59 +000020}
21
Chris Lattnerfd90ac02007-08-23 23:49:47 +000022_Complex double g1, g2;
Chris Lattner8ae3a9f2007-08-26 22:41:57 +000023_Complex float cf;
24double D;
Chris Lattnerfd90ac02007-08-23 23:49:47 +000025
26void test3() {
27 g1 = g1 + g2;
28 g1 = g1 - g2;
29 g1 = g1 * g2;
30 g1 = +-~g1;
Chris Lattner46f93d02007-08-24 21:20:17 +000031
32 double Gr = __real g1;
Chris Lattner8ae3a9f2007-08-26 22:41:57 +000033
Chris Lattner9cff1a92007-08-27 16:37:44 +000034 cf += D;
Eli Friedmanab3a8522009-03-28 01:22:36 +000035 // FIXME: Currently unsupported!
36 //D += cf;
Chris Lattner8ae3a9f2007-08-26 22:41:57 +000037 cf /= g1;
Chris Lattner9cff1a92007-08-27 16:37:44 +000038 g1 = g1 + D;
39 g1 = D + g1;
Chris Lattnerfd90ac02007-08-23 23:49:47 +000040}
Chris Lattner7da36f62007-10-30 22:53:42 +000041
42void t1() {
43 (__real__ cf) = 4.0;
44}
45
46void t2() {
47 (__imag__ cf) = 4.0;
48}
49
Chris Lattner9b2dc282008-04-04 16:54:41 +000050// PR1960
51void t3() {
52 __complex__ long long v = 2;
53}
54
Anders Carlssonad3d6912008-11-25 22:21:48 +000055// PR3131
56float _Complex t4();
57
58void t5() {
59 float _Complex x = t4();
60}
61