This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, Fortran, F03] PR 84409: check DTIO arguments for character len


2018-02-15 21:16 GMT+01:00 Steve Kargl <sgk@troutmask.apl.washington.edu>:
> On Thu, Feb 15, 2018 at 09:03:55PM +0100, Janus Weil wrote:
>>
>> Regtests cleanly on x86_64-linux-gnu. Ok for trunk?
>>
>
> Looks good to me with a question below.

Thanks for the feedback, Steve.


>> Index: gcc/fortran/interface.c
>> ===================================================================
>> --- gcc/fortran/interface.c   (revision 257672)
>> +++ gcc/fortran/interface.c   (working copy)
>> @@ -4702,6 +4702,10 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool
>>      gfc_error ("DTIO dummy argument at %L must be an "
>>              "ASSUMED SHAPE ARRAY", &fsym->declared_at);
>>
>> +  if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL)
>> +    gfc_error ("DTIO character argument at %L must have assumed length",
>> +               &fsym->declared_at);
>> +
>
> If the above is a numbered constraint in the Standard,
> can you add a comment of the form /* F03:C1111.  */
> above the if-statement.

Well, the if statement that I'm adding is not covered by a single
clause in the standard. Instead the DTIO interfaces are described as a
whole in a chapter, whose number I'm now adding in the comment above
the function:


Index: gcc/fortran/interface.c
===================================================================
--- gcc/fortran/interface.c    (revision 257672)
+++ gcc/fortran/interface.c    (working copy)
@@ -4673,7 +4673,7 @@ gfc_check_typebound_override (gfc_symtree* proc, g

 /* The following three functions check that the formal arguments
    of user defined derived type IO procedures are compliant with
-   the requirements of the standard.  */
+   the requirements of the standard, see F03:9.5.3.7.2 (F08:9.6.4.8.3).  */

 static void
 check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool typebound, bt type,
@@ -4702,6 +4702,10 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool
     gfc_error ("DTIO dummy argument at %L must be an "
            "ASSUMED SHAPE ARRAY", &fsym->declared_at);

+  if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL)
+    gfc_error ("DTIO character argument at %L must have assumed length",
+               &fsym->declared_at);
+
   if (fsym->attr.intent != intent)
     gfc_error ("DTIO dummy argument at %L must have INTENT %s",
            &fsym->declared_at, gfc_code2string (intents, (int)intent));



Will commit this shortly.

Cheers,
Janus


2018-02-15 21:16 GMT+01:00 Steve Kargl <sgk@troutmask.apl.washington.edu>:
> On Thu, Feb 15, 2018 at 09:03:55PM +0100, Janus Weil wrote:
>>
>> Regtests cleanly on x86_64-linux-gnu. Ok for trunk?
>>
>
> Looks good to me with a question below.
>
>> Index: gcc/fortran/interface.c
>> ===================================================================
>> --- gcc/fortran/interface.c   (revision 257672)
>> +++ gcc/fortran/interface.c   (working copy)
>> @@ -4702,6 +4702,10 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool
>>      gfc_error ("DTIO dummy argument at %L must be an "
>>              "ASSUMED SHAPE ARRAY", &fsym->declared_at);
>>
>> +  if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL)
>> +    gfc_error ("DTIO character argument at %L must have assumed length",
>> +               &fsym->declared_at);
>> +
>
> If the above is a numbered constraint in the Standard,
> can you add a comment of the form /* F03:C1111.  */
> above the if-statement.
>
> --
> Steve


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]