https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101038
--- Comment #1 from David Binderman <dcb314 at hotmail dot com> --- Reduced C++ code is: typedef char quint8; typedef struct { quint8 green, blue; } CharPixel; CharPixel *equalize_equalize_map; int equalize_i; void equalize() { unsigned low_0, high_0, low_1, high_1; for (; equalize_i; ++equalize_i) { equalize_equalize_map[equalize_i].green = 255 * (equalize_equalize_map[equalize_i].green - low_1) / (high_1 - low_1); equalize_equalize_map[equalize_i].blue = 255 * (equalize_equalize_map[equalize_i].blue - low_0) / (high_0 - low_0); } } -march=bdver2 not needed, but -O3 is.