[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