Anyone hve any idea why the len intrinsic below is returning zero instead of 3 billion for this EM64T app? Setting local ints to 8 bytes via /4I8 does not seem to help. I'm trying to determine if the hidden length argument passed with characters are kind=4 or 8 on EM64T. I've looked in the docs plenty, but am notquite sure if rules about such things apply equally to IA64 and EM64T.
System is Windows XP x64 release version, AMD 64, SDK 3790.
Thanks in advance, Ian.
program main
integer(int_ptr_kind()), parameter :: nclen=3000000000
character(len=nclen) :: cmsg
print*,len(cmsg,8),nclen
print*,len(cmsg,8),nclen
stop
end
end
d: tengine>ifort /4I8 hello.f90
Intel Fortran Compiler for Intel EM64T-based applications, Version 8.1 Build 20050518 Packa
ge ID: w_fce_pc_8.1.019
Copyright (C) 1985-2005 Intel Corporation. All rights reserved.
Microsoft Incremental Linker Version 8.00.40310.39
Copyright (C) Microsoft Corporation. All rights reserved.
Copyright (C) Microsoft Corporation. All rights reserved.
-out:hello.exe
-subsystem:console
-entry:mainCRTStartup
hello.obj
-subsystem:console
-entry:mainCRTStartup
hello.obj
d:
tengine>hello
0 3000000000
0 3000000000
d:
tengine>
連結已複製
3 回應
Submitted. But, would you know if the hidden character length passed by value followinga character variable address usingthe em64T compiler in a call like:
call sub( cvar )
is int_ptr_kind() or integer(4) ? I looked at some assembler, and I think its int_ptr_kind() same as the address, regardless of the compile integer setting.
The docs say IA64 is integer(8), so em64t is?
Thanks, Ian
