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

            Bug ID: 110569
           Summary: [14 Regression] Different results among -O0, -O1 and
                    -Os
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jwzeng at nuaa dot edu.cn
  Target Milestone: ---

Compiler explorer: https://godbolt.org/z/5qvhEnaoo

$ cat bug.c
int printf(const char *format, ...);
short a = 1;
unsigned int b[1][2][16][4];
signed char d[1][2][16][4];
unsigned int res;
#define min(a, b) ((a) < (b) ? (a) : (b))
int main() {
    for (int i = 0; i < 16; ++i)
        for (int j = 2; j < 4; ++j) {
            d[0][1][i][j] = (signed char)-47;
        }
    for (signed char i = 0; i < 16; i += 4)
        for (signed char j = 2; j < 10; j += 4)
            res = min(1, a ? (unsigned short)d[0][1][i][2] : b[0][1][i][2 +
1]);
    printf("%d\n", res);
}
$ gcc-tk -O0 bug.c
1
$ gcc-tk -O1 bug.c
65489
$ gcc-tk -Os bug.c
-47
$
$ gcc-tk -v
Using built-in specs.
COLLECT_GCC=/home/compilers/gcc/gcc-trunk/bin/gcc
COLLECT_LTO_WRAPPER=/home/compilers/gcc/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk-source/gcc/configure
--enable-languages=c,c++,fortran --enable-checking=release
--enable-valgrind-annotations --disable-werror --disable-libstdcxx-pch
--enable-libgomp --enable-lto --enable-gold --with-plugin-ld=gold
--prefix=/usr/local/gcc-trunk
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 14.0.0 20230703 (experimental) [master r14-2244-g1ebf37ece3] (GCC)

Reply via email to