PR rtl-optimization/88018
[official-gcc.git] / gcc / testsuite / c-c++-common / torture / complex-alias-1.c
blobcdf832d630d2546c718deba30f0a64bb47dce7a4
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 } } */
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 extern void abort (void);
10 #ifdef __cplusplus
12 #endif
13 static double _Complex *fp_cxd(double _Complex *cx) {
14 return cx;
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);
22 *fp_cxd(&cx) *= cx11;
23 *fp_cxd(&cx) /= cx11;
25 double r_cx = __real__(cx);
26 double i_cx = __imag__(cx);
27 double r_cx43 = __real__(cx43);
28 double i_cx43 = __imag__(cx43);
30 if( (r_cx == r_cx43) && (i_cx == i_cx43) ) {
31 return 0;
32 } else {
33 abort ();