https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118149
--- Comment #4 from Sam James <sjames at gcc dot gnu.org> --- Reduced: ``` float *fastconv_parse_dst; void fastconv_parse() { float r3k = fastconv_parse_dst[1] - fastconv_parse_dst[3], i0k = fastconv_parse_dst[4] + fastconv_parse_dst[6], i1k = fastconv_parse_dst[4] - fastconv_parse_dst[6], i2k = fastconv_parse_dst[5] + fastconv_parse_dst[7]; fastconv_parse_dst[1] = fastconv_parse_dst[0]; fastconv_parse_dst[4] = fastconv_parse_dst[5] = i0k - i2k; fastconv_parse_dst[6] = fastconv_parse_dst[7] = i1k + r3k; } ``` Just '-O2' is enough.