Hello world, I have committed the attached patch as obvious and simple after regression-testing, as rev. 246388.
This is a case where the location checking pass did its job and found a place where the location information was indeed missing. Regards Thomas 2017-03-22 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/80142 * frontend-passes.c (combine_array_constructor): Take location of new expression from constructor expression instead of constructor. 2017-03-22 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/80142 * gfortran.dg/any_loc.f90: New test case.
Index: frontend-passes.c =================================================================== --- frontend-passes.c (Revision 245760) +++ frontend-passes.c (Arbeitskopie) @@ -1381,7 +1381,7 @@ combine_array_constructor (gfc_expr *e) new_expr->ts = e->ts; new_expr->expr_type = EXPR_OP; new_expr->rank = c->expr->rank; - new_expr->where = c->where; + new_expr->where = c->expr->where; new_expr->value.op.op = e->value.op.op; if (scalar_first)
! { dg-do compile } ! { dg-options "-ffrontend-optimize" } ! PR fortran/80142 - the location on the expression of the ! unrolled any statement was not correctly set. ! Test case by Harald Anlauf. MODULE gfcbug140 implicit none integer ,parameter :: WV_NONE = 1 integer, parameter :: WV_CDV_4 = 23 integer, parameter :: WV_CDV_8 = 24 integer, parameter :: wv_CDV_list(2) = [ WV_CDV_4, WV_CDV_8 ] integer :: basis = WV_NONE contains subroutine wave_1d (x) real, intent(inout) :: x(:,:) integer :: oldbase oldbase = basis if (any (basis == wv_CDV_list(:))) then end if basis = oldbase end subroutine wave_1d !- subroutine mr_gp_mat (A) real, intent(inout) :: A (:,:) call wave_1d (A) end subroutine mr_gp_mat end module gfcbug140