https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107266
Bug ID: 107266 Summary: Reject kind=4 characters for BIND(C) – it invalid and generates wrong code Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: accepts-invalid, wrong-code Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org Target Milestone: --- There is code which expects that CHARACTER arguments inside BIND(C) procedures is kind=1 (alias C_CHAR): if (sym->ts.type == BT_CHARACTER && ((sym->attr.function && sym->attr.is_bind_c) || ((sym->attr.result || sym->attr.value) && sym->ns->proc_name && sym->ns->proc_name->attr.is_bind_c) || (sym->ts.deferred && (!sym->ts.u.cl || !sym->ts.u.cl->backend_decl)))) type = gfc_character1_type_node; else type = gfc_typenode_for_spec (&sym->ts, sym->attr.codimension); If one now tries to use: call foo(4_'abcd') contains subroutine foo(x) character(kind=4,len=4) :: x ... end end this creates inconsistent interfaces! Alternatively, if we want to support it, we need to change how this is handled to yield proper code!