42 lines
894 B
Fortran
42 lines
894 B
Fortran
! { dg-do compile }
|
|
! PR42684 (42680) Ice with Interface.
|
|
MODULE mod1
|
|
IMPLICIT NONE
|
|
TYPE ta
|
|
INTEGER i
|
|
END TYPE ta
|
|
INTERFACE OPERATOR(+)
|
|
MODULE PROCEDURE add_a
|
|
END INTERFACE OPERATOR(+)
|
|
CONTAINS
|
|
FUNCTION add_a(lhs, rhs) RESULT(r)
|
|
TYPE(ta), INTENT(IN) :: lhs
|
|
TYPE(ta), INTENT(IN) :: rhs
|
|
TYPE(ta) :: r
|
|
!****
|
|
r%i = lhs%i + rhs%i
|
|
END FUNCTION add_a
|
|
END MODULE mod1
|
|
|
|
MODULE mod2
|
|
IMPLICIT NONE
|
|
TYPE tb
|
|
INTEGER j
|
|
END TYPE tb
|
|
INTERFACE OPERATOR(+)
|
|
MODULE PROCEDURE add_b
|
|
END INTERFACE OPERATOR(+)
|
|
CONTAINS
|
|
SUBROUTINE other_proc()
|
|
USE mod1 ! Causes ICE
|
|
END SUBROUTINE other_proc
|
|
FUNCTION add_b(lhs, rhs) RESULT(r)
|
|
TYPE(tb), INTENT(IN) :: lhs
|
|
TYPE(tb), INTENT(IN) :: rhs
|
|
TYPE(tb) :: r
|
|
!****
|
|
r%j = lhs%j + rhs%j
|
|
END FUNCTION add_b
|
|
END MODULE mod2
|
|
! { dg-final { cleanup-modules "mod1 mod2" } }
|