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)

Reply via email to