------- Comment #1 from dominiq at lps dot ens dot fr 2007-11-30 23:59 ------- If this may help, I have extracted the following piece from the -fdump-tree-original:
{ struct __st_parameter_dt dt_parm.11; dt_parm.11.common.filename = &"pr18022_red.f90"[1]{lb: 1 sz: 1}; dt_parm.11.common.line = 21; dt_parm.11.internal_unit = &buf1[1]{lb: 1 sz: 1}; dt_parm.11.internal_unit_len = 30; dt_parm.11.internal_unit_desc = 0B; dt_parm.11.common.unit = 0; dt_parm.11.common.flags = 16512; _gfortran_st_write (&dt_parm.11); { integer(kind=4) S.12; S.12 = 1; while (1) { if (S.12 > 4) goto L.9; { struct point * D.853; D.853 = &pts[S.12 + -1]; _gfortran_transfer_character (&dt_parm.11, &D.853->x, 2); _gfortran_transfer_character (&dt_parm.11, &D.853->y, 2); } S.12 = S.12 + 1; } L.9:; } _gfortran_st_write_done (&dt_parm.11); } { struct __st_parameter_dt dt_parm.13; dt_parm.13.common.filename = &"pr18022_red.f90"[1]{lb: 1 sz: 1}; dt_parm.13.common.line = 22; dt_parm.13.internal_unit = &buf2[1]{lb: 1 sz: 1}; dt_parm.13.internal_unit_len = 30; dt_parm.13.internal_unit_desc = 0B; dt_parm.13.common.unit = 0; dt_parm.13.common.flags = 16512; _gfortran_st_write (&dt_parm.13); { struct array2_unknown parm.14; parm.14.dtype = 178; parm.14.dim[0].lbound = 1; parm.14.dim[0].ubound = 4; parm.14.dim[0].stride = 1; parm.14.dim[1].lbound = 1; parm.14.dim[1].ubound = 2; parm.14.dim[1].stride = 4; parm.14.data = (void *) (character(kind=1)[0:][1:2] *) &tab_c[0]; parm.14.offset = -5; _gfortran_transfer_array (&dt_parm.13, &parm.14, 1, 2); } _gfortran_st_write_done (&dt_parm.13); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34306