From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16058 invoked by alias); 28 May 2008 21:13:09 -0000 Received: (qmail 15169 invoked by alias); 28 May 2008 21:12:25 -0000 Date: Wed, 28 May 2008 21:13:00 -0000 Message-ID: <20080528211225.15168.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/36319] Segfault with wide characters in DATA In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "fxcoudert at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-05/txt/msg02107.txt.bz2 ------- Comment #4 from fxcoudert at gcc dot gnu dot org 2008-05-28 21:12 ------- Subject: Bug 36319 Author: fxcoudert Date: Wed May 28 21:11:39 2008 New Revision: 136129 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=136129 Log: PR fortran/36319 * intrinsic.c (gfc_convert_chartype): Don't mark conversion function as pure. * trans-array.c (gfc_trans_array_ctor_element): Divide element size by the size of one character to obtain length. * iresolve.c (gfc_resolve_cshift): Call the _char4 variant when appropriate. (gfc_resolve_eoshift): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_ctime): Minor beautification. (gfc_conv_intrinsic_fdate): Minor beautification. (gfc_conv_intrinsic_ttynam): Minor beautification. (gfc_conv_intrinsic_minmax_char): Allow all character kinds. (size_of_string_in_bytes): New function. (gfc_conv_intrinsic_size): Call size_of_string_in_bytes for character expressions. (gfc_conv_intrinsic_sizeof): Likewise. (gfc_conv_intrinsic_array_transfer): Likewise. (gfc_conv_intrinsic_trim): Allow all character kinds. Minor beautification. (gfc_conv_intrinsic_repeat): Fix comment typo. * simplify.c (gfc_convert_char_constant): Take care of conversion of array constructors. * intrinsics/string_intrinsics_inc.c (string_index): Return correct value for zero-length substring. * intrinsics/cshift0.c: Add _char4 variant. * intrinsics/eoshift0.c (eoshift0): Allow filler to be a pattern wider than a single byte. Add _char4 variant and use above functionality. * intrinsics/eoshift2.c (eoshift2): Likewise. * m4/eoshift1.m4: Likewise. * m4/eoshift3.m4: Likewise. * m4/cshift1.m4: Add _char4 variants. * gfortran.map (GFORTRAN_1.1): Add _gfortran_cshift0_1_char4, _gfortran_cshift0_2_char4, _gfortran_cshift0_4_char4, _gfortran_cshift0_8_char4, _gfortran_cshift1_16_char4, _gfortran_cshift1_4_char4, _gfortran_cshift1_8_char4, _gfortran_eoshift0_1_char4, _gfortran_eoshift0_2_char4, _gfortran_eoshift0_4_char4, _gfortran_eoshift0_8_char4, _gfortran_eoshift1_16_char4, _gfortran_eoshift1_4_char4, _gfortran_eoshift1_8_char4, _gfortran_eoshift2_1_char4, _gfortran_eoshift2_2_char4, _gfortran_eoshift2_4_char4, _gfortran_eoshift2_8_char4, _gfortran_eoshift3_16_char4, _gfortran_eoshift3_4_char4 and _gfortran_eoshift3_8_char4. * generated/eoshift3_4.c: Regenerate. * generated/eoshift1_8.c: Regenerate. * generated/eoshift1_16.c: Regenerate. * generated/cshift1_4.c: Regenerate. * generated/eoshift1_4.c: Regenerate. * generated/eoshift3_8.c: Regenerate. * generated/eoshift3_16.c: Regenerate. * generated/cshift1_8.c: Regenerate. * generated/cshift1_16.c: Regenerate. * gfortran.dg/widechar_5.f90: New file. * gfortran.dg/widechar_6.f90: New file. * gfortran.dg/widechar_7.f90: New file. * gfortran.dg/widechar_intrinsics_5.f90: Uncomment the lines testing the SPREAD intrinsic. * gfortran.dg/widechar_intrinsics_6.f90: New file. * gfortran.dg/widechar_intrinsics_7.f90: New file. * gfortran.dg/widechar_intrinsics_8.f90: New file. * gfortran.dg/widechar_intrinsics_9.f90: New file. * gfortran.dg/widechar_intrinsics_10.f90: New file. Added: trunk/gcc/testsuite/gfortran.dg/widechar_5.f90 trunk/gcc/testsuite/gfortran.dg/widechar_6.f90 trunk/gcc/testsuite/gfortran.dg/widechar_7.f90 trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_10.f90 trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_6.f90 trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_7.f90 trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_8.f90 trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_9.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/intrinsic.c trunk/gcc/fortran/iresolve.c trunk/gcc/fortran/simplify.c trunk/gcc/fortran/trans-array.c trunk/gcc/fortran/trans-intrinsic.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/widechar_intrinsics_5.f90 trunk/libgfortran/ChangeLog trunk/libgfortran/generated/cshift1_16.c trunk/libgfortran/generated/cshift1_4.c trunk/libgfortran/generated/cshift1_8.c trunk/libgfortran/generated/eoshift1_16.c trunk/libgfortran/generated/eoshift1_4.c trunk/libgfortran/generated/eoshift1_8.c trunk/libgfortran/generated/eoshift3_16.c trunk/libgfortran/generated/eoshift3_4.c trunk/libgfortran/generated/eoshift3_8.c trunk/libgfortran/gfortran.map trunk/libgfortran/intrinsics/cshift0.c trunk/libgfortran/intrinsics/eoshift0.c trunk/libgfortran/intrinsics/eoshift2.c trunk/libgfortran/intrinsics/string_intrinsics_inc.c trunk/libgfortran/m4/cshift1.m4 trunk/libgfortran/m4/eoshift1.m4 trunk/libgfortran/m4/eoshift3.m4 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36319