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

            Bug ID: 119030
           Summary: 15 Regression wrong optimization
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: frank.mehnert at googlemail dot com
  Target Milestone: ---

Compiling our local project reveals some unexpected behavior when using gcc-15.
I was able to extract the following example code.

Either this problem is specific to x86_64 (does not happen for aarch64) or the
compiler version matters:
- x86_64/wrong: 15.0.1 20250220
- aarch64/OK: 15.0.1 20250208

+++

#include <cstdio>

static inline unsigned check_bit_15_set(long tag)
{
  return tag & 0x8000;
}

static inline long check_error(long tag)
{
  if (check_bit_15_set(tag))
    return -1000;
  else
    return tag >> 16;
}

long tag = 0xffff'ffff'fffe'0000L;

int main()
{
  long ret = check_error(tag);
  if (ret >= 0)
    printf("gcc %u: UNEXPECTED!\n", __GNUC__);
  else
    printf("gcc %u: OK\n", __GNUC__);
  return 0;
}

+++

Output of binary compiled with 'gcc-14 -O2 -m64' for x86_64:
gcc 14: OK

Output of binary compiled with 'gcc-15 -O2 -m64' for x86_64:
gcc 15: UNEXPECTED!

Output of binary compiled with 'gcc-15 -O1 -m64' for x86_64:
gcc 15: UNEXPECTED!

Output of binary compiled with 'gcc-15 -O0 -m64' for x86_64:
gcc 15: OK

$ x86_64-linux-gnu-g++-15 -v
Using built-in specs.
COLLECT_GCC=x86_64-linux-gnu-g++-15
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/15/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 15-20250220-1'
--with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust,cobol,algol68
--prefix=/usr --with-gcc-major-version-only --program-suffix=-15
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify
--enable-plugin --enable-default-pie --with-system-zlib
--enable-libphobos-checking=release --with-target-system-zlib=auto
--enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet
--with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32
--enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none=/home/packages/gcc/15/gcc-15-15-20250220/debian/tmp-nvptx/usr,amdgcn-amdhsa=/home/packages/gcc/15/gcc-15-15-20250220/debian/tmp-gcn/usr
--enable-offload-defaulted --without-cuda-driver
--enable-checking=yes,extra,rtl --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.0.1 20250220 (experimental) [master r15-7637-g94d01a88470]
(Debian 15-20250220-1)

+++

Output of binary compiled with 'gcc-15 -O2' for aarch64-linux-gnu:
gcc-15: OK

$ aarch64-linux-gnu-g++ -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-g++-15
COLLECT_LTO_WRAPPER=/usr/libexec/gcc-cross/aarch64-linux-gnu/15/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 15-20250208-1'
--with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-15 --enable-shared
--enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext
--enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/
--enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace
--enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support
--enable-plugin --enable-default-pie --with-system-zlib
--enable-libphobos-checking=release --without-target-system-zlib
--enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror
--enable-checking=yes,extra,rtl --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=aarch64-linux-gnu
--program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.0.1 20250208 (experimental) [master r15-7437-g64d8ea056a5]
(Debian 15-20250208-1)

Reply via email to