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.

Reply via email to