------- 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

Reply via email to