Re: [PATCH] fortran: [PR126018] Fix rejects character function invocation, as stop code

Jerry D <[email protected]> Thu, 2 Jul 2026 17:11:35 -0700
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
The master branch has been updated by Jerry DeLisle <[email protected]>:

https://gcc.gnu.org/g:b6de3eb243c91b6503d95cc1942f55378ae6cbae

commit r17-2099-gb6de3eb243c91b6503d95cc1942f55378ae6cbae
Author: Jerry DeLisle <[email protected]>
Date:   Wed Jul 1 14:03:23 2026 -0700


On 7/2/26 1:18 PM, Jerry D wrote:
> On 7/2/26 8:49 AM, Paul Richard Thomas wrote:
>> Hello Jerry,
>>
>> This looks OK for both mainline and backporting. I have a question
>> about the error message in the first chunk:
>>
>> +   gfc_reduce_init_expr (e);
>> +   if (e->expr_type != EXPR_CONSTANT)
>> +     {
>> +       gfc_error ("STOP code at %L must be a scalar default CHARACTER or "
>> + "INTEGER constant expression", &e->where);
>> +       goto cleanup;
>> +     }
>>
>> All that has been tested here is that the expression is constant. That
>> it be default character or integer is tested afterwards. Surely then,
>> the message should be:
>> "STOP code at %L must be a scalar constant expression"?
> 
> I can agree, I simply kept the original wording. I will make that change and 
> make sure it does not wiggle on the testsuite somewhere.
> 
> Thanks,
> 
> Jerry
> 
>>
>> Thanks for the patch.
>>
>> Paul
>>
>> On Thu, 2 Jul 2026 at 16:28, Jerry D <[email protected]> wrote:
>>>
>>> See attached patch.
>>>
>>> Regression tested on x86_64.
>>>
>>> OK for mainline?
>>>
>>> Also since this is fixing a rejects valid, I would like to backport.
>>>
>>> Regards,
>>>
>>> Jerry
>>> ---
>>> Expressions used in stop codes can be functions as long as they resolve to
>>> integer or character.
>>>
>>>          PR fortran/126018
>>>
>>> gcc/fortran/ChangeLog:
>>>
>>>          * match.cc (gfc_match_stopcode): Adjust the f2008 error check.If the
>>>          STOP code expr type is unknown, do not error. It will be checked in
>>>          gfc_resolve_code.
>>>          * resolve.cc (gfc_resolve_code): Add checks for EXEC_STOP and
>>>          EXEC_ERROR_STOP.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>>          * gfortran.dg/stop_function_code_1.f90: New test.
>>> ---
>