The following invalid program produces an ICE with gfortran (4.3 and 4.2.1).
The program does not ICEs if we replace the invalid line by one of the (valid) commented lines. If we don't use automatic arrays (ie we use dimension(length) instead of dimension(size(vectors)), there is no ICE either. $ cat test15.f module geometry implicit none integer, parameter :: prec = 8 integer, parameter :: length = 10 contains elemental function Mul(a, b) real(kind=prec) :: a real(kind=prec) :: b, Mul intent(in) :: a, b Mul = a * b end function Mul pure subroutine calcdAcc2(vectors, angles) real(kind=prec), dimension(:) :: vectors real(kind=prec), dimension(size(vectors),2) :: angles intent(in) :: vectors, angles real(kind=prec), dimension(size(vectors)) :: ax real(kind=prec), dimension(size(vectors),2) :: tmpAcc ! tmpAcc(1,:) = Mul(angles(1,1:2),ax(1)) ! tmpAcc(:,1) = Mul(angles(:,1),ax) tmpAcc(:,:) = Mul(angles(:,:),ax) end subroutine calcdAcc2 end module geometry $ /usr/local/bin/gfortran -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-svn/gcc/configure --enable-languages=c,fortran CFLAGS='-g -O0' Thread model: posix gcc version 4.3.0 20070906 (experimental) (GCC) Here is the backtrace from gdb : (gdb) bt #0 integer_onep (expr=0x0) at ../../gcc-svn/gcc/gcc/tree.c:1337 #1 0x080d0543 in gfc_conv_loop_setup (loop=0xbf9fed24) at ../../gcc-svn/gcc/gcc/fortran/trans-array.c:3250 #2 0x080e653a in gfc_trans_assignment_1 (expr1=0x894fed8, expr2=0x8950d10, init_flag=0 '\0') at ../../gcc-svn/gcc/gcc/fortran/trans-expr.c:3972 #3 0x080e6a55 in gfc_trans_assignment (expr1=0x894fed8, expr2=0x8950d10, init_flag=36 '$') at ../../gcc-svn/gcc/gcc/fortran/trans-expr.c:4152 #4 0x080e77b1 in gfc_trans_assign (code=0x8950678) at ../../gcc-svn/gcc/gcc/fortran/trans-expr.c:4164 #5 0x080c7552 in gfc_trans_code (code=0x8950678) at ../../gcc-svn/gcc/gcc/fortran/trans.c:970 #6 0x080de492 in gfc_generate_function_code (ns=0x894f5f0) at ../../gcc-svn/gcc/gcc/fortran/trans-decl.c:3258 #7 0x080c49ca in gfc_generate_module_code (ns=0x894d8c0) at ../../gcc-svn/gcc/gcc/fortran/trans.c:1190 #8 0x080991e6 in gfc_parse_file () at ../../gcc-svn/gcc/gcc/fortran/parse.c:3316 #9 0x080c027d in gfc_be_parse_file (set_yydebug=0) at ../../gcc-svn/gcc/gcc/fortran/f95-lang.c:300 #10 0x083455c0 in toplev_main (argc=13, argv=0xbf9ff284) at ../../gcc-svn/gcc/gcc/toplev.c:1045 #11 0x08108ccf in main (argc=-1212132032, argv=0x0) at ../../gcc-svn/gcc/gcc/main.c:35 Thank you guys for all the great work you do :) -- Summary: ICE (segfault) on invalid code with wrongly shaped arguments to elemental procedures Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mikael dot morin at tele2 dot fr http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33343