This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
:ADDPATCH fortran: This turned out to be a double whammy - not only did FORALL suffer this problem but ordinary assignment did as well (PR33811). The PR exposed two bugs - one in dependency.c, where substrings were not being correctly analysed: For the original PR testcase, forall(i=1:1) a(i:i) = a(i:i) detected a dependency where there is none and forall(i=1:1) b(2:4)(i:i) = b(1:3)(i:i) failed to detect the dependency. Once this was fixed, both FORALL and ordinary assignments ICED because gfc_typenode_for_spec was used to get the tree type. This comes back with an incomplete char[1:] for variable substrings. This was cured in both cases by calling gfc_get_character_type_len with the string length and the default kind. The testcase contains the two originals and various others that were broken. Regtested on Cygwin_NT/amd64 (I'll do the checks tonight on x86_ia64/FC5) - OK for trunk? Paul 2007-07-18 Paul Thomas <pault@gcc.gnu.org> PR fortran/31217 PR fortran/33811 * trans-array.c (gfc_conv_loop_setup): Send a complete type to gfc_trans_create_temp_array if the temporary is character. * trans-stmt.c (gfc_trans_assign_need_temp): Do likewise for allocate_temp_for_forall_nest. * dependency.c (gfc_check_dependency): Use gfc_dep_resolver for all references, not just REF_ARRAY. (gfc_dep_resolver): Correct the logic for substrings so that overlapping arrays are handled correctly. 2007-07-18 Paul Thomas <pault@gcc.gnu.org> PR fortran/31217 PR fortran/33811 * gfortran.dg/forall_12.f90: New test. -- The knack of flying is learning how to throw yourself at the ground and miss. --Hitchhikers Guide to the Galaxy
Attachment:
submit.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |