https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66929
--- Comment #3 from Mikael Morin <mikael at gcc dot gnu.org> --- Reduced test: module iso_varying_string type, public :: varying_string character(LEN=1), dimension(:), allocatable :: chars end type varying_string interface operator(/=) module procedure op_ne_VS_CH end interface operator (/=) interface trim module procedure trim_ end interface contains elemental function op_ne_VS_CH (string_a, string_b) result (op_ne) type(varying_string), intent(in) :: string_a character(LEN=*), intent(in) :: string_b logical :: op_ne end function op_ne_VS_CH elemental function trim_ (string) result (trim_string) type(varying_string), intent(in) :: string type(varying_string) :: trim_string end function trim_ end module iso_varying_string module syntax_rules use iso_varying_string, string_t => varying_string contains subroutine set_rule_type_and_key () type(string_t) :: key if (trim (key) /= "") then end if end subroutine set_rule_type_and_key end module syntax_rules