https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119815

            Bug ID: 119815
           Summary: [14/15 regression] wrong code at -O{1,2,3}
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chopra.kavya04 at gmail dot com
  Target Milestone: ---

program generates the wrong code at [14/15] for -O{1,2,3}. Godbolt link:
https://godbolt.org/z/aG4o6P9sj

kchopra@ast-epyc5:~/gcc_bugs$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/local/home/kchopra/compilers/libexec/gcc/x86_64-pc-linux-gnu/15.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure --prefix=/local/home/kchopra/compilers/
--with-local-prefix=/local/home/kchopra/compilers/
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.0.1 20250408 (experimental) (GCC) 
kchopra@ast-epyc5:~/gcc_bugs$ gcc -O0 bug.c ; ./a.out
kchopra@ast-epyc5:~/gcc_bugs$ gcc -O3 -fno-tree-slsr bug.c ; ./a.out 
Aborted
kchopra@ast-epyc5:~/gcc_bugs$ cat bug.c 
int a = 42;
int b = -31;
int c = 64;
int d = -23;
int e ;
int main() {                      
    b = 7 * b + 7 * a -6369335;
    d = 9 * d + 2 * b -524132189;
    goto f;                      
    g:     
        b =  -2 * c -7181144;                          
        d = a -2000682747;                          
        if (d >= 0) goto h;                          
        goto i;                      
    j:     
        b = 6 * b -2 * c + 1246173489;                          
        c = -5 * a -5 * c + 719474;                      
    i:     
        b = -e -b -58934776;                          
        e = a + e + 1416477846;                          
        if (-8 * b -e -212600684 >= 0) goto k;                          
        goto g;                      
    f:     
        e = -d + 4 * c -1752022944;                          
        goto j;                      
    k:     
        a = 9 * a + b + 218090558;                          
        if (c -227893274 >= 0) goto f;                      
    h:     
        if(a != -33550920) __builtin_abort();                      
}

Reply via email to