------- Additional Comments From pinskia at gcc dot gnu dot org 2004-05-22 23:08 ------- Note on the mainline now the loops are empty which is correct. This testcase will produce code but I cannot reproduce this on PPC or on x86: #ifdef MY_PURE extern double mycos (double) __attribute__ ((pure)); extern double mysin (double) __attribute__ ((pure)); #elif defined MY_CONST extern double mycos (double) __attribute__ ((const)); extern double mysin (double) __attribute__ ((const)); #else extern double mycos (double); extern double mysin (double); #endif
struct my_complex { double re; double im; }; int main(void) { struct my_complex u[2048]; int i; for (i = 0; i < 2048; ++i) { u[i].re = 1.0; u[i].im = 0.0; } for (i = 0; i < 2048; ++i) { struct my_complex *p = u; unsigned int j; for (j = 0; j < 2048; ++j) { double ur = p->re; double ui = p->im; double u2 = ur * ur + ui * ui; double cosv = mycos (u2); double sinv = mysin (u2); p->re = p->re * cosv - p->im * sinv; p->im = p->im * sinv + p->re * cosv; ++p; } } for (i = 0; i < 2048; ++i) { f(u[i]); } } Does this still happen on SPARC also? -- What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |WAITING http://gcc.gnu.org/bugzilla/show_bug.cgi?id=5739