1234287Sdim! { dg-do run } 2234287Sdim! Tests the fix for PR38907, in which any expressions, including unary plus, 3234287Sdim! in front of the call to S_REAL_SUM_I (marked) would throw the mechanism 4234287Sdim! for correcting invalid host association. 5234287Sdim! 6234287Sdim! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com> 7234287Sdim! 8234287Sdimmodule sa0054_stuff 9234287Sdim REAL :: S_REAL_SUM_2(10) = [(REAL (I), I = 1, 10)] 10234287Sdimcontains 11234287Sdim ELEMENTAL FUNCTION S_REAL_SUM_I (A) 12234287Sdim REAL :: S_REAL_SUM_I 13234287Sdim REAL, INTENT(IN) :: A 14234287Sdim X = 1.0 15249423Sdim S_REAL_SUM_I = X 16249423Sdim END FUNCTION S_REAL_SUM_I 17239462Sdim SUBROUTINE SA0054 (RDA) 18234287Sdim REAL RDA(:) 19234287Sdim RDA = + S_REAL_SUM_I (RDA) ! Reported problem => ICE 20234287Sdim RDA = RDA + S_REAL_SUM_2 (INT (RDA)) ! Also failed 21234287Sdim CONTAINS 22234287Sdim ELEMENTAL FUNCTION S_REAL_SUM_I (A) 23249423Sdim REAL :: S_REAL_SUM_I 24234287Sdim REAL, INTENT(IN) :: A 25234287Sdim S_REAL_SUM_I = 2.0 * A 26234287Sdim END FUNCTION S_REAL_SUM_I 27234287Sdim ELEMENTAL FUNCTION S_REAL_SUM_2 (A) 28234287Sdim REAL :: S_REAL_SUM_2 29234287Sdim INTEGER, INTENT(IN) :: A 30234287Sdim S_REAL_SUM_2 = 2.0 * A 31249423Sdim END FUNCTION S_REAL_SUM_2 32249423Sdim END SUBROUTINE 33234287Sdimend module sa0054_stuff 34234287Sdim 35234287Sdim use sa0054_stuff 36234287Sdim REAL :: RDA(10) = [(REAL(I), I = 1, 10)] 37234287Sdim call SA0054 (RDA) 38234287Sdim IF (ANY (INT (RDA) .ne. [(6 * I, I = 1, 10)])) print *, rda 39243830SdimEND 40243830Sdim