https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117643
--- Comment #28 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- --- snip --- > In iso-c-binding.def, one finds > > NAMED_CHARKNDCST (ISOCBINDING_CHAR, "c_char",gfc_default_character_kind) > > so kind('a') == kind(c_char_'a') on all targets. This implies that is_c_interop is a "don't care" if we check that type is character and the kind is gfc_default_character_kind all should work correctly. if (string->ts.type != BT_CHARACTER || (string->ts.type == BT_CHARACTER - && (string->ts.kind != 1 || string->ts.is_c_interop != 1))) + && (string->ts.kind != gfc_default_character_kind))) { gfc_error ("%qs argument of %qs intrinsic at %L shall have " "a type of CHARACTER(KIND=C_CHAR)", I have tested the above and all looks good to me.