------- Comment #7 from janus at gcc dot gnu dot org 2010-01-28 13:02 ------- (In reply to comment #6) > #0 fold_convert_loc (loc=0, type=0x7ffff7e83498, arg=0x7ffff7f65060) at > /home/jweil/gcc45/trunk/gcc/fold-const.c:2669 > #1 0x00000000005a088a in gfc_trans_scalar_assign (lse=0x7fffffffd4d0, > rse=0x7fffffffd520, ts=..., l_is_temp=1 '\001', r_is_var=0 '\000') > at /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:4840 > #2 0x000000000059e7eb in gfc_trans_subcomponent_assign (dest=0x7ffff7f6c4c0, > cm=0x17deab0, expr=0x17dc890) at > /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:4224 > #3 0x000000000059e9ce in gfc_trans_structure_assign (dest=0x7ffff7f6b5a0, > expr=0x17dc720) at /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:4265 > #4 0x000000000059eaec in gfc_conv_structure (se=0x7fffffffd780, > expr=0x17dc720, init=0) at > /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:4292 > #5 0x000000000059f2f4 in gfc_conv_expr (se=0x7fffffffd780, expr=0x17dc720) at > /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:4441 > #6 0x000000000056d46b in gfc_add_loop_ss_code (loop=0x7fffffffd940, > ss=0x17dce70, subscript=0 '\000', where=0x17dc770) at > /home/jweil/gcc45/trunk/gcc/fortran/trans-array.c:2028 > #7 0x0000000000572a92 in gfc_conv_loop_setup (loop=0x7fffffffd940, > where=0x17dc770) at /home/jweil/gcc45/trunk/gcc/fortran/trans-array.c:3722 > #8 0x00000000005a1b95 in gfc_trans_assignment_1 (expr1=0x17dc980, > expr2=0x17dc720, init_flag=1 '\001') at > /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:5232 > #9 0x00000000005a2316 in gfc_trans_assignment (expr1=0x17dc980, > expr2=0x17dc720, init_flag=1 '\001') at > /home/jweil/gcc45/trunk/gcc/fortran/trans-expr.c:5434
The same code path is also taken on the old fortran-dev r152122. The difference in 'fold_convert_loc' is: While for the old rev. 'type' and 'orig' are both INTEGER_TYPE, 'orig' is REAL_TYPE on current trunk. I'll try to find out how that comes about. Btw: Isn't this whole thing of 'integer component with real initializer' invalid in some way? Shouldn't we at least throw a warning? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42888