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. >>> --- >