- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It seems with the newer versions of the compiler (I'm using 19.1.1.217), when you compile a routine with "-assume nounderscore" and that routine has a block that looks like this:
USE IFESTABLISH
IMPLICIT NONE
INTEGER(INT_PTR_KIND()) :: DUMMY2, DUMMY3
PROCEDURE(ESTABLISHQQ_HANDLER) :: FORRTL_TRAP
PROCEDURE(ESTABLISHQQ_HANDLER), POINTER :: DUMMY
RETVAL = ESTABLISHQQ( FORRTL_TRAP, DUMMY2, DUMMY, DUMMY3 )
...it is now reverting to default attributes for the referenced function, and is attempting to resolve "forrtl_trap_" (with the trailing underscore), even though "-assume nounderscore" is specified in the build arguments.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
After further investigation, this appears to be from the new inclusion of the
!DEC$ ATTRIBUTES DEFAULT :: establishqq_handler
line in ifestablish.f90. The same line for "establishqq" was missing for awhile (and looks like it has been finally added), but I question whether the "ATTRIBUTES DEFAULT" should be in there for the handler routine abstract prototype.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, that attribute needs to be there or else you could have set calling conventions different from what ESTABLISHQQ requires. I could argue that for abstract interfaces it should not affect external names, since an abstract interface has no external name. An oversight, in my opinion.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page