Eli Friedman | 5b088a1 | 2010-01-03 00:20:48 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -emit-llvm-only %s |
Gabor Greif | bacfa02 | 2007-07-13 22:15:44 +0000 | [diff] [blame] | 2 | |
Gabor Greif | b02d4b4 | 2007-07-13 23:40:27 +0000 | [diff] [blame] | 3 | int main(void) |
Gabor Greif | bacfa02 | 2007-07-13 22:15:44 +0000 | [diff] [blame] | 4 | { |
5 | double _Complex a = 5; | ||||
6 | double _Complex b = 42; | ||||
7 | |||||
Gabor Greif | b02d4b4 | 2007-07-13 23:40:27 +0000 | [diff] [blame] | 8 | return a * b != b * a; |
Gabor Greif | bacfa02 | 2007-07-13 22:15:44 +0000 | [diff] [blame] | 9 | } |
Chris Lattner | 12b2be2 | 2007-08-10 17:02:59 +0000 | [diff] [blame] | 10 | |
11 | _Complex double bar(int); | ||||
12 | void test(_Complex double*); | ||||
Chris Lattner | fd90ac0 | 2007-08-23 23:49:47 +0000 | [diff] [blame] | 13 | void takecomplex(_Complex double); |
Chris Lattner | 12b2be2 | 2007-08-10 17:02:59 +0000 | [diff] [blame] | 14 | |
15 | void test2(int c) { | ||||
16 | _Complex double X; | ||||
17 | X = bar(1); | ||||
18 | test(&X); | ||||
Chris Lattner | fd90ac0 | 2007-08-23 23:49:47 +0000 | [diff] [blame] | 19 | takecomplex(X); |
Chris Lattner | 12b2be2 | 2007-08-10 17:02:59 +0000 | [diff] [blame] | 20 | } |
21 | |||||
Chris Lattner | fd90ac0 | 2007-08-23 23:49:47 +0000 | [diff] [blame] | 22 | _Complex double g1, g2; |
Chris Lattner | 8ae3a9f | 2007-08-26 22:41:57 +0000 | [diff] [blame] | 23 | _Complex float cf; |
24 | double D; | ||||
Chris Lattner | fd90ac0 | 2007-08-23 23:49:47 +0000 | [diff] [blame] | 25 | |
26 | void test3() { | ||||
27 | g1 = g1 + g2; | ||||
28 | g1 = g1 - g2; | ||||
29 | g1 = g1 * g2; | ||||
30 | g1 = +-~g1; | ||||
Chris Lattner | 46f93d0 | 2007-08-24 21:20:17 +0000 | [diff] [blame] | 31 | |
32 | double Gr = __real g1; | ||||
Chris Lattner | 8ae3a9f | 2007-08-26 22:41:57 +0000 | [diff] [blame] | 33 | |
Chris Lattner | 9cff1a9 | 2007-08-27 16:37:44 +0000 | [diff] [blame] | 34 | cf += D; |
Eli Friedman | 0934e18 | 2013-06-12 01:40:06 +0000 | [diff] [blame] | 35 | D += cf; |
Chris Lattner | 8ae3a9f | 2007-08-26 22:41:57 +0000 | [diff] [blame] | 36 | cf /= g1; |
Chris Lattner | 9cff1a9 | 2007-08-27 16:37:44 +0000 | [diff] [blame] | 37 | g1 = g1 + D; |
38 | g1 = D + g1; | ||||
Chris Lattner | fd90ac0 | 2007-08-23 23:49:47 +0000 | [diff] [blame] | 39 | } |
Chris Lattner | 7da36f6 | 2007-10-30 22:53:42 +0000 | [diff] [blame] | 40 | |
Eli Friedman | 5b088a1 | 2010-01-03 00:20:48 +0000 | [diff] [blame] | 41 | __complex__ int ci1, ci2; |
42 | __complex__ short cs; | ||||
43 | int i; | ||||
44 | void test3int() { | ||||
45 | ci1 = ci1 + ci2; | ||||
46 | ci1 = ci1 - ci2; | ||||
47 | ci1 = ci1 * ci2; | ||||
48 | ci1 = +-~ci1; | ||||
49 | |||||
50 | i = __real ci1; | ||||
51 | |||||
52 | cs += i; | ||||
Eli Friedman | 0934e18 | 2013-06-12 01:40:06 +0000 | [diff] [blame] | 53 | D += cf; |
Eli Friedman | 5b088a1 | 2010-01-03 00:20:48 +0000 | [diff] [blame] | 54 | cs /= ci1; |
55 | ci1 = ci1 + i; | ||||
56 | ci1 = i + ci1; | ||||
57 | } | ||||
58 | |||||
Chris Lattner | 7da36f6 | 2007-10-30 22:53:42 +0000 | [diff] [blame] | 59 | void t1() { |
60 | (__real__ cf) = 4.0; | ||||
61 | } | ||||
62 | |||||
63 | void t2() { | ||||
64 | (__imag__ cf) = 4.0; | ||||
65 | } | ||||
66 | |||||
Chris Lattner | 9b2dc28 | 2008-04-04 16:54:41 +0000 | [diff] [blame] | 67 | // PR1960 |
68 | void t3() { | ||||
69 | __complex__ long long v = 2; | ||||
70 | } | ||||
71 | |||||
Anders Carlsson | ad3d691 | 2008-11-25 22:21:48 +0000 | [diff] [blame] | 72 | // PR3131 |
73 | float _Complex t4(); | ||||
74 | |||||
75 | void t5() { | ||||
76 | float _Complex x = t4(); | ||||
77 | } | ||||
78 | |||||
Eli Friedman | 5b088a1 | 2010-01-03 00:20:48 +0000 | [diff] [blame] | 79 | void t6() { |
80 | g1++; | ||||
81 | g1--; | ||||
82 | ++g1; | ||||
83 | --g1; | ||||
84 | ci1++; | ||||
85 | ci1--; | ||||
86 | ++ci1; | ||||
87 | --ci1; | ||||
88 | } | ||||
89 | |||||
John McCall | abd3a85 | 2010-05-07 22:08:54 +0000 | [diff] [blame] | 90 | // <rdar://problem/7958272> |
91 | double t7(double _Complex c) { | ||||
92 | return __builtin_fabs(__real__(c)); | ||||
93 | } | ||||
Eli Friedman | 43e890b | 2011-06-15 20:17:07 +0000 | [diff] [blame] | 94 | |
95 | void t8() { | ||||
96 | __complex__ int *x = &(__complex__ int){1}; | ||||
97 | } | ||||
Eli Friedman | be6d913 | 2013-07-16 20:19:04 +0000 | [diff] [blame^] | 98 | |
99 | const _Complex double test9const = 0; | ||||
100 | _Complex double test9func() { return test9const; } |