- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Compiler Versions: 15.0.2, 17.0.0
OS: RHEL 6.8
Kernel: 2.6.32-642.4.2 64-bit
Compile lines:
Works fine: ifort -O3 -o test1 mopen.F
Gives wierd results: ifort -check all -o test2 mopen.F
The test1 and test2 executables produce two completely different results.
The following code produces this error:
program htemp use ifposix implicit none integer(8) islen character*16 myfile integer(4) lename,ipxflag,ipxmode,ipxfd,ipxerr,ipxlen4 integer(4) :: jstat_h integer(8) :: ipxlen ! open the signal myfile="mopen.F" write(6,*) 'opening ',myfile ipxflag=IPXFCONST('O_RDONLY') ipxmode=0 lename=len_trim(myfile) call PXFOPEN(myfile,lename,ipxflag,ipxmode,ipxfd,ipxerr) write(6,*) 'PXFOPEN returned ',ipxfd if(ipxerr.gt.0) stop call pxfstructcreate('stat',jstat_h,ipxerr) ! create stat structure call pxffstat(ipxfd,jstat_h,ipxerr) call pxfint8get(jstat_h,'st_size',ipxlen,ipxerr) write(6,*) 'pxfint8get returned st_size ',ipxlen call pxfintget(jstat_h,'st_size',ipxlen4,ipxerr) write(6,*) 'pxfintget returned st_size ',ipxlen4 call pxfstat(myfile,lename,jstat_h,ipxerr) call pxfint8get(jstat_h,'st_size',ipxlen,ipxerr) write(6,*) 'pxfint8get returned st_size ',ipxlen call pxfintget(jstat_h,'st_size',ipxlen4,ipxerr) write(6,*) 'pxfintget returned st_size ',ipxlen4 INQUIRE(file=myfile,size=islen) write(6,*) 'INQUIRE returned ',islen call pxfstructfree(jstat_h,ipxerr) contains end program htemp
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can see the problem on Windows, as well (versions 2015, 2016 and 2017). I think that the real problem is that pxfint8get() is returning the INT8 argument with only the lower 32 bits set. If I add
ipxlen=transfer(Z'BAADF00DDAABD00F',ipxlen)
before the call to pxfint8get(), the returned value is -4995072473058769535, or Z'BAADF00D00000581', instead of the correct value, 1409 or Z'0000000000000581'.
In effect, the upper 32 bits are undefined, so the value returned in those bits can be anything, and can be affected by changing compiler options.
Check if your "weird" results, when expressed in hex, are correct in the lower 8 nybbles.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for reporting the error. I have reproduced it and opened a bug report for it. The bug ID is DPD200588804.
Thanks,
Xiaoping Duan
Intel Customer Support

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