https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Confirmed. > auto f(char c) > { > auto t = "123"; > int t1; > switch (c) > { > case '1': > t1 = 1; > case '2': > t1 = 2; > case '3': > t1 = 3; > default: > t = 0; > return t; > } > return t+t1; > } I missed '\0' (and break's): auto f(char c) { auto t = "123"; int t1; switch (c) { case '1': t1 = 1; break; case '2': t1 = 2; break; case '3': t1 = 3; break; case '\0': t1 = 4; break; default: t = 0; return t; } return t+t1; }