complex-int.c revision d3a61d5ec5357d19b7c0b6b599231e68dc5e237f
18dd070edc2209ecfdae49780ec1596b349e2cbd1Jakob Stoklund Olesen// RUN: clang %s -verify -fsyntax-only
28ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
38ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid a() {
48ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex__ int arr;
58ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex__ short brr;
68ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex__ unsigned xx;
78ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex__ signed yy;
88ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex__ int result;
98ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenint ii;
108ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenint aa = 1 + 1.0iF;
118ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
128ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenresult = arr*ii;
138ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenresult = ii*brr;
148ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
158ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenresult = arr*brr;
168d0963f72c8922bafffb36ff49b18064098a3cabJakob Stoklund Olesenresult = xx*yy;
17f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesen
188ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenswitch (arr) { // expected-error{{statement requires expression of integer type ('_Complex int' invalid)}}
198ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen  case brr: ; // expected-error{{expression is not an integer constant expression}}
208ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen  case xx: ; // expected-error{{expression is not an integer constant expression}}
218ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen}
228ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen}
23a17768f5822ab62bc18608e5ba473187bf726b84Jakob Stoklund Olesen
248ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid Tester() {
258ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex short a1;
268ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen__complex int a2;
27f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesen__complex float a3;
286a0dc079efe7acf7e71cc4c0948fe814f35ba091Jakob Stoklund Olesen__complex double a4;
29cfa7134a9c33c0c7f8dda359c89dc6763a258e07Jakob Stoklund Olesenshort a5;
30f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesenint a6;
31f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund Olesenfloat a7;
32532de3dc6ea98387368954c0ac0e07b0adca8b62Jakob Stoklund Olesendouble a8;
338ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen#define TestPair(m,n) int x##m##n = a##m+a##n;
34e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesen#define TestPairs(m) TestPair(m,1) TestPair(m,2) \
35e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesen                    TestPair(m,3) TestPair(m,4) \
36e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesen                    TestPair(m,5) TestPair(m,6) \
37e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund Olesen                    TestPair(m,7) TestPair(m,8)
38e1dde7b05a83438eeba4bd83f8cf080f56d22c5bJakob Stoklund OlesenTestPairs(1); TestPairs(2);
398d0963f72c8922bafffb36ff49b18064098a3cabJakob Stoklund OlesenTestPairs(3); TestPairs(4);
40f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund OlesenTestPairs(5); TestPairs(6);
41f0179004e94259a8adab6c48f295ea9ab18af4c3Jakob Stoklund OlesenTestPairs(7); TestPairs(8);
428ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen}
4308e93b14c37277ab40b835de340f89ba357d3332Jakob Stoklund Olesen
448ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen// rdar://6097730
458ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid test3(_Complex int *x) {
468ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen  *x = ~*x;
476a0dc079efe7acf7e71cc4c0948fe814f35ba091Jakob Stoklund Olesen}
488ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
498ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesenvoid test4(_Complex float *x) {
508ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen  *x = ~*x;
518ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen}
528ae0263471cc29c5f8278ee1ea5b678042ec6dceJakob Stoklund Olesen
53b5fa9333431673aac2ced8dea80152349a85cf6fJakob Stoklund Olesen