- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There is a bug in the ifort compiler. Test files can be found at:
http://www.lepp.cornell.edu/~dcs/temp/test2/
The file "doit" runs the ifort compiler. The result is:
lnx209:~/dcs/temp_lib/test2> ifort --version
ifort (IFORT) 11.1 20100806
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
lnx209:~/dcs/temp_lib/test2> ./doit
test.f90(13): error #6460: This is not a field name that is defined in the encompassing structure. [EXP]
ttaylor(1)%term(1)%exp = 0
This error message is bogus. Note that ifort version 9 does not show this bug.
Note: Platform info is:
Linux lnx209.lns.cornell.edu 2.6.9-89.0.20.ELsmp #1 SMP Tue Feb 2 20:15:12 CST 2010 i686 i686 i386 GNU/Linux
http://www.lepp.cornell.edu/~dcs/temp/test2/
The file "doit" runs the ifort compiler. The result is:
lnx209:~/dcs/temp_lib/test2> ifort --version
ifort (IFORT) 11.1 20100806
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
lnx209:~/dcs/temp_lib/test2> ./doit
test.f90(13): error #6460: This is not a field name that is defined in the encompassing structure. [EXP]
ttaylor(1)%term(1)%exp = 0
This error message is bogus. Note that ifort version 9 does not show this bug.
Note: Platform info is:
Linux lnx209.lns.cornell.edu 2.6.9-89.0.20.ELsmp #1 SMP Tue Feb 2 20:15:12 CST 2010 i686 i686 i386 GNU/Linux
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
At least one of your files (a_scratch_size.f90) has a few lines with termination, with most of the file using just termination. This can confuse compilers, especially in Unix/Linux/OSX, where s are not used.
You have a module procedure with interface name 'exp'. You also have a derived type with component name 'exp'. This is OK as far as language rules go, but it is confusing the IFort compiler. A simple work-around is to change one of them. Changing the component to 'exq', for example, allows the compiler to finish and produce an executable.
As you certainly know, the program is not ready to run yet at this testing stage: it crashed at the very first executable statement in test.f90 because pointers are used before being allocated.
You have a module procedure with interface name 'exp'. You also have a derived type with component name 'exp'. This is OK as far as language rules go, but it is confusing the IFort compiler. A simple work-around is to change one of them. Changing the component to 'exq', for example, allows the compiler to finish and produce an executable.
As you certainly know, the program is not ready to run yet at this testing stage: it crashed at the very first executable statement in test.f90 because pointers are used before being allocated.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I ran the files through dos2unix and this did not do anything. I suspect the compiler bug is not due to line endings. In any case, thanks for the diagnosis. And indeed, the program was never meant to run. Just to show the compiler bug.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for the submission, dcs16. I will obtain the files, test some newer internal compilers and post an update when I know more.
Thank you for the quick analysis and work around, mecej4.
Thank you for the quick analysis and work around, mecej4.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page