15b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman// RUN: %clang_cc1 -emit-llvm-only %s 2bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif 3b02d4b4bdf07273e86bf73414d51ea16ce46b081Gabor Greifint main(void) 4bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif{ 5bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif double _Complex a = 5; 6bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif double _Complex b = 42; 7bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif 8b02d4b4bdf07273e86bf73414d51ea16ce46b081Gabor Greif return a * b != b * a; 9bacfa02138dce5e380bca924b2c9c40bf7959aabGabor Greif} 1012b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner 1112b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner_Complex double bar(int); 1212b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattnervoid test(_Complex double*); 13fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattnervoid takecomplex(_Complex double); 1412b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner 1512b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattnervoid test2(int c) { 1612b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner _Complex double X; 1712b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner X = bar(1); 1812b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner test(&X); 19fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner takecomplex(X); 2012b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner} 2112b2be25f8575fb0a1f6ecf5802e3bcb78af6adaChris Lattner 22fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner_Complex double g1, g2; 238ae3a9f8bec69b5251abd695ffcd306a90b84d61Chris Lattner_Complex float cf; 248ae3a9f8bec69b5251abd695ffcd306a90b84d61Chris Lattnerdouble D; 25fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner 26fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattnervoid test3() { 27fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner g1 = g1 + g2; 28fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner g1 = g1 - g2; 29fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner g1 = g1 * g2; 30fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner g1 = +-~g1; 3146f93d021a1778442c1c4a53f0b94a68bfae3be5Chris Lattner 3246f93d021a1778442c1c4a53f0b94a68bfae3be5Chris Lattner double Gr = __real g1; 338ae3a9f8bec69b5251abd695ffcd306a90b84d61Chris Lattner 349cff1a9ac25f2b1386d3157e8daa0b219573d6a6Chris Lattner cf += D; 350934e18b620ecaa6c7ec18ba5c4286b6122d6fb8Eli Friedman D += cf; 368ae3a9f8bec69b5251abd695ffcd306a90b84d61Chris Lattner cf /= g1; 379cff1a9ac25f2b1386d3157e8daa0b219573d6a6Chris Lattner g1 = g1 + D; 389cff1a9ac25f2b1386d3157e8daa0b219573d6a6Chris Lattner g1 = D + g1; 39fd90ac054e9703b0a8f39da388e28f2b70d08dccChris Lattner} 407da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner 415b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman__complex__ int ci1, ci2; 425b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman__complex__ short cs; 435b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedmanint i; 445b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedmanvoid test3int() { 455b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = ci1 + ci2; 465b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = ci1 - ci2; 475b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = ci1 * ci2; 485b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = +-~ci1; 495b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman 505b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman i = __real ci1; 515b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman 525b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman cs += i; 530934e18b620ecaa6c7ec18ba5c4286b6122d6fb8Eli Friedman D += cf; 545b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman cs /= ci1; 555b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = ci1 + i; 565b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1 = i + ci1; 575b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman} 585b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman 597da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattnervoid t1() { 607da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner (__real__ cf) = 4.0; 617da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner} 627da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner 637da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattnervoid t2() { 647da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner (__imag__ cf) = 4.0; 657da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner} 667da36f642e907ff5a5ba4b18b5bfebfabf36ecc7Chris Lattner 679b2dc287177394a8f73833e2ad4f7ca8cd6f22bbChris Lattner// PR1960 689b2dc287177394a8f73833e2ad4f7ca8cd6f22bbChris Lattnervoid t3() { 699b2dc287177394a8f73833e2ad4f7ca8cd6f22bbChris Lattner __complex__ long long v = 2; 709b2dc287177394a8f73833e2ad4f7ca8cd6f22bbChris Lattner} 719b2dc287177394a8f73833e2ad4f7ca8cd6f22bbChris Lattner 72ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlsson// PR3131 73ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlssonfloat _Complex t4(); 74ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlsson 75ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlssonvoid t5() { 76ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlsson float _Complex x = t4(); 77ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlsson} 78ad3d6917dabbdab3399ff8307240aad58247d2e3Anders Carlsson 795b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedmanvoid t6() { 805b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman g1++; 815b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman g1--; 825b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ++g1; 835b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman --g1; 845b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1++; 855b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ci1--; 865b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman ++ci1; 875b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman --ci1; 885b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman} 895b088a10e106a287684bef78cd6c3a3830ac0721Eli Friedman 90abd3a857ace59100305790545d1baae5877b8945John McCall// <rdar://problem/7958272> 91abd3a857ace59100305790545d1baae5877b8945John McCalldouble t7(double _Complex c) { 92abd3a857ace59100305790545d1baae5877b8945John McCall return __builtin_fabs(__real__(c)); 93abd3a857ace59100305790545d1baae5877b8945John McCall} 9443e890b0354c40b9bfe9281a47985e7a4e2fc2c3Eli Friedman 9543e890b0354c40b9bfe9281a47985e7a4e2fc2c3Eli Friedmanvoid t8() { 9643e890b0354c40b9bfe9281a47985e7a4e2fc2c3Eli Friedman __complex__ int *x = &(__complex__ int){1}; 9743e890b0354c40b9bfe9281a47985e7a4e2fc2c3Eli Friedman} 98be6d9130585c33aaea3ee152f365031999d8debeEli Friedman 99be6d9130585c33aaea3ee152f365031999d8debeEli Friedmanconst _Complex double test9const = 0; 100be6d9130585c33aaea3ee152f365031999d8debeEli Friedman_Complex double test9func() { return test9const; } 101