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