[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #10 from jakub at gcc dot gnu dot org 2006-09-22 11:48 --- Subject: Bug 28600 Author: jakub Date: Fri Sep 22 11:48:18 2006 New Revision: 117137 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=117137 Log: 2006-08-09 Paul Thomas [EMAIL PROTECTED] PR fortran/28600 * trans-decl.c (gfc_get_symbol_decl): Ensure that the DECL_CONTEXT of the length of a character dummy is the same as that of the symbol declaration. * gfortran.dg/assumed_charlen_function_4.f90: New test. Added: branches/redhat/gcc-4_1-branch/gcc/testsuite/gfortran.dg/assumed_charlen_function_4.f90 Modified: branches/redhat/gcc-4_1-branch/gcc/fortran/ChangeLog branches/redhat/gcc-4_1-branch/gcc/fortran/trans-decl.c branches/redhat/gcc-4_1-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #9 from pault at gcc dot gnu dot org 2006-08-20 18:11 --- Fixed Paul -- pault at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #8 from pault at gcc dot gnu dot org 2006-08-20 05:46 --- Subject: Bug 28600 Author: pault Date: Sun Aug 20 05:45:43 2006 New Revision: 116268 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116268 Log: 2006-08-20 Paul Thomas [EMAIL PROTECTED] PR fortran/28601 PR fortran/28630 * gfortran.h : Eliminate gfc_dt_list structure and reference to it in gfc_namespace. * resolve.c (resolve_fl_derived): Remove the building of the list of derived types for the current namespace. * symbol.c (find_renamed_type): New function to find renamed derived types by symbol name rather than symtree name. (gfc_use_derived): Search parent namespace for identical derived type and use it, even if local version is complete, except in interface bodies. Ensure that renamed derived types are found by call to find_renamed_type. Recurse for derived type components. (gfc_free_dt_list): Remove. (gfc_free_namespace): Remove call to previous. * trans-types.c (copy_dt_decls_ifequal): Remove. (gfc_get_derived_type): Remove all the paraphenalia for association of derived types, including calls to previous. * match.c (gfc_match_allocate): Call gfc_use_derived to associate any derived types that are being allocated. PR fortran/20886 * resolve.c (resolve_actual_arglist): The passing of a generic procedure name as an actual argument is an error. PR fortran/28735 * resolve.c (resolve_variable): Check for a symtree before resolving references. PR fortran/28762 * primary.c (match_variable): Return MATCH_NO if the symbol is that of the program. PR fortran/28425 * trans-expr.c (gfc_trans_subcomponent_assign): Translate derived type component expressions other than another derived type constructor. PR fortran/28496 * expr.c (find_array_section): Correct errors in the handling of a missing start value for the index triplet in an array reference. PR fortran/18111 * trans-decl.c (gfc_build_dummy_array_decl): Before resetting reference to backend_decl, set it DECL_ARTIFICIAL. (gfc_get_symbol_decl): Likewise for original dummy decl, when a copy is made of an array. (create_function_arglist): Likewise for the _entry paramter in entry_masters. (build_entry_thunks): Likewise for dummies in entry thunks. PR fortran/28600 * trans-decl.c (gfc_get_symbol_decl): Ensure that the DECL_CONTEXT of the length of a character dummy is the same as that of the symbol declaration. PR fortran/28771 * decl.c (add_init_expr_to_sym): Remove setting of charlen for an initializer of an assumed charlen variable. PR fortran/28660 * trans-decl.c (generate_expr_decls): New function. (generate_dependency_declarations): New function. (generate_local_decl): Call previous if not either a dummy or a declaration in an entry master. 2006-08-20 Paul Thomas [EMAIL PROTECTED] PR fortran/28630 * gfortran.dg/used_types_2.f90: New test. PR fortran/28601 * gfortran.dg/used_types_3.f90: New test. PR fortran/20886 * gfortran.dg/generic_actual_arg.f90: New test. PR fortran/28735 * gfortran.dg/module_private_array_refs_1.f90: New test. PR fortran/28762 * gfortran.dg/program_name_1.f90: New test. PR fortran/28425 * gfortran.dg/derived_constructor_comps_1.f90: New test. PR fortran/28496 * gfortran.dg/array_initializer_2.f90: New test. PR fortran/18111 * gfortran.dg/unused_artificial_dummies_1.f90: New test. PR fortran/28600 * gfortran.dg/assumed_charlen_function_4.f90: New test. PR fortran/28771 * gfortran.dg/assumed_charlen_in_main.f90: New test. PR fortran/28660 * gfortran.dg/dependent_decls_1.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/array_initializer_2.f90 trunk/gcc/testsuite/gfortran.dg/assumed_charlen_function_4.f90 trunk/gcc/testsuite/gfortran.dg/assumed_charlen_in_main.f90 trunk/gcc/testsuite/gfortran.dg/dependent_decls_1.f90 trunk/gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90 trunk/gcc/testsuite/gfortran.dg/generic_actual_arg.f90 trunk/gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90 trunk/gcc/testsuite/gfortran.dg/program_name_1.f90 trunk/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90 trunk/gcc/testsuite/gfortran.dg/used_types_2.f90 trunk/gcc/testsuite/gfortran.dg/used_types_3.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/decl.c trunk/gcc/fortran/expr.c trunk/gcc/fortran/gfortran.h
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
-- jakub at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2006-08-04 12:55:02 |2006-08-09 14:00:33 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #4 from patchapp at dberlin dot org 2006-08-09 14:20 --- Subject: Bug number PR28600 A patch for this bug has been added to the patch tracker. The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00266.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #5 from jakub at gcc dot gnu dot org 2006-08-09 14:29 --- It was caused by the openmp changes, but guess usually the parent routine at least touches the dummy argument and therefore it would be added to the right context. I was testing: --- trans-decl.c.jj 2006-08-09 15:39:36.0 +0200 +++ trans-decl.c2006-08-09 15:44:35.0 +0200 @@ -884,7 +884,10 @@ gfc_get_symbol_decl (gfc_symbol * sym) if (TREE_CODE (length) == VAR_DECL DECL_CONTEXT (length) == NULL_TREE) { - gfc_add_decl_to_function (length); + if (sym-ns-proc_name-backend_decl == current_function_decl) + gfc_add_decl_to_function (length); + else + gfc_add_decl_to_parent_function (length); gfc_defer_symbol_init (sym); } } before I saw Paul's patch on gcc-patches, guess both versions will DTRT. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.2.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #6 from pault at gcc dot gnu dot org 2006-08-09 18:27 --- (In reply to comment #5) It was caused by the openmp changes, but guess usually the parent routine at least touches the dummy argument and therefore it would be added to the right context. I was testing: --- trans-decl.c.jj 2006-08-09 15:39:36.0 +0200 +++ trans-decl.c2006-08-09 15:44:35.0 +0200 @@ -884,7 +884,10 @@ gfc_get_symbol_decl (gfc_symbol * sym) if (TREE_CODE (length) == VAR_DECL DECL_CONTEXT (length) == NULL_TREE) { - gfc_add_decl_to_function (length); + if (sym-ns-proc_name-backend_decl == current_function_decl) + gfc_add_decl_to_function (length); + else + gfc_add_decl_to_parent_function (length); gfc_defer_symbol_init (sym); } } before I saw Paul's patch on gcc-patches, guess both versions will DTRT. Your call or mine, Jakub? I suggest a tall glass of beer and arm wrestling for the honours... Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #7 from jakub at gcc dot gnu dot org 2006-08-09 18:36 --- Go with your version, you posted first ;). I added the comment just to support your patch, that I independently came to a (almost) same fix. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.2.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.2.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600
[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment
--- Comment #3 from paul dot richard dot thomas at cea dot fr 2006-08-08 14:15 --- (In reply to comment #2) I wonder if this was caused by Jakub's patches for openmp. Or Richard Sandiford's patches. The above produces: gee () { int4 .s; __builtin_memmove ((*(char[0:][1:3] *) m.data)[NON_LVALUE_EXPR m.dim[0].stri de + m.offset], s, 3); } bar (s, n, _s) { struct array1_unknown m; bit_size_type D.914; unnamed type D.915; static void gee (void); .s = *n; D.914 = (bit_size_type) (unnamed type) .s * 8; D.915 = (unnamed type) .s; m.data = 0B; } so that .s is declared in gee but used in bar. This: subroutine bar(s, n) integer n character s*(*) character*3, dimension(:), pointer :: m contains subroutine gee m(1) = s(1:3) end subroutine gee end subroutine bar compiles correctly and outputs this code: gee () { __builtin_memmove ((*(char[0:][1:3] *) m.data)[NON_LVALUE_EXPR m.dim[0].stri de + m.offset], s, 3); bar (s, n, _s) { struct array1_unknown m; bit_size_type D.913; unnamed type D.914; static void gee (void); D.913 = (bit_size_type) (unnamed type) _s * 8; D.914 = (unnamed type) _s; m.data = 0B; } where _s is used directly. The declaration for .s needs to be boosted to the correct context. Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28600