public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects)
@ 2012-10-29 14:31 pmarguinaud at hotmail dot com
2012-10-29 14:32 ` [Bug fortran/55117] " pmarguinaud at hotmail dot com
` (27 more replies)
0 siblings, 28 replies; 29+ messages in thread
From: pmarguinaud at hotmail dot com @ 2012-10-29 14:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Bug #: 55117
Summary: Programs fails to read namelist (contains derived
types objects)
Classification: Unclassified
Product: gcc
Version: 4.6.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: pmarguinaud@hotmail.com
Created attachment 28553
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28553
Source code
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
@ 2012-10-29 14:32 ` pmarguinaud at hotmail dot com
2012-10-29 14:34 ` pmarguinaud at hotmail dot com
` (26 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: pmarguinaud at hotmail dot com @ 2012-10-29 14:32 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #1 from pmarguinaud at hotmail dot com 2012-10-29 14:32:32 UTC ---
Created attachment 28554
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28554
Namelist
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
2012-10-29 14:32 ` [Bug fortran/55117] " pmarguinaud at hotmail dot com
@ 2012-10-29 14:34 ` pmarguinaud at hotmail dot com
2012-10-29 16:03 ` janus at gcc dot gnu.org
` (25 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: pmarguinaud at hotmail dot com @ 2012-10-29 14:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #2 from pmarguinaud at hotmail dot com 2012-10-29 14:34:02 UTC ---
$ gfortran bat.F90
$ ./a.out
At line 33 of file bat.F90 (unit = 4, file = 'NAMELIST')
Fortran runtime error: Internal namelist read error
I tried 4.6.1, 4.6.2 and latest snapshot of 4.7. All the same.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
2012-10-29 14:32 ` [Bug fortran/55117] " pmarguinaud at hotmail dot com
2012-10-29 14:34 ` pmarguinaud at hotmail dot com
@ 2012-10-29 16:03 ` janus at gcc dot gnu.org
2012-10-31 19:53 ` burnus at gcc dot gnu.org
` (24 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: janus at gcc dot gnu.org @ 2012-10-29 16:03 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
janus at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
CC| |janus at gcc dot gnu.org
--- Comment #3 from janus at gcc dot gnu.org 2012-10-29 16:03:22 UTC ---
I can confirm that I see the error with 4.3, 4.7 and trunk.
Slightly reduced test case:
***************************
IMPLICIT NONE
TYPE TC
INTEGER :: E
END TYPE
TYPE TB
TYPE(TC) :: C
INTEGER :: D
END TYPE
INTEGER :: A
TYPE(TB) :: B(1:10)
NAMELIST /N/ A, B
OPEN (4,FILE='NAMELIST')
READ (4,NML=N)
END
***************************
&N
A=12,
B(1)%D=4
/
***************************
What's funny is that the error e.g. depends on the presence of the component
'C', although it is not referenced in the namelist at all. Furthermore the
error only occurs if 'A' is also in the namelist.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (2 preceding siblings ...)
2012-10-29 16:03 ` janus at gcc dot gnu.org
@ 2012-10-31 19:53 ` burnus at gcc dot gnu.org
2013-01-04 2:54 ` w6ws at earthlink dot net
` (23 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-10-31 19:53 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu.org
--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-10-31 19:53:22 UTC ---
Related to bugs: PR 49791 and PR 51825?
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (3 preceding siblings ...)
2012-10-31 19:53 ` burnus at gcc dot gnu.org
@ 2013-01-04 2:54 ` w6ws at earthlink dot net
2013-01-04 14:33 ` w6ws at earthlink dot net
` (22 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: w6ws at earthlink dot net @ 2013-01-04 2:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Walter Spector <w6ws at earthlink dot net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |w6ws at earthlink dot net
--- Comment #5 from Walter Spector <w6ws at earthlink dot net> 2013-01-04 02:54:05 UTC ---
Adding myself to the CC list.
Walter Spector
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (4 preceding siblings ...)
2013-01-04 2:54 ` w6ws at earthlink dot net
@ 2013-01-04 14:33 ` w6ws at earthlink dot net
2013-01-04 16:59 ` kargl at gcc dot gnu.org
` (21 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: w6ws at earthlink dot net @ 2013-01-04 14:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #6 from Walter Spector <w6ws at earthlink dot net> 2013-01-04 14:33:15 UTC ---
Another manifestation of this problem is with type extension. Here is another
small example which fails. (Tested on v4.6.3 and also a 1/4/2013 snapshot of
the 4.8 trunk.):
program test_type_extension
type t1_t
real :: x
end type t1_t
type, extends(t1_t) :: t1e_t
character(8) :: string
end type t1e_t
type(t1e_t) :: t1e
integer :: answer
namelist /test_NML/ t1e, answer
open(unit=1,file='test1.inp')
read(1,NML=test_NML)
write(*,*) t1e%x, t1e%string, answer
end program test_type_extension
File test1.inp contains:
&test_NML
t1e%x = 2.,t1e%string='gfortran',answer=42
/
wws@w6ws-4:~/fortran/xxx$ gfortran --version
GNU Fortran (GCC) 4.8.0 20130104 (experimental)
Copyright (C) 2013 Free Software Foundation, Inc.
GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING
wws@w6ws-4:~/fortran/xxx$ gfortran namelist.f90
wws@w6ws-4:~/fortran/xxx$ a.out
At line 17 of file namelist.f90 (unit = 1, file = 'test1.inp')
Fortran runtime error: Cannot match namelist object name %x
Backtrace for this error:
+ in the main program
from file namelist.f90
+ /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7ffe80c5376d]
wws@w6ws-4:~/fortran/xxx$
The NAG Fortran compiler has no problems with this test case. (Intel and PGI
are not so lucky. :) )
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (5 preceding siblings ...)
2013-01-04 14:33 ` w6ws at earthlink dot net
@ 2013-01-04 16:59 ` kargl at gcc dot gnu.org
2013-01-04 17:22 ` w6ws at earthlink dot net
` (20 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: kargl at gcc dot gnu.org @ 2013-01-04 16:59 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #7 from kargl at gcc dot gnu.org 2013-01-04 16:58:36 UTC ---
(In reply to comment #6)
> Another manifestation of this problem is with type extension. Here is another
> small example which fails. (Tested on v4.6.3 and also a 1/4/2013 snapshot of
> the 4.8 trunk.):
>
> program test_type_extension
>
> type t1_t
> real :: x
> end type t1_t
>
> type, extends(t1_t) :: t1e_t
> character(8) :: string
> end type t1e_t
>
> type(t1e_t) :: t1e
>
> integer :: answer
> namelist /test_NML/ t1e, answer
>
> open(unit=1,file='test1.inp')
> read(1,NML=test_NML)
>
> write(*,*) t1e%x, t1e%string, answer
>
> end program test_type_extension
>
> File test1.inp contains:
>
> &test_NML
> t1e%x = 2.,t1e%string='gfortran',answer=42
> /
>
> wws@w6ws-4:~/fortran/xxx$ gfortran namelist.f90
> wws@w6ws-4:~/fortran/xxx$ a.out
> At line 17 of file namelist.f90 (unit = 1, file = 'test1.inp')
> Fortran runtime error: Cannot match namelist object name %x
If one modifies your code to have gfortran create the file
with the namelist, it can then read it back. Here's what I
have
program test_type_extension
type t1_t
real :: x
end type t1_t
type, extends(t1_t) :: t1e_t
character(8) :: string
end type t1e_t
type(t1e_t) :: t1e
integer :: answer
namelist /test_NML/ t1e, answer
t1e%x = 2.
t1e%string='gfortran'
answer=42
open(unit=2,file='test2.inp')
write(2,NML=test_NML)
close(2)
t1e%x = 0
t1e%string=''
answer=0
open(unit=2,file='test2.inp')
read(2,NML=test_NML)
close(2)
write(*,*) t1e%x, t1e%string, answer
open(unit=1,file='test1.inp')
read(1,NML=test_NML)
write(*,*) t1e%x, t1e%string, answer
end program test_type_extension
% gfc4x -o z foo.f90 && ./z
2.00000000 gfortran 42
At line 36 of file foo.f90 (unit = 1, file = 'test1.inp')
Fortran runtime error: Cannot match namelist object name %x
% cat test2.inp
&TEST_NML
T1E%T1_T%X= 2.00000000 ,
T1E%STRING="gfortran",
ANSWER= 42,
/
It appears that gfortran's handling of an extended
derived type in its namelist code is incorrect.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (6 preceding siblings ...)
2013-01-04 16:59 ` kargl at gcc dot gnu.org
@ 2013-01-04 17:22 ` w6ws at earthlink dot net
2013-01-05 19:16 ` jvdelisle at gcc dot gnu.org
` (19 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: w6ws at earthlink dot net @ 2013-01-04 17:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #8 from Walter Spector <w6ws at earthlink dot net> 2013-01-04 17:22:31 UTC ---
Good point. The key is:
> T1E%T1_T%X= 2.00000000 ,
If the full expanded version is used, in other words %T1_T is specified, the
example works. (On Intel too.)
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (7 preceding siblings ...)
2013-01-04 17:22 ` w6ws at earthlink dot net
@ 2013-01-05 19:16 ` jvdelisle at gcc dot gnu.org
2013-01-06 18:51 ` jvdelisle at gcc dot gnu.org
` (18 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2013-01-05 19:16 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot |jvdelisle at gcc dot
|gnu.org |gnu.org
--- Comment #9 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2013-01-05 19:15:33 UTC ---
I am actively working on these bugs right now so will assign to myself. Our
namelist code here is tricky to say the least and i am seeing odd behavior that
looks like some pointers are not getting set or reset correctly. If I get to a
patch, I will post here.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (8 preceding siblings ...)
2013-01-05 19:16 ` jvdelisle at gcc dot gnu.org
@ 2013-01-06 18:51 ` jvdelisle at gcc dot gnu.org
2013-02-22 20:58 ` tilo@tilo-schwarz.de
` (17 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2013-01-06 18:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #10 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2013-01-06 18:51:07 UTC ---
This bug appears to be unrelated to the other two namelist bugs. It is related
to not seeing the ending '/' marker. I have more testing to go before
submitting a patch. The initial fix is to catch it in the do loop inside
list_read.c at about line 2812. I still need to confirm if the reads are
actually correct.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (9 preceding siblings ...)
2013-01-06 18:51 ` jvdelisle at gcc dot gnu.org
@ 2013-02-22 20:58 ` tilo@tilo-schwarz.de
2013-02-22 22:40 ` tilo@tilo-schwarz.de
` (16 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-22 20:58 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Tilo Schwarz <tilo@tilo-schwarz.de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tilo@tilo-schwarz.de
--- Comment #11 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-22 20:57:50 UTC ---
Hi,
I ran into this today and tried to produce a small test case from my big
namelist problem.
program namelist
type d1
integer :: j = 0
end type d1
type d2
type(d1) k
end type d2
type d3
type(d2) d(2)
end type d3
type(d3) der
namelist /nmlst/ der
read (*, nml = nmlst)
print nmlst
end program namelist
Running above program on all two line combinations of the namelist gives
different errors using
4.7.2 and
gcc version 4.8.0 20130222 (experimental) (GCC)
(Details below).
Observations:
- If type d3 uses 'type(d1) d(2)' instead of 'type(d2) d(2)', the problem goes
away.
- If the trailing %J is removed in the namelist, the problem goes away.
- If two separate members are used instead of the array 'type(d2) d(2)', the
problem goes away.
Details of namelist variations:
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
/
-------
&NMLST
DER%D(1)%K%J= 0,
DER%D(2)%K%J= 0,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(1)%K%J = 1,
/
-------
&NMLST
DER%D(1)%K%J= 1,
DER%D(2)%K%J= 0,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(2)%K%J = 2,
/
-------
&NMLST
DER%D(1)%K%J= 2,
DER%D(2)%K%J= 0,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(1)%K%J = 1,
DER%D(2)%K%J = 2,
/
-------
&NMLST
DER%D(1)%K%J= 2,
DER%D(2)%K%J= 0,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(2)%K%J = 2,
DER%D(1)%K%J = 1,
/
-------
&NMLST
DER%D(1)%K%J= 1,
DER%D(2)%K%J= 0,
/
If the last component %J is removed in the namelist,
the problem goes away:
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(1)%K = 1,
/
-------
&NMLST
DER%D(1)%K%J= 1,
DER%D(2)%K%J= 0,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(2)%K = 2,
/
-------
&NMLST
DER%D(1)%K%J= 0,
DER%D(2)%K%J= 2,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(1)%K = 1,
DER%D(2)%K = 2,
/
-------
&NMLST
DER%D(1)%K%J= 1,
DER%D(2)%K%J= 2,
/
% cat namelist.txt; echo -------; prg_namelist_bug < namelist.txt
&NMLST
DER%D(2)%K = 2,
DER%D(1)%K = 1,
/
-------
&NMLST
DER%D(1)%K%J= 1,
DER%D(2)%K%J= 2,
/
Regards,
Tilo
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (10 preceding siblings ...)
2013-02-22 20:58 ` tilo@tilo-schwarz.de
@ 2013-02-22 22:40 ` tilo@tilo-schwarz.de
2013-02-24 0:28 ` tilo@tilo-schwarz.de
` (15 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-22 22:40 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #12 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-22 22:40:11 UTC ---
(In reply to comment #11)
> Running above program on all two line combinations of the namelist gives
> different errors using
> 4.7.2 and
> gcc version 4.8.0 20130222 (experimental) (GCC)
> (Details below).
What I meant here was, that the namelist variations give different errors, not
that 4.7.2 and 4.8.0 give different errors.
Tilo
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (11 preceding siblings ...)
2013-02-22 22:40 ` tilo@tilo-schwarz.de
@ 2013-02-24 0:28 ` tilo@tilo-schwarz.de
2013-02-25 1:00 ` tilo@tilo-schwarz.de
` (14 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-24 0:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #13 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-24 00:27:49 UTC ---
If in
gfortran.dg/namelist_64.f90
instead of
curve(1)%symbol%typee = 1234
any other array index > 1 is set and tested, e.g.
curve(2)%symbol%typee = 1234
the testcase breaks.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (12 preceding siblings ...)
2013-02-24 0:28 ` tilo@tilo-schwarz.de
@ 2013-02-25 1:00 ` tilo@tilo-schwarz.de
2013-02-25 1:03 ` tilo@tilo-schwarz.de
` (13 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-25 1:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #14 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-25 01:00:01 UTC ---
Created attachment 29532
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29532
Namelist patch
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (13 preceding siblings ...)
2013-02-25 1:00 ` tilo@tilo-schwarz.de
@ 2013-02-25 1:03 ` tilo@tilo-schwarz.de
2013-02-25 19:02 ` tilo@tilo-schwarz.de
` (12 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-25 1:03 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #15 from Tilo Schwarz <tilo@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
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (14 preceding siblings ...)
2013-02-25 1:03 ` tilo@tilo-schwarz.de
@ 2013-02-25 19:02 ` tilo@tilo-schwarz.de
2013-02-25 19:49 ` mikael at gcc dot gnu.org
` (11 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-25 19:02 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #16 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-25 19:01:50 UTC ---
(In reply to comment #14)
> Created attachment 29532 [details]
> Namelist patch
Bummer, I had a typo in the comment:
The second hunk should read
"/* Don't move first_nl" instead of
"/* Don't move pprev_nl":
@@ -2901,7 +2901,8 @@ get_name:
goto nml_err_ret;
}
- if (*pprev_nl == NULL || !component_flag)
+ /* Don't move first_nl further in the list if a qualifier was found */
+ if ((*pprev_nl == NULL && !qualifier_flag) || !component_flag)
first_nl = nl;
Sorry,
Tilo
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (15 preceding siblings ...)
2013-02-25 19:02 ` tilo@tilo-schwarz.de
@ 2013-02-25 19:49 ` mikael at gcc dot gnu.org
2013-02-25 20:29 ` tilo@tilo-schwarz.de
` (10 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: mikael at gcc dot gnu.org @ 2013-02-25 19:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Mikael Morin <mikael at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mikael at gcc dot gnu.org
--- Comment #17 from Mikael Morin <mikael at gcc dot gnu.org> 2013-02-25 19:49:06 UTC ---
(In reply to comment #15)
> 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)
>
It is present...
> _gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t.x, &"t1e%t1_t%x"[1]{lb: 1 sz:
> 1}, 4, 0, 24);
>
... here.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (16 preceding siblings ...)
2013-02-25 19:49 ` mikael at gcc dot gnu.org
@ 2013-02-25 20:29 ` tilo@tilo-schwarz.de
2013-03-22 10:10 ` burnus at gcc dot gnu.org
` (9 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: tilo@tilo-schwarz.de @ 2013-02-25 20:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #18 from Tilo Schwarz <tilo@tilo-schwarz.de> 2013-02-25 20:28:40 UTC ---
(In reply to comment #17)
> (In reply to comment #15)
> > 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)
> >
> It is present...
>
> > _gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t.x, &"t1e%t1_t%x"[1]{lb: 1 sz:
> > 1}, 4, 0, 24);
> >
> ... here.
Yes, somehow - but the code in list_read.c:find_nml_node() (as it is right now)
searches for the exact string "t1e%x", not for "t1e%t1_t%x".
I have no idea what is simpler:
- modify the code in list_read.c to somehow also search "t1e%t1_t%x", not only
"t1e%x". Maybe one could teach the code to conclude from the to namelist
entries
_gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t, &"t1e%t1_t"...
_gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t.x, &"t1e%t1_t%x"
that "t1e%x" is also valid a synonym of "t1e%t1_t%x".
or
- generate a line like
_gfortran_st_set_nml_var (&dt_parm.1, &t1e.t1_t.x, &"t1e%x" ...
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (17 preceding siblings ...)
2013-02-25 20:29 ` tilo@tilo-schwarz.de
@ 2013-03-22 10:10 ` burnus at gcc dot gnu.org
2013-03-30 3:54 ` jvdelisle at gcc dot gnu.org
` (8 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-03-22 10:10 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #19 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-03-22 10:09:34 UTC ---
The issue of the original bug report in comment 0 - and the test cases comment
3 and comment 13 seem to be fixed by the patch for PR 51825 (see PR 51825
comment 5).
Remaining seems to be the separate issue of type extension, where the parent's
component is directly accessed without using the parent's name as in-between
component name. See comment 6.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (18 preceding siblings ...)
2013-03-22 10:10 ` burnus at gcc dot gnu.org
@ 2013-03-30 3:54 ` jvdelisle at gcc dot gnu.org
2013-03-30 5:05 ` jvdelisle at gcc dot gnu.org
` (7 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2013-03-30 3:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #20 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2013-03-30 03:54:27 UTC ---
Lets take namelist out of the picture here for the case of comment #6
program test_type_extension
type t1_t
real :: x
end type t1_t
type, extends(t1_t) :: t1e_t
character(8) :: string
end type t1e_t
type(t1e_t) :: t1e
tle%x = 5.678
end program test_type_extension
$ gfc pr55117.f90
pr55117.f90:13.6:
tle%x = 5.678
1
Error: Symbol 'tle' at (1) has no IMPLICIT type
Ifort agrees with gfortran on this example
So, I think this PR (55117) can be closed and if the example in this comment
and #6 is another bug, lets open a new PR for it.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (19 preceding siblings ...)
2013-03-30 3:54 ` jvdelisle at gcc dot gnu.org
@ 2013-03-30 5:05 ` jvdelisle at gcc dot gnu.org
2013-04-25 12:42 ` burnus at gcc dot gnu.org
` (6 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2013-03-30 5:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #21 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2013-03-30 05:05:03 UTC ---
Oops! Disregard Comment #20. There is a not so subtle effect when one mixes up
the letter 'l' and the digit '1' in names.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (20 preceding siblings ...)
2013-03-30 5:05 ` jvdelisle at gcc dot gnu.org
@ 2013-04-25 12:42 ` burnus at gcc dot gnu.org
2013-06-16 18:04 ` dominiq at lps dot ens.fr
` (5 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-04-25 12:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #22 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-04-25 12:42:45 UTC ---
Created attachment 29938
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29938
FE patch for namelist read with type extension (+ test case)
Regarding the support of type extension: This patch uses in the front end a "+"
instead of a "%" to denote a type extension, i.e.
type%parent%var
becomes
type+parent%var
in the call to st_set_nml_var. Then, libgfortran has the required information -
the actual implementation is still pending.
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (21 preceding siblings ...)
2013-04-25 12:42 ` burnus at gcc dot gnu.org
@ 2013-06-16 18:04 ` dominiq at lps dot ens.fr
2014-03-23 23:20 ` jvdelisle at gcc dot gnu.org
` (4 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: dominiq at lps dot ens.fr @ 2013-06-16 18:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-06-16
Ever confirmed|0 |1
--- Comment #23 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> Created attachment 29938 [details]
> FE patch for namelist read with type extension (+ test case)
What happened to this patch?
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (22 preceding siblings ...)
2013-06-16 18:04 ` dominiq at lps dot ens.fr
@ 2014-03-23 23:20 ` jvdelisle at gcc dot gnu.org
2014-05-26 15:20 ` jvdelisle at gcc dot gnu.org
` (3 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2014-03-23 23:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #25 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
Preliminary patch here:
http://gcc.gnu.org/ml/fortran/2014-03/msg00150.html
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (23 preceding siblings ...)
2014-03-23 23:20 ` jvdelisle at gcc dot gnu.org
@ 2014-05-26 15:20 ` jvdelisle at gcc dot gnu.org
2014-05-26 15:33 ` jvdelisle at gcc dot gnu.org
` (2 subsequent siblings)
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2014-05-26 15:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #26 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
Author: jvdelisle
Date: Mon May 26 15:19:36 2014
New Revision: 210934
URL: http://gcc.gnu.org/viewcvs?rev=210934&root=gcc&view=rev
Log:
2014-05-26 Tobias Burnus <burnus@net-b.de>
PR fortran/55117
* trans-io.c (nml_full_name, transfer_namelist_element): Insert
a '+' rather then '%' to differentiate namelist variable names
that are based on extended derived types.
2014-05-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/55117
* io/list_read.c (extended_look_ahead): New helper function to
scan the namelist name and look for matches with the new '+'
extended type parent indicator. (str_comp_extended): New
helper function to compare the namelist name with the varname
namelist. (find_nml_name): Use the new helper functions to match
the extended type varnames.
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-io.c
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/list_read.c
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (24 preceding siblings ...)
2014-05-26 15:20 ` jvdelisle at gcc dot gnu.org
@ 2014-05-26 15:33 ` jvdelisle at gcc dot gnu.org
2014-06-07 17:42 ` jvdelisle at gcc dot gnu.org
2014-06-07 17:43 ` jvdelisle at gcc dot gnu.org
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2014-05-26 15:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #27 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
Author: jvdelisle
Date: Mon May 26 15:32:33 2014
New Revision: 210935
URL: http://gcc.gnu.org/viewcvs?rev=210935&root=gcc&view=rev
Log:
2014-05-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/55117
* gfortran.dg/namelist_85.f90: New test.
Added:
trunk/gcc/testsuite/gfortran.dg/namelist_85.f90
Modified:
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (25 preceding siblings ...)
2014-05-26 15:33 ` jvdelisle at gcc dot gnu.org
@ 2014-06-07 17:42 ` jvdelisle at gcc dot gnu.org
2014-06-07 17:43 ` jvdelisle at gcc dot gnu.org
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2014-06-07 17:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
--- Comment #28 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
Fixed on Trunk, closing
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Bug fortran/55117] Programs fails to read namelist (contains derived types objects)
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
` (26 preceding siblings ...)
2014-06-07 17:42 ` jvdelisle at gcc dot gnu.org
@ 2014-06-07 17:43 ` jvdelisle at gcc dot gnu.org
27 siblings, 0 replies; 29+ messages in thread
From: jvdelisle at gcc dot gnu.org @ 2014-06-07 17:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55117
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #29 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
Missed the button.
^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2014-06-07 17:43 UTC | newest]
Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-29 14:31 [Bug fortran/55117] New: Programs fails to read namelist (contains derived types objects) pmarguinaud at hotmail dot com
2012-10-29 14:32 ` [Bug fortran/55117] " pmarguinaud at hotmail dot com
2012-10-29 14:34 ` pmarguinaud at hotmail dot com
2012-10-29 16:03 ` janus at gcc dot gnu.org
2012-10-31 19:53 ` burnus at gcc dot gnu.org
2013-01-04 2:54 ` w6ws at earthlink dot net
2013-01-04 14:33 ` w6ws at earthlink dot net
2013-01-04 16:59 ` kargl at gcc dot gnu.org
2013-01-04 17:22 ` w6ws at earthlink dot net
2013-01-05 19:16 ` jvdelisle at gcc dot gnu.org
2013-01-06 18:51 ` jvdelisle at gcc dot gnu.org
2013-02-22 20:58 ` tilo@tilo-schwarz.de
2013-02-22 22:40 ` tilo@tilo-schwarz.de
2013-02-24 0:28 ` tilo@tilo-schwarz.de
2013-02-25 1:00 ` tilo@tilo-schwarz.de
2013-02-25 1:03 ` tilo@tilo-schwarz.de
2013-02-25 19:02 ` tilo@tilo-schwarz.de
2013-02-25 19:49 ` mikael at gcc dot gnu.org
2013-02-25 20:29 ` tilo@tilo-schwarz.de
2013-03-22 10:10 ` burnus at gcc dot gnu.org
2013-03-30 3:54 ` jvdelisle at gcc dot gnu.org
2013-03-30 5:05 ` jvdelisle at gcc dot gnu.org
2013-04-25 12:42 ` burnus at gcc dot gnu.org
2013-06-16 18:04 ` dominiq at lps dot ens.fr
2014-03-23 23:20 ` jvdelisle at gcc dot gnu.org
2014-05-26 15:20 ` jvdelisle at gcc dot gnu.org
2014-05-26 15:33 ` jvdelisle at gcc dot gnu.org
2014-06-07 17:42 ` jvdelisle at gcc dot gnu.org
2014-06-07 17:43 ` jvdelisle at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).