[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 anlauf at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Target Milestone|--- |13.3 Resolution|--- |FIXED --- Comment #5 from anlauf at gcc dot gnu.org --- Fixed on mainline for gcc-14, and backported to 13-branch. Closing. Thanks for the report!
[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 --- Comment #4 from GCC Commits --- The releases/gcc-13 branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:4e9f475cdc8617f94c903656faaf28910c21c29b commit r13-8445-g4e9f475cdc8617f94c903656faaf28910c21c29b Author: Harald Anlauf Date: Mon Mar 11 22:05:51 2024 +0100 Fortran: handle procedure pointer component in DT array [PR110826] gcc/fortran/ChangeLog: PR fortran/110826 * array.cc (gfc_array_dimen_size): When walking the ref chain of an array and the ultimate component is a procedure pointer, do not try to figure out its dimension even if it is a array-valued function. gcc/testsuite/ChangeLog: PR fortran/110826 * gfortran.dg/proc_ptr_comp_53.f90: New test. (cherry picked from commit 81ee1298b47d3f3b3712ef3f3b2929ca26c4bcd2)
[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 --- Comment #3 from GCC Commits --- The master branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:81ee1298b47d3f3b3712ef3f3b2929ca26c4bcd2 commit r14-9442-g81ee1298b47d3f3b3712ef3f3b2929ca26c4bcd2 Author: Harald Anlauf Date: Mon Mar 11 22:05:51 2024 +0100 Fortran: handle procedure pointer component in DT array [PR110826] gcc/fortran/ChangeLog: PR fortran/110826 * array.cc (gfc_array_dimen_size): When walking the ref chain of an array and the ultimate component is a procedure pointer, do not try to figure out its dimension even if it is a array-valued function. gcc/testsuite/ChangeLog: PR fortran/110826 * gfortran.dg/proc_ptr_comp_53.f90: New test.
[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 anlauf at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |anlauf at gcc dot gnu.org Priority|P3 |P4 --- Comment #2 from anlauf at gcc dot gnu.org --- Submitted: https://gcc.gnu.org/pipermail/fortran/2024-March/060314.html
[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 anlauf at gcc dot gnu.org changed: What|Removed |Added CC||anlauf at gcc dot gnu.org --- Comment #1 from anlauf at gcc dot gnu.org --- The following patch appears to fix the ICE and produce working code: diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index 3a6e3a7c95b..0cb636b22c4 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -2597,6 +2597,13 @@ gfc_array_dimen_size (gfc_expr *array, int dimen, mpz_t *result) case EXPR_FUNCTION: for (ref = array->ref; ref; ref = ref->next) { + /* Ultimate component is a procedure pointer. */ + if (ref->type == REF_COMPONENT + && !ref->next + && ref->u.c.component->attr.function + && IS_PROC_POINTER (ref->u.c.component)) + return false; + if (ref->type != REF_ARRAY) continue;
[Bug fortran/110826] Fortran array of derived type with a pointer to function with dimensional arguments fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110826 Jonathan Wakely changed: What|Removed |Added Last reconfirmed||2024-03-08 Ever confirmed|0 |1 Keywords||ice-on-valid-code Status|UNCONFIRMED |NEW