[Bug fortran/106546] New: Incorrect reuse of allocatable array temporaries under -O2 -fno-automatic

solomon.gibbs at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat Aug 6 15:37:33 GMT 2022


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

            Bug ID: 106546
           Summary: Incorrect reuse of allocatable array temporaries under
                    -O2 -fno-automatic
           Product: gcc
           Version: 10.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: solomon.gibbs at gmail dot com
  Target Milestone: ---

Created attachment 53420
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53420&action=edit
Test program that produces the error when compiled and run as described

I get an array extent error when running code using allocatable array
temporaries compiled with with the flags -O2 -fcheck=bounds -fno-automatic. The
error does not occur with -fautomatic instead of -fno-automatic. 

I believe the generated code is trying to reuse the allocated array temporary,
but does not correctly manage resizing it before reuse. It appears that once
the temporary is allocated with the maximum possible size, it is never
reallocated with a smaller size. 

I have observed this behavior with GFortran 8.5, 9.4, and 10.3.

The attached code example shows the behavior. Compiled as
gfortran-10 -o bogus bogus.f90 -O2 -fcheck=bounds -fno-automatic -Wall -Wextra

The executable will eventually crash with an error like: 
Fortran runtime error: Incorrect extent in argument B in MATMUL intrinsic in
dimension 1: is 6, should be 2
Error termination. Backtrace:
#0  0x7f39f6af6d21 in ???
#1  0x7f39f6af7869 in ???
#2  0x7f39f6af7d99 in ???
#3  0x564889bb5e87 in ???
#4  0x564889bb5144 in ???
#5  0x7f39f6908082 in __libc_start_main
        at ../csu/libc-start.c:308
#6  0x564889bb517d in ???
#7  0xffffffffffffffff in ???


$ gfortran-10 -v
Using built-in specs.
COLLECT_GCC=gfortran-10
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='Ubuntu
10.3.0-1ubuntu1~20.04' --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-S4I5Pr/gcc-10-10.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-S4I5Pr/gcc-10-10.3.0/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.3.0 (Ubuntu 10.3.0-1ubuntu1~20.04)


More information about the Gcc-bugs mailing list