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)