! { dg-do run } ! Tests the fix for the bug PR40629, in which the reference to 'x' ! in 'upper' wrongly host-associated with the symbol 'x' at module ! leve rather than the function. ! ! Contributed by Philippe Marguinaud ! MODULE m REAL :: x = 0 CONTAINS subroutine s call upper call lower CONTAINS SUBROUTINE upper y = x(3,1) if (int(y) .ne. 3) call abort END SUBROUTINE FUNCTION x(n, m) x = m*n END FUNCTION SUBROUTINE lower y = x(2,1) if (int(y) .ne. 2) call abort END SUBROUTINE END SUBROUTINE END MODULE use m call s end