OSDN Git Service

cdf832d630d2546c718deba30f0a64bb47dce7a4
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / c-c++-common / complex-alias-1.c
1 /* Accesses to complex numbers were sometimes marked as scalar and
2    sometimes as struct accesses.  */
3 /* { dg-do run } */
4 /* { dg-options "-std=c99" { target c } } */
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 extern void abort (void);
10 #ifdef __cplusplus
11 }
12 #endif
13 static double _Complex *fp_cxd(double _Complex *cx) {
14   return cx;
15 }
16
17 int main( ) {
18   double _Complex cx = 4.0 + 3.0*(__extension__ 1.0iF);
19   double _Complex cx43 = 4.0 + 3.0*(__extension__ 1.0iF);
20   double _Complex cx11 = 1.0 + 1.0*(__extension__ 1.0iF);
21
22   *fp_cxd(&cx) *= cx11;
23   *fp_cxd(&cx) /= cx11;
24
25   double r_cx = __real__(cx);
26   double i_cx = __imag__(cx);
27   double r_cx43 = __real__(cx43);
28   double i_cx43 = __imag__(cx43);
29
30   if( (r_cx == r_cx43) && (i_cx == i_cx43) ) { 
31     return 0;
32   } else {
33     abort ();
34   }
35 }