- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've encountered a possible bug or issue, which was not a problem in an earlier ifort version (11.1.067), but has surfaced after a software upgrade.
I've been able to reduce the problem to the following, from a rather large and complex software package:
filename: test.forsubroutine test()
do while (.true.)
end do
end subroutine
Compiling this with
ifort test.for /names:as_is
produces the error
test.for(3): error #5082: Syntax error, found '(' when expecting one of: =do while (.true.)---------------^
This does not occur when using /names:lowercase or /names:uppercase.
Is this a known bug or issue, or am I overlooking something vital with regards to FORTRAN here?
1 Solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is indeed a bug, though you're doing something I strongly recommend against. At first, I thought the issue was that you spelled the constant wrong and it should be .TRUE. But that doesn't work either. This issue with DO WHILE has already been reported, the issue is DPD200156830. The workaround is to write:
DO WHILE (.TRUE.)
That said, you are writing in some language other than Fortran when you use /names:as_is. There are better solutions to whatever problem you tried to solve with that option. Usually that would be an interface block for the non-Fortran routine with either BIND(C,NAME=) or a !DEC$ ATTRIBUTES ALIAS.
DO WHILE (.TRUE.)
That said, you are writing in some language other than Fortran when you use /names:as_is. There are better solutions to whatever problem you tried to solve with that option. Usually that would be an interface block for the non-Fortran routine with either BIND(C,NAME=) or a !DEC$ ATTRIBUTES ALIAS.
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is indeed a bug, though you're doing something I strongly recommend against. At first, I thought the issue was that you spelled the constant wrong and it should be .TRUE. But that doesn't work either. This issue with DO WHILE has already been reported, the issue is DPD200156830. The workaround is to write:
DO WHILE (.TRUE.)
That said, you are writing in some language other than Fortran when you use /names:as_is. There are better solutions to whatever problem you tried to solve with that option. Usually that would be an interface block for the non-Fortran routine with either BIND(C,NAME=) or a !DEC$ ATTRIBUTES ALIAS.
DO WHILE (.TRUE.)
That said, you are writing in some language other than Fortran when you use /names:as_is. There are better solutions to whatever problem you tried to solve with that option. Usually that would be an interface block for the non-Fortran routine with either BIND(C,NAME=) or a !DEC$ ATTRIBUTES ALIAS.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This has been fixed for a future release.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for the reply, Steve. It was most helpful.
Petter

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