http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117



--- Comment #15 from Tilo Schwarz <t...@tilo-schwarz.de> 2013-02-25 01:02:45 
UTC ---

This week I used the Fortran namelist feature for the first time and I was

really impressed, that it does all the parsing for me.



But since I ran into this issue I was wondering and curious how the magic in

libgfortran works.



I had a look at the code and could observe the following:



If I apply the attached patch (comment 14, namelist.diff) on gcc version 4.8.0

20130224



- my example from comment 11 works

- the example from comment 3 seems to work

- the changed namelist_64.f90 from comment 13 works

- the example from PR 51825 seems to work

- make check-fortran runs with no additional errors

- the example from comment 6 (type extension) does not work



The type extension problem might be related to the fact, that gfortran does not

generate a namelist entry for the implicit component %x of t1e_t:



(no "t1e%x" below)



  _gfortran_st_set_nml_var (&dt_parm.1, &t1e, &"t1e"[1]{lb: 1 sz: 1}, 0, 0,

40);

  ... maybe "t1e%x" should be here? ...

  _gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t, &"t1e%t1_t"[1]{lb: 1 sz: 1},

0, 0, 40);

  _gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t.x, &"t1e%t1_t%x"[1]{lb: 1 sz:

1}, 4, 0, 24);

  _gfortran_st_set_nml_var (&dt_parm.1, &t1e.string, &"t1e%string"[1]{lb: 1 sz:

1}, 1, 8, 48);

  _gfortran_st_set_nml_var (&dt_parm.1, &answer, &"answer"[1]{lb: 1 sz: 1}, 4,

0, 8);



So maybe this patch gives a hint to someone, who has a deeper understanding of

the io-stuff than me (looked at it this weekend for the first time) ...



Tilo

Reply via email to