------- Additional Comments From pinskia at gcc dot gnu dot org 2005-01-30
23:07 -------
(In reply to comment #8)
> (In reply to comment #7)
> > Triggered by this change:
> I think that only added the pure attribute on __builtin_cos.
> You might want to try this testcase which shows the problem without a builtin:
Obvoiusly I mean the following (which is comment #5 changing __builtin_cos to a
function with the
attribute pure added):
loat f(float) __attribute__((__pure__));
void FFT(int NumSamples, float *RealOut, float ar1)
{
int i5, n, j, i, BlockEnd, BlockSize;
float pretmp2, cm1;
i = 0;
do {
RealOut[i++] = ar1 ? ar1 : 0.0;
} while (NumSamples <= i);
BlockEnd = 1;
BlockSize = 2;
do {
cm1 = f (-1.0e+0);
j = 0;
i5 = 0;
goto L10;
while (1) {
do {
RealOut[j++] = pretmp2;
} while (BlockEnd > n++);
do {
j = i5 += BlockSize;
if (NumSamples <= i5)
{
BlockEnd = BlockSize;
BlockSize <<= 1;
goto L23432;
}
L10:;
} while (BlockEnd <= 0);
pretmp2 = cm1 * ar1;
n = 0;
}
L23432:;
} while (NumSamples >= BlockSize);
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19698