Hi Thomas, With your patch, compiling the following test
program logtest3 implicit none logical :: x = .true. integer, parameter :: I_FINDLOC_BACK(1) = findloc([1,1],1, & back=x) end program logtest3 gives an ICE gfc: internal compiler error: Segmentation fault: 11 signal terminated program f951 I see some kind of "infinite" recursion … frame #899971: 0x0000000100037e44 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_init_expr_arguments(e=0x000000014c34bd80) at expr.c:2374 frame #899972: 0x0000000100037e24 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_conversion(e=0x000000014c34bd80) frame #899973: 0x0000000100037e1d f951`gfc_check_init_expr(e=0x000000014c34bd80) frame #899974: 0x0000000100037e44 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_init_expr_arguments(e=0x000000014c34bc40) at expr.c:2374 frame #899975: 0x0000000100037e24 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_conversion(e=0x000000014c34bc40) frame #899976: 0x0000000100037e1d f951`gfc_check_init_expr(e=0x000000014c34bc40) frame #899977: 0x0000000100037e44 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_init_expr_arguments(e=0x000000014c34bb00) at expr.c:2374 frame #899978: 0x0000000100037e24 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_conversion(e=0x000000014c34bb00) frame #899979: 0x0000000100037e1d f951`gfc_check_init_expr(e=0x000000014c34bb00) frame #899980: 0x0000000100037e44 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_init_expr_arguments(e=0x000000014c34b9c0) at expr.c:2374 frame #899981: 0x0000000100037e24 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_conversion(e=0x000000014c34b9c0) frame #899982: 0x0000000100037e1d f951`gfc_check_init_expr(e=0x000000014c34b9c0) Also in gfortran.dg/findloc_4.f90 should not the lines print *,findloc(a,value=1.5,dim=2,back=.true.) print *,findloc(a,value=1,dim=1,mask=lo) converted to tests? Thanks for working on the implementation of FINDLOC. Dominique