[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821 --- Comment #4 from H.J. Lu --- Created attachment 53157 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53157&action=edit A patch
[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821 --- Comment #3 from Andrew Pinski --- (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; }
[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Severity|normal |enhancement Ever confirmed|0 |1 Last reconfirmed||2021-12-22 --- Comment #2 from Andrew Pinski --- Confirmed. Though for small strings it might even make sense to inline it, eg.: auto f(char c) { return strchr("123", c); } to 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; }
[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek --- For -Os that is an undesirable change because it makes the code larger. But otherwise yes, seems useful.