ICEs with -O[123s], likely due to the VIEW_CONVERT_EXPR we construct from
*((int*)&f) after inlining.

struct FTprocCompressor {
    float * _amp;
    float * _env;
    float * _as;
};
static inline int f_round(float f)
{
  return *((int*)&f) - 0x4b400000;
}
void process (struct FTprocCompressor *_this, float *attack, float *release,
              float *data, unsigned int fftn)
{
  float ga;
  float gr;
  float att, rel;
  int fftN2 = (fftn+1) >> 1;
  int i;
  for (i = 0; i < fftN2-1; i++)
    {
      att =
((attack[i])<(0.002f)?(0.002f):((attack[i])>(1.0f)?(1.0f):(attack[i])));
      rel =
((release[i])<(att)?(att):((release[i])>(1.0f)?(1.0f):(release[i])));
      ga = _this->_as[f_round(att * (float)(256 -1))];
      gr = _this->_as[f_round(rel * (float)(256 -1))];
      if (_this->_amp[i] > _this->_env[i])
        {
          _this->_env[i] = _this->_env[i] * ga + _this->_amp[i] * (1.0f - ga);
          _this->_env[i] = _this->_env[i] * gr + _this->_amp[i] * (1.0f - gr);
        }
    }
}


-- 
           Summary: [4.4 Regression] ICE in subreg_get_info, at
                    rtlanal.c:3104
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org
GCC target triplet: i?86-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39241

Reply via email to