https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105393
Bug ID: 105393 Summary: A simple for loop becomes an infinite when -O1/2/3 used Product: gcc Version: 10.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: 364961 at mail dot ru Target Milestone: --- Created attachment 52884 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52884&action=edit the preprocessed bug's source file The main function calls a function with a for loop inside. The called function is declared like boolean, but in fact doesn't return any result. In this case the for loop becomes infinite when any optimisation used. But if: - disable an optimisation; - return boolean result; - declare the function as void. The behaviour will become correct. It looks like the bug 49218, but a little bit different. build row: g++ -O2 -std=c++11 -c main.cpp main.o the compiler output: main.cpp: In function ‘bool initAllBuffers()’: aleksandr@workHost:~/work/multaleksandr@workHost:~/work/multex/ main.cpp:47:1: warning: no return statement in function returning non-void [-Wreturn-type] aleksandr@workHost:~/work/mulaleksandr@workHost:~/work/multex/a 47 | } g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --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 --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 10.2.1 20210110 (Debian 10.2.1-6)