[Bug fortran/82605] [PDT] ICE in insert_parameter_exprs, at fortran/decl.c:3154
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82605 Paul Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #6 from Paul Thomas --- Fixed. Thanks for the report. Paul
[Bug fortran/82605] [PDT] ICE in insert_parameter_exprs, at fortran/decl.c:3154
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82605 --- Comment #5 from Paul Thomas --- Author: pault Date: Fri Dec 1 15:05:55 2017 New Revision: 255311 URL: https://gcc.gnu.org/viewcvs?rev=255311=gcc=rev Log: 2017-12-01 Paul ThomasPR fortran/82605 * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL. (resolve_pdt): Correct typo in prior comment. Emit an error if any parameters are deferred and the object is neither pointer nor allocatable. PR fortran/82606 * decl.c (gfc_get_pdt_instance): Continue if the parameter sym is not present or has no name. Select the parameter by name of component, rather than component order. Remove all the other manipulations of 'tail' when building the pdt instance. (gfc_match_formal_arglist): Emit and error if a star is picked up in a PDT decl parameter list. PR fortran/82622 * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an info->end, use it rather than falling through to gcc_unreachable. (structure_alloc_comps): Check that param->name is non-null before comparing with the component name. * trans-decl.c (gfc_get_symbol_decl): Do not use the static initializer for PDT symbols. (gfc_init_default_dt): Do nothing for PDT symbols. * trans-io.c (transfer_array_component): Parameterized array components use the descriptor ubound since the shape is not available. PR fortran/82719 PR fortran/82720 * trans-expr.c (gfc_conv_component_ref): Do not use the charlen backend_decl of pdt strings. Use the hidden component instead. * trans-io.c (transfer_expr): Do not do IO on "hidden" string lengths. Use the hidden string length for pdt string transfers by adding it to the se structure. When finished nullify the se string length. PR fortran/82866 * decl.c (gfc_match_formal_arglist): If a name is not found or star is found, while reading a type parameter list, emit an immediate error. (gfc_match_derived_decl): On reading a PDT parameter list, on failure to match call gfc_error_recovery. PR fortran/82978 * decl.c (build_struct): Character kind defaults to 1, so use kind_expr whatever is the set value. (gfc_get_pdt_instance): Ditto. * trans-array.c (structure_alloc_comps): Copy the expression for the PDT string length before parameter substitution. Use this expression for evaluation and free it after use. 2017-12-01 Paul Thomas PR fortran/82605 * gfortran.dg/pdt_4.f03 : Incorporate the new error. PR fortran/82606 * gfortran.dg/pdt_19.f03 : New test. * gfortran.dg/pdt_21.f03 : New test. PR fortran/82622 * gfortran.dg/pdt_20.f03 : New test. * gfortran.dg/pdt_22.f03 : New test. PR fortran/82719 PR fortran/82720 * gfortran.dg/pdt_23.f03 : New test. PR fortran/82866 * gfortran.dg/pdt_24.f03 : New test. PR fortran/82978 * gfortran.dg/pdt_10.f03 : Correct for error in coding the for kind 4 component and change the kind check appropriately. * gfortran.dg/pdt_25.f03 : New test. Added: trunk/gcc/testsuite/gfortran.dg/pdt_19.f03 trunk/gcc/testsuite/gfortran.dg/pdt_20.f03 trunk/gcc/testsuite/gfortran.dg/pdt_21.f03 trunk/gcc/testsuite/gfortran.dg/pdt_22.f03 trunk/gcc/testsuite/gfortran.dg/pdt_23.f03 trunk/gcc/testsuite/gfortran.dg/pdt_24.f03 trunk/gcc/testsuite/gfortran.dg/pdt_25.f03 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/decl.c trunk/gcc/fortran/resolve.c trunk/gcc/fortran/trans-array.c trunk/gcc/fortran/trans-decl.c trunk/gcc/fortran/trans-expr.c trunk/gcc/fortran/trans-io.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/pdt_10.f03 trunk/gcc/testsuite/gfortran.dg/pdt_4.f03
[Bug fortran/82605] [PDT] ICE in insert_parameter_exprs, at fortran/decl.c:3154
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82605 --- Comment #4 from Dominique d'Humieres --- > Created attachment 42743 [details] > A fix for the problem > > With the attached patch, now produces the error: The patch works as expected. > Error: The object ‘x’ at (1) has a deferred LEN parameter ‘b’ and > is neither allocatable nor a pointer > > Giving x either attribute allows compilation and correct execution. > (I assume that x%a, being a KIND parameter, is OK in a KIND specification? I see something strange with/without the patch: program p type t(a, b) integer, kind :: a integer, len :: b real(a) :: r(b) end type type(t(8, 10)) :: x real(x%a) :: y print *, kind(x%r), kind(y) end prints 8 8 while program p type t(a, b) integer, kind :: a integer, len :: b real(a) :: r(b) end type type(t(8, :)), allocatable :: x real(x%a) :: y print *, kind(x%a), kind(y) end prints 4 8 In addition with the last test, I did not find a way to do any allocation.
[Bug fortran/82605] [PDT] ICE in insert_parameter_exprs, at fortran/decl.c:3154
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82605 Paul Thomas changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |pault at gcc dot gnu.org --- Comment #3 from Paul Thomas --- Created attachment 42743 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42743=edit A fix for the problem With the attached patch, now produces the error: [pault@pc30 pr82605]$ ~/irun/bin/gfortran -static-libgfortran pr*.f90 -fdump-tree-original pr82065.f90:7:21: type(t(8, :)) :: x 1 Error: The object ‘x’ at (1) has a deferred LEN parameter ‘b’ and is neither allocatable nor a pointer Giving x either attribute allows compilation and correct execution. (I assume that x%a, being a KIND parameter, is OK in a KIND specification? With the tweak to pdt_4.f03, it bootstraps and regtests OK. Paul