https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119351
--- Comment #15 from Tamar Christina <tnfchris at gcc dot gnu.org> --- The following example reproduces the CFG but not the bad codegen: https://godbolt.org/z/Thzo7hz8P This generates the actual code I expected: _55 = {_2, _2, _2, _2}; _56 = {_11, _11, _11, _11}; _57 = {ci_y_16, ci_y_16, ci_y_16, ci_y_16}; _60 = _57 + { 0, 1, 2, 3 }; max_mask_71 = .WHILE_ULT (0, niters.4_38, { 0, 0, 0, 0 }); So I have look at what scenario we caused the other bad reduction.