https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114566
--- Comment #4 from Yuxuan Shui <yshuiv7 at gmail dot com> --- Reduced a bit further: void setup_tone_curves(float binHz, float center_decay_rate) { float workc[8][56]; memset(workc, 0, sizeof(workc)); for (int j = 0; j < 8; j++) { for (int k = 0; k < 56; k++) { float adj = k * center_decay_rate; if (adj < 0.) adj = 0.; if (adj > 0.) adj = 0.; workc[j][k] += adj; } } int lo_curve = log(binHz); } Some observations: 1. lo_curve, although dead code, triggers the bug. 2. the 2 if's in the loop are also required for this bug. 3. workc has to be initialized with memset, aggregate initializer doesn't trigger the bug.