From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1473 invoked by alias); 14 Aug 2013 16:15:51 -0000 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 Received: (qmail 1445 invoked by uid 48); 14 Aug 2013 16:15:49 -0000 From: "janus at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/58157] ICE on character function with len given by a PURE function Date: Wed, 14 Aug 2013 16:15:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: janus at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: keywords cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-08/txt/msg00760.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58157 janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |janus at gcc dot gnu.org --- Comment #1 from janus at gcc dot gnu.org --- Slightly further compactified test case: MODULE fortrand IMPLICIT NONE CONTAINS integer PURE FUNCTION strlenf (string) CHARACTER, INTENT(in) :: string(:) strlenf = 1 END FUNCTION FUNCTION strtofchar_chararr (string) RESULT (fchar) CHARACTER, INTENT(in) :: string(:) CHARACTER(len=strlenf(string)) :: fchar END FUNCTION END MODULE PROGRAM icetest USE fortrand IMPLICIT NONE print *,strtofchar_chararr((/'c'/)) ! ICE here!!! END I can confirm the ICE with various versions between 4.3 and trunk. Curiously the ICE only appears if the 'string' argument is present (and of type CHARACTER). Also it disappears when moving 'strtofchar_chararr' out of the module into the main program. The backtrace with trunk is: icetest.f90:20:0: internal compiler error: Segmentation fault print *,strtofchar_chararr((/'c'/)) ! ICE here!!! ^ 0x8bb59f crash_signal /home/janus/gcc49/trunk/gcc/toplev.c:335 0x7263d8 size_binop_loc(unsigned int, tree_code, tree_node*, tree_node*) /home/janus/gcc49/trunk/gcc/fold-const.c:1480 0x6f3efa get_inner_reference(tree_node*, long*, long*, tree_node**, machine_mode*, int*, int*, bool) /home/janus/gcc49/trunk/gcc/expr.c:6674 0x7286a9 fold_unary_loc(unsigned int, tree_code, tree_node*, tree_node*) /home/janus/gcc49/trunk/gcc/fold-const.c:8044 0x728f37 fold_build1_stat_loc(unsigned int, tree_code, tree_node*, tree_node*) /home/janus/gcc49/trunk/gcc/fold-const.c:14944 0x5aff7a convert(tree_node*, tree_node*) /home/janus/gcc49/trunk/gcc/fortran/convert.c:102 0x5c256a gfc_get_dataptr_offset /home/janus/gcc49/trunk/gcc/fortran/trans-array.c:6250 0x5cd442 gfc_conv_expr_descriptor(gfc_se*, gfc_expr*) /home/janus/gcc49/trunk/gcc/fortran/trans-array.c:6910 0x5cdf9e gfc_conv_array_parameter(gfc_se*, gfc_expr*, bool, gfc_symbol const*, char const*, tree_node**) /home/janus/gcc49/trunk/gcc/fortran/trans-array.c:7141 0x5e80ab gfc_conv_procedure_call(gfc_se*, gfc_symbol*, gfc_actual_arglist*, gfc_expr*, vec*) /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:4494 0x5eadfa gfc_conv_function_expr /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:5563 0x5e4819 gfc_apply_interface_mapping(gfc_interface_mapping*, gfc_se*, gfc_expr*) /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:3554 0x5e97ab gfc_conv_procedure_call(gfc_se*, gfc_symbol*, gfc_actual_arglist*, gfc_expr*, vec*) /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:4869 0x5eadfa gfc_conv_function_expr /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:5563 0x5e1bef gfc_conv_expr_reference(gfc_se*, gfc_expr*) /home/janus/gcc49/trunk/gcc/fortran/trans-expr.c:6356 0x5ffe91 gfc_trans_transfer(gfc_code*) /home/janus/gcc49/trunk/gcc/fortran/trans-io.c:2302 0x5bcad7 trans_code /home/janus/gcc49/trunk/gcc/fortran/trans.c:1825 0x5fdc28 build_dt /home/janus/gcc49/trunk/gcc/fortran/trans-io.c:1835 0x5bcaf7 trans_code /home/janus/gcc49/trunk/gcc/fortran/trans.c:1797 0x5dbb62 gfc_generate_function_code(gfc_namespace*) /home/janus/gcc49/trunk/gcc/fortran/trans-decl.c:5527