[Bug tree-optimization/112346] [13 Regression] Wrong code produced with -O2
shaohua.li at inf dot ethz.ch
gcc-bugzilla@gcc.gnu.org
Thu Nov 2 09:17:59 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112346
Shaohua Li <shaohua.li at inf dot ethz.ch> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |shaohua.li at inf dot ethz.ch
--- Comment #2 from Shaohua Li <shaohua.li at inf dot ethz.ch> ---
(In reply to Fedor Chelnokov from comment #0)
> This program
>
> #include <ctype.h>
>
> char *SkipAName(char *s) {
> if (('A' <= *s && *s <= 'Z') || ('a' <= *s && *s <= 'z') ) {
> while (isalnum(*s)) {
> s++;
> }
> }
> return s;
> }
>
> int TestName(char *name) {
> while (*name)
> name++;
> return 0;
> }
>
> int StrICmp(char *s1, char *s2) {
> while (*s1 && *s1 == *s2) {
> s1++;
> s2++;
> }
> return *s1 - *s2;
> }
>
> int DoTable(char *s) {
> char *name, c;
> name = s;
> s = SkipAName(s);
> c = *s;
> *s = 0;
> TestName(name);
> *s = c;
> if (*s == '(')
> return 3;
> if (*s != ',')
> return 2;
> *s = 0;
> return StrICmp(name, "sparse");
> }
>
> int main() {
> char buf[] = "sparse,C(1)";
> return DoTable(buf);
> }
>
> shall return 0, but in GCC 13 with -O2 it returns 44. Online demo:
> https://gcc.godbolt.org/z/c6W33T1zK
>
> Related discussion: https://stackoverflow.com/q/77407156/7325599
Hi, it seems that this test case is reduced from a real project. Could you tell
me which project it is from?
More information about the Gcc-bugs
mailing list