/* Accesses to complex numbers were sometimes marked as scalar and sometimes as struct accesses. */ /* { dg-do run } */ /* { dg-options "-std=c99" { target c } } */ #ifdef __cplusplus extern "C" { #endif extern void abort (void); #ifdef __cplusplus } #endif static double _Complex *fp_cxd(double _Complex *cx) { return cx; } int main( ) { double _Complex cx = 4.0 + 3.0*(__extension__ 1.0iF); double _Complex cx43 = 4.0 + 3.0*(__extension__ 1.0iF); double _Complex cx11 = 1.0 + 1.0*(__extension__ 1.0iF); *fp_cxd(&cx) *= cx11; *fp_cxd(&cx) /= cx11; double r_cx = __real__(cx); double i_cx = __imag__(cx); double r_cx43 = __real__(cx43); double i_cx43 = __imag__(cx43); if( (r_cx == r_cx43) && (i_cx == i_cx43) ) { return 0; } else { abort (); } }