http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47448
Summary: Accepts invalid ASSIGNMENT(=) which overrides intrinsic assignment Product: gcc Version: 4.6.0 Status: UNCONFIRMED Keywords: accepts-invalid, diagnostic Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: bur...@gcc.gnu.org bd satish shows at http://gcc.gnu.org/ml/fortran/2011-01/msg00209.html an example, which is accepted but invalid: interface assignment(=) module procedure return_char_array end interface contains subroutine return_char_array(outstr,instr) character, allocatable, intent(out) :: outstr(:) character(len=*), intent(in) :: instr The issue is that this interface would override an intrinsic assignment, which is not allowed. Or in word of the Fortran 2008 standard on "12.4.3.4.3 Defined assignments": "The first argument shall have INTENT (OUT) or INTENT (INOUT) and the second argument shall have INTENT (IN). Either the second argument shall be an array whose rank diers from that of the first argument, the declared types and kind type parameters of the arguments shall not conform as specified in Table 7.8, or the first argument shall be of derived type." As those constraints do not have a C number, the compiler is not required to diagnose this, but as quality of implementation it should. Other compilers: - g95: Error: Operator interface at (1) conflicts with the intrinsic operation - PathScale: Error: This specific interface "RETURN_CHAR_ARRAY" conflicts with the intrinsic use of "=". NAG shows a completely bogus error and ifort compiles and used the defined interface.