[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 anlauf at gcc dot gnu.org changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #10 from anlauf at gcc dot gnu.org --- Fixed on master for gcc-11, and backported to 10-branch, as well as 9- and 8-branches with minor adjustment. Closing. Thanks for the report!
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #9 from CVS Commits --- The releases/gcc-8 branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:56f83e64e179f2ff5bb4161db076d7e6ae1c0a3f commit r8-10675-g56f83e64e179f2ff5bb4161db076d7e6ae1c0a3f Author: Harald Anlauf Date: Sun Nov 29 23:23:16 2020 +0100 PR fortran/98017 - Suspected regression using PACK When substituting a parameter variable of type character, the character length was reset to 1. Fix this by copying the length. gcc/fortran/ChangeLog: * expr.c (simplify_parameter_variable): Fix up character length after copying an array-valued expression. gcc/testsuite/ChangeLog: * gfortran.dg/pr98017.f90: New test. (cherry picked from commit bb67ad5cff58a707aaae645d4f45a913d8511c86)
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #8 from CVS Commits --- The releases/gcc-9 branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:342be4dce16630575e2de21dbeec4baaed7a143a commit r9-9109-g342be4dce16630575e2de21dbeec4baaed7a143a Author: Harald Anlauf Date: Sun Nov 29 23:23:16 2020 +0100 PR fortran/98017 - Suspected regression using PACK When substituting a parameter variable of type character, the character length was reset to 1. Fix this by copying the length. gcc/fortran/ChangeLog: * expr.c (simplify_parameter_variable): Fix up character length after copying an array-valued expression. gcc/testsuite/ChangeLog: * gfortran.dg/pr98017.f90: New test. (cherry picked from commit bb67ad5cff58a707aaae645d4f45a913d8511c86)
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #7 from CVS Commits --- The releases/gcc-10 branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:86c580ded1d58c4e06165d38a0f447d587152179 commit r10-9125-g86c580ded1d58c4e06165d38a0f447d587152179 Author: Harald Anlauf Date: Sun Nov 29 23:23:16 2020 +0100 PR fortran/98017 - Suspected regression using PACK When substituting a parameter variable of type character, the character length was reset to 1. Fix this by copying the length. gcc/fortran/ChangeLog: * expr.c (simplify_parameter_variable): Fix up character length after copying an array-valued expression. gcc/testsuite/ChangeLog: * gfortran.dg/pr98017.f90: New test. (cherry picked from commit bb67ad5cff58a707aaae645d4f45a913d8511c86)
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #6 from CVS Commits --- The master branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:bb67ad5cff58a707aaae645d4f45a913d8511c86 commit r11-5526-gbb67ad5cff58a707aaae645d4f45a913d8511c86 Author: Harald Anlauf Date: Sun Nov 29 23:23:16 2020 +0100 PR fortran/98017 - Suspected regression using PACK When substituting a parameter variable of type character, the character length was reset to 1. Fix this by copying the length. gcc/fortran/ChangeLog: * expr.c (simplify_parameter_variable): Fix up character length after copying an array-valued expression. gcc/testsuite/ChangeLog: * gfortran.dg/pr98017.f90: New test.
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #5 from anlauf at gcc dot gnu.org --- Patch: https://gcc.gnu.org/pipermail/fortran/2020-November/055367.html
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 anlauf at gcc dot gnu.org changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |anlauf at gcc dot gnu.org Host|ubuntu 20.04| Keywords||wrong-code Priority|P3 |P4 Target Milestone|--- |8.5 Status|NEW |ASSIGNED --- Comment #4 from anlauf at gcc dot gnu.org --- I have a patch.
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 --- Comment #3 from anlauf at gcc dot gnu.org --- Further reduced variant: program p implicit none character(*), parameter :: exprs(1) = ['abc()'] print *, len (pack ( exprs , exprs(:)(:1) =='a')) print *, len (pack (['abc()'],['abc()' (:1)]=='a')) end gcc-7 prints: 5 5 while 8 and newer print: 1 5 My debugging attempts so far suggest that this part of expr.c corrupts the string length: 227 if (e->expr_type == EXPR_VARIABLE && e->rank > 0 228 && e->symtree->n.sym->attr.flavor == FL_PARAMETER) 229 gfc_simplify_expr (e, 1); After gfc_simplify_expr (e, 1), (gdb) p *e->ts.u.cl->length->value.integer._mp_d $34 = 1 for the first variant, while we don't simplify for the second and keep (gdb) p *e->ts.u.cl->length->value.integer._mp_d $37 = 5
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 anlauf at gcc dot gnu.org changed: What|Removed |Added CC||anlauf at gcc dot gnu.org --- Comment #2 from anlauf at gcc dot gnu.org --- It's much more interesting than a mere regression. Reduced and modified testcase: program p implicit none integer :: i character(*), parameter :: exprs(1) = ['abc()'] print *, (pack(exprs,exprs(:)(:1)=='a'),i=1,1) print *, (pack(exprs,exprs(:)(:1)=='a') ) end 7.4.1 gives: abc() a 8.4.1 and later give: a a Expected output: abc() abc()
[Bug fortran/98017] [8/9/10/11 Regression] Suspected regression (relative to 7.5) using PACK in iolist since r8-4151-g6c6bde30706c29ff
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98017 Martin Liška changed: What|Removed |Added Ever confirmed|0 |1 Last reconfirmed||2020-11-26 CC||marxin at gcc dot gnu.org, ||tkoenig at gcc dot gnu.org Status|UNCONFIRMED |NEW Summary|Suspected regression|[8/9/10/11 Regression] |(relative to 7.5) using |Suspected regression |PACK in iolist |(relative to 7.5) using ||PACK in iolist since ||r8-4151-g6c6bde30706c29ff --- Comment #1 from Martin Liška --- Confirmed, started with r8-4151-g6c6bde30706c29ff.