annotate gcc/testsuite/g++.dg/ext/complex8.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR libstdc++/48760
kono
parents:
diff changeset
2 // { dg-do run { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 constexpr _Complex int i{1,2};
kono
parents:
diff changeset
5 constexpr _Complex int j{3};
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 #define SA(X) static_assert((X),#X)
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 SA(__real i == 1);
kono
parents:
diff changeset
10 SA(__imag i == 2);
kono
parents:
diff changeset
11 SA(__real j == 3);
kono
parents:
diff changeset
12 SA(__imag j == 0);
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 struct A
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 _Complex int c;
kono
parents:
diff changeset
17 constexpr A(int i, int j): c{i,j} { }
kono
parents:
diff changeset
18 constexpr A(int i): c{i} { }
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 constexpr A a1(1,2);
kono
parents:
diff changeset
22 constexpr A a2(3);
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 SA(__real a1.c == 1);
kono
parents:
diff changeset
25 SA(__imag a1.c == 2);
kono
parents:
diff changeset
26 SA(__real a2.c == 3);
kono
parents:
diff changeset
27 SA(__imag a2.c == 0);
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 typedef _Complex int ci;
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 SA((__real ci{1,2} == 1));
kono
parents:
diff changeset
32 SA((__imag ci{1,2} == 2));
kono
parents:
diff changeset
33 SA((__real ci{3} == 3));
kono
parents:
diff changeset
34 SA((__imag ci{3} == 0));
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 struct B
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 _Complex int c;
kono
parents:
diff changeset
39 int i;
kono
parents:
diff changeset
40 };
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 constexpr B b1 = { { 1,2 }, 42 };
kono
parents:
diff changeset
43 constexpr B b2 = { { 3 }, 24 };
kono
parents:
diff changeset
44 // No brace elision for complex.
kono
parents:
diff changeset
45 constexpr B b3 = { 5, 6 };
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 SA(__real b1.c == 1);
kono
parents:
diff changeset
48 SA(__imag b1.c == 2);
kono
parents:
diff changeset
49 SA(b1.i == 42);
kono
parents:
diff changeset
50 SA(__real b2.c == 3);
kono
parents:
diff changeset
51 SA(__imag b2.c == 0);
kono
parents:
diff changeset
52 SA(b2.i == 24);
kono
parents:
diff changeset
53 SA(__real b3.c == 5);
kono
parents:
diff changeset
54 SA(__imag b3.c == 0);
kono
parents:
diff changeset
55 SA(b3.i == 6);
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 int main()
kono
parents:
diff changeset
58 {
kono
parents:
diff changeset
59 ci* p = new ci{1,2};
kono
parents:
diff changeset
60 if (__real *p != 1 || __imag *p != 2)
kono
parents:
diff changeset
61 return 1;
kono
parents:
diff changeset
62 delete p;
kono
parents:
diff changeset
63 p = new ci{3};
kono
parents:
diff changeset
64 if (__real *p != 3 || __imag *p != 0)
kono
parents:
diff changeset
65 return 1;
kono
parents:
diff changeset
66 }