https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125650
Bug ID: 125650
Summary: ice in gfc_conv_expr_op, at fortran/trans-expr.cc:4390
Product: gcc
Version: 17.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 F90 source code:
MODULE mod1
IMPLICIT NONE
INTERFACE OPERATOR( + )
MODULE PROCEDURE contt
END INTERFACE
CONTAINS
FUNCTION contt(dd1,dd2)
IMPLICIT NONE
CHARACTER(LEN = 8) :: contt
CHARACTER(LEN = 3),INTENT(IN) :: dd1
CHARACTER(LEN = 5),INTENT(IN) :: dd2
contt = dd1 // dd2
END FUNCTION
END MODULE
PROGRAM main
USE mod1
IMPLICIT NONE
CHARACTER(LEN = 3) :: arg1 = 'aaa'
CHARACTER(LEN =5) :: arg2 = 'ccccc'
ASSOCIATE(aa => arg1 , bb => arg2 , cc => arg1 + arg2)
IF(cc(3:5) .EQ. 'acc') THEN
PRINT*,'pass'
ELSE
PRINT*,101
END IF
END ASSOCIATE
END PROGRAM
compiled by recent gfortran, does this:
~/gcc/results/bin/gfortran -c -w
/home/dcb42/fujitsu/trunk/Fortran/0283/0283_0557.f90
/home/dcb42/fujitsu/trunk/Fortran/0283/0283_0557.f90:28:5:
28 | IF(cc(3:5) .EQ. 'acc') THEN
| 1
internal compiler error: in gfc_conv_expr_op, at fortran/trans-expr.cc:4390
0x2031697 internal_error
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostic-global-context.cc:787
0x203b8eb fancy_abort
/home/dcb42/gcc/working/gcc/../../trunk/gcc/diagnostics/context.cc:1813
0x57f269 gfc_conv_expr_op
/home/dcb42/gcc/working/gcc/../../trunk/gcc/fortran/trans-expr.cc:4390
The code is from the Fujitsu compiler test suite on github.com.
I only have compilers going back to 12.1, and they all don't like it:
$ ~/gcc/results.12.1.0/bin/gfortran -c -w
/home/dcb42/fujitsu/trunk/Fortran/0283/0283_0557.f90
/home/dcb42/fujitsu/trunk/Fortran/0283/0283_0557.f90:28:5:
28 | IF(cc(3:5) .EQ. 'acc') THEN
| 1
internal compiler error: in gfc_conv_expr_op, at fortran/trans-expr.cc:3885
0x551f95 gfc_conv_expr_op
/home/dcb42/gcc/working/gcc/../../gcc-12.1.0/gcc/fortran/trans-expr.cc:3885
$ ~/gcc/results.12.1.0/bin/gfortran -v
Using built-in specs.
COLLECT_GCC=/home/dcb42/gcc/results.12.1.0/bin/gfortran
COLLECT_LTO_WRAPPER=/home/dcb42/gcc/results.12.1.0/libexec/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-12.1.0/configure
--prefix=/home/dcb42/gcc/results.12.1.0 --disable-bootstrap --disable-doc
--disable-multilib --with-pkgversion=12.1.0
--enable-checking=df,extra,fold,rtl,yes --enable-languages=c,c++,fortran
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.1.0 (12.1.0)
foundBugs $
For reference, flang is happy with the code:
foundBugs $ flang -c -w
/home/dcb42/fujitsu/trunk/Fortran/0283/0283_0557.f90foundBugs
$