https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123943
Bug ID: 123943
Summary: [16 Regression] ice in gfc_resolve_forall, at
fortran/resolve.cc:12646
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: dcb314 at hotmail dot com
Target Milestone: ---
For this Fortran 90 code:
PROGRAM MAIN
IMPLICIT NONE
INTEGER :: K,L,M,X
INTEGER :: arr(5)
X=0
K=10
L=30
arr=(/ 1,2,3,4,5 /)
DO CONCURRENT(K=1:5,arr(K)>=2)
if(arr(K)==3) then
Do CONCURRENT(L=2:arr(K)+1,K<5)
IF(arr(L)==4) then
DO CONCURRENT(M=3:arr(L))
X=X+4
END DO
ELSE
X=X+3
END IF
END DO
else
X=X+1
end if
END DO
IF (X==17 .AND. K==10 .AND. L==30) THEN
Print *,"PASS"
ELSE
Print *,"FAIL",X
END IF
END PROGRAM
from the Fujitsu compiler test suite at
https://github.com/fujitsu/compiler-test-suite
works fine with gcc 15.2.0:
fujitsu $ ~/gcc/results.15.2.0/bin/gfortran -c -w
trunk/Fortran/0246/0246_0018.f90
fujitsu $
but fails with recent gcc trunk:
fujitsu $ ~/gcc/results.20260131.ubsan/bin/gfortran -c -w
trunk/Fortran/0246/0246_0018.f90
f951: internal compiler error: in gfc_resolve_forall, at
fortran/resolve.cc:12688
0x1fc04b7 internal_error
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostic-global-context.cc:787
0x1fca70b fancy_abort
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostics/context.cc:1812
0x4e2410 gfc_resolve_forall
/home/dcb42/gcc/working/gcc/../../trunk/gcc/fortran/resolve.cc:12688
The earliest gcc 16 compiler I have is dated 20260102
and it goes wrong there too:
fujitsu $ ~/gcc/results.20260102.asan.ubsan/bin/gfortran -c -w
trunk/Fortran/0246/0246_0018.f90
f951: internal compiler error: in gfc_resolve_forall, at
fortran/resolve.cc:12646
0x1ffc867 internal_error
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostic-global-context.cc:787
0x2006a8b fancy_abort
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostics/context.cc:1805
0x4e0fa0 gfc_resolve_forall
/home/dcb42/gcc/working/gcc/../../trunk/gcc/fortran/resolve.cc:12646
Recent gfortran compiler is:
fujitsu $ ~/gcc/results.20260131.ubsan/bin/gfortran -v
Using built-in specs.
COLLECT_GCC=/home/dcb42/gcc/results.20260131.ubsan/bin/gfortran
COLLECT_LTO_WRAPPER=/home/dcb42/gcc/results.20260131.ubsan/libexec/gcc/x86_64-pc-linux-gnu/16.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../trunk/configure
--prefix=/home/dcb42/gcc/results.20260131.ubsan --disable-bootstrap
--disable-doc --disable-multilib --with-build-config=bootstrap-ubsan
--with-pkgversion=c035985fd611dfb2 --enable-checking=df,extra,fold,rtl,yes
--enable-languages=c,c++,cobol,fortran
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 16.0.1 20260131 (experimental) (c035985fd611dfb2)
fujitsu $