https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78593
--- Comment #1 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- Works with a public type declaration : $ cat z2.f90 module m1 public type t integer :: a end type end module m2 use m1 interface operator(+) module procedure add end interface contains type(t) function add (x, y) type(t), intent(in) :: x, y add%a = x%a + y%a end end