[Bug fortran/29387] ICE on character array function of variable length
--- Comment #11 from chaoyingfu at gcc dot gnu dot org 2006-11-30 01:10 --- Subject: Bug 29387 Author: chaoyingfu Date: Thu Nov 30 01:10:16 2006 New Revision: 119349 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=119349 Log: Merged revisions 118220-118221 via svnmerge from svn+ssh://[EMAIL PROTECTED]/svn/gcc/trunk r118220 | pault | 2006-10-30 22:03:24 -0800 (Mon, 30 Oct 2006) | 29 lines 2006-10-31 Paul Thomas [EMAIL PROTECTED] PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. 2006-10-31 Paul Thomas [EMAIL PROTECTED] PR fortran/29387 * gfortran.dg/intrinsic_actual_2.f90: New test. PR fortran/29490 * gfortran.dg/actual_array_interface_1.f90: New test. PR fortran/29641 * gfortran.dg/used_types_11.f90: New test. r118221 | rguenth | 2006-10-31 01:08:11 -0800 (Tue, 31 Oct 2006) | 12 lines 2006-10-31 Richard Guenther [EMAIL PROTECTED] * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2, acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2, expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2, ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2, lroundmodedi2, lroundmodesi2, floorxf2, floordf2, floorsf2, lfloormodedi2, lfloormodesi2, ceilxf2, ceildf2, ceilsf2, btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on !optimize_size. Modified: branches/fixed-point/ (props changed) branches/fixed-point/gcc/ChangeLog branches/fixed-point/gcc/config/i386/i386.md branches/fixed-point/gcc/fortran/ChangeLog branches/fixed-point/gcc/fortran/trans-expr.c branches/fixed-point/gcc/fortran/trans-intrinsic.c branches/fixed-point/gcc/fortran/trans-types.c branches/fixed-point/gcc/testsuite/ChangeLog Propchange: branches/fixed-point/ ('svnmerge-integrated' modified) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #10 from pault at gcc dot gnu dot org 2006-11-25 14:41 --- (In reply to comment #9) Sorry, this was a slip of the digits in the ChangeLog Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #9 from pault at gcc dot gnu dot org 2006-11-24 22:22 --- Subject: Bug 29387 Author: pault Date: Fri Nov 24 22:22:40 2006 New Revision: 119173 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=119173 Log: 2006-11-24 Paul Thomas [EMAIL PROTECTED] PR fortran/20880 * parse.c (parse_interface): Error if procedure name is that of encompassing scope. * resolve.c (resolve_fl_procedure): Error if procedure is ambiguous. PR fortran/29387 * interface.c (compare_actual_formal): Add missing condition that 'where' be present for error that asserts that actual arguments be definable. 2006-11-24 Paul Thomas [EMAIL PROTECTED] PR fortran/20880 * gfortran.dg/interface_3.f90: New test. PR fortran/29387 * gfortran.dg/generic_8.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/generic_8.f90 trunk/gcc/testsuite/gfortran.dg/interface_3.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/interface.c trunk/gcc/fortran/parse.c trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #8 from pault at gcc dot gnu dot org 2006-11-10 21:52 --- Subject: Bug 29387 Author: pault Date: Fri Nov 10 21:52:00 2006 New Revision: 118666 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=118666 Log: 2006-11-10 Paul Thomas [EMAIL PROTECTED] Backport from mainline. PR fortran/29371 * trans-expr.c (gfc_trans_pointer_assignment): Add the expression for the assignment of null to the data field to se-pre, rather than block. PR fortran/29392 * data.c (create_character_intializer): Copy and simplify the expressions for the start and end of a sub-string reference. PR fortran/29216 PR fortran/29314 * gfortran.h : Add EXEC_INIT_ASSIGN. * dump-parse-tree.c (gfc_show_code_node): The same. * trans-expr.c (gfc_trans_init_assign): New function. * trans-stmt.h : Add prototype for gfc_trans_init_assign. * trans.c (gfc_trans_code): Implement EXEC_INIT_ASSIGN. * resolve.c (resolve_allocate_exp): Replace EXEC_ASSIGN by EXEC_INIT_ASSIGN. (resolve_code): EXEC_INIT_ASSIGN does not need resolution. (apply_default_init): New function. (resolve_symbol): Call it for derived types that become defined but which do not already have an initialization expression.. * st.c (gfc_free_statement): Include EXEC_INIT_ASSIGN. PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. PR fortran/24518 * trans-intrinsic.c (gfc_conv_intrinsic_mod): Use built_in fmod for both MOD and MODULO, if it is available. PR fortran/29565 * trans-expr.c (gfc_conv_aliased_arg): For an INTENT(OUT), save the declarations from the unused loops by merging the block scope for each; this ensures that the temporary is declared. 2006-11-10 Paul Thomas [EMAIL PROTECTED] PR fortran/29371 * gfortran.dg/nullify_3.f90: New test. PR fortran/29392 * gfortran.dg/data_char_3.f90: New test. PR fortran/29216 * gfortran.dg/result_default_init_1.f90: New test. PR fortran/29314 * gfortran.dg/automatic_default_init_1.f90: New test. PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. PR fortran/29565 * gfortran.dg/gfortran.dg/aliasing_dummy_3.f90: New test. Added: branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/actual_array_interface_1.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/automatic_default_init_1.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/data_char_3.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/nullify_3.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/result_default_init_1.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/used_types_11.f90 branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/used_types_12.f90 Modified: branches/gcc-4_1-branch/gcc/fortran/ChangeLog branches/gcc-4_1-branch/gcc/fortran/data.c branches/gcc-4_1-branch/gcc/fortran/dump-parse-tree.c branches/gcc-4_1-branch/gcc/fortran/f95-lang.c branches/gcc-4_1-branch/gcc/fortran/gfortran.h branches/gcc-4_1-branch/gcc/fortran/resolve.c branches/gcc-4_1-branch/gcc/fortran/st.c branches/gcc-4_1-branch/gcc/fortran/trans-expr.c branches/gcc-4_1-branch/gcc/fortran/trans-intrinsic.c branches/gcc-4_1-branch/gcc/fortran/trans-stmt.h branches/gcc-4_1-branch/gcc/fortran/trans-types.c branches/gcc-4_1-branch/gcc/fortran/trans.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #6 from pault at gcc dot gnu dot org 2006-11-05 08:46 --- Subject: Bug 29387 Author: pault Date: Sun Nov 5 08:46:02 2006 New Revision: 118493 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=118493 Log: 2006-11-05 Francois-Xavier Coudert [EMAIL PROTECTED],org Paul Thomas [EMAIL PROTECTED] PR fortran/24518 * trans-intrinsic.c (gfc_conv_intrinsic_mod): Use built_in fmod for both MOD and MODULO, if it is available. 2006-11-05 Paul Thomas [EMAIL PROTECTED] PR fortran/29565 * trans-expr.c (gfc_conv_aliased_arg): For an INTENT(OUT), save the declarations from the unused loops by merging the block scope for each; this ensures that the temporary is declared. PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. 2006-11-05 Paul Thomas [EMAIL PROTECTED] PR fortran/29565 * gfortran.dg/gfortran.dg/aliasing_dummy_3.f90: New test. PR fortran/29387 * gfortran.dg/intrinsic_actual_2.f90: New test. PR fortran/29490 * gfortran.dg/actual_array_interface_1.f90: New test. PR fortran/29641 * gfortran.dg/used_types_11.f90: New test. Added: branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/actual_array_interface_1.f90 branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90 branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90 branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/used_types_11.f90 Modified: branches/gcc-4_2-branch/gcc/fortran/ChangeLog branches/gcc-4_2-branch/gcc/fortran/f95-lang.c branches/gcc-4_2-branch/gcc/fortran/trans-expr.c branches/gcc-4_2-branch/gcc/fortran/trans-intrinsic.c branches/gcc-4_2-branch/gcc/fortran/trans-types.c branches/gcc-4_2-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #7 from pault at gcc dot gnu dot org 2006-11-05 22:07 --- Fixed on trunk and 4.2 - will do 4.1 in the next 48hours. 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=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #5 from pault at gcc dot gnu dot org 2006-10-31 06:03 --- Subject: Bug 29387 Author: pault Date: Tue Oct 31 06:03:24 2006 New Revision: 118220 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=118220 Log: 2006-10-31 Paul Thomas [EMAIL PROTECTED] PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. 2006-10-31 Paul Thomas [EMAIL PROTECTED] PR fortran/29387 * gfortran.dg/intrinsic_actual_2.f90: New test. PR fortran/29490 * gfortran.dg/actual_array_interface_1.f90: New test. PR fortran/29641 * gfortran.dg/used_types_11.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/actual_array_interface_1.f90 trunk/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90 trunk/gcc/testsuite/gfortran.dg/used_types_11.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/trans-expr.c trunk/gcc/fortran/trans-intrinsic.c trunk/gcc/fortran/trans-types.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #4 from patchapp at dberlin dot org 2006-10-19 12:21 --- Subject: Bug number PR29387 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-10/msg00982.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #3 from pault at gcc dot gnu dot org 2006-10-18 04:25 --- Created an attachment (id=12451) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12451action=view) Middle-end part of the patch This attaches the appropriate code to trans-intrinsic.c to fix bot testcases below. As I mentioned, I have also some prototype code for the front-end that will reduce the need for this and improve the efficiency of the code. Paul -- pault at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |pault at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #2 from pault at gcc dot gnu dot org 2006-10-10 09:50 --- FX, There are two problems here; one is specific to LEN and the other is generic to intrinsics and array valued actual arguments: The LEN specific problem is that there is no need to call the function at all, in the particular case concerned. I did a simple modification to gfc_resolve_len, in which I copied the character-length expression from the actual argument to the the result, f. It worked fine; I do not have it here, so will post it on Thursday, when i am back at work. The generic problem is that of the conversion of array valued args., when there is no loop. The giveaway is that this works: PRINT *, PLEN(SUB(3)) CONTAINS FUNCTION SUB(I) CHARACTER(LEN=I) :: SUB(1) END FUNCTION integer function plen(arg) character(*) :: arg (:) plen = len (arg) end function plen END The difference is the way in which array arguments are handled. The intrinsics go straight for gfc_conv_expr_descriptor with nothing prepared. In consequence, the function is called with the observed consequences. What is needed is to build an ss and call gfc_conv_array_parameter, so that the function is called with loop and info built and a temporary presented to the intrinsic. I'll play with it this afternoon. Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
-- fxcoudert at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2006-10-08 19:46:42 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387
[Bug fortran/29387] ICE on character array function of variable length
--- Comment #1 from fxcoudert at gcc dot gnu dot org 2006-10-08 21:53 --- Another testcase for this bug: TYPE T1 INTEGER, POINTER :: I=NULL() END TYPE T1 IF(.NOT.ASSOCIATED(F1(10))) CALL ABORT() CONTAINS FUNCTION F1(I) RESULT(R) TYPE(T1), DIMENSION(:), POINTER :: R INTEGER :: I ALLOCATE(R(I)) END FUNCTION F1 END -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29387